U
    _»{j ã                   @   sè  d dl Z d dlmZ d dlZd dlZd dlZd dlmZ	 d dl
mZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+ dd„ Z,G dd„ dej-ƒZ.G dd„ dej/ƒZ0G dd„ dej1ƒZ2dd„ Z-dd„ Z/dd„ Z1dd„ Z3dd„ Z4d d!„ Z5e 6d"d#gd#d#gd#d"gd$d$gd$d%gd%d$gg¡Z7d$d$d$d%d%d%gZ8e 6d#d#gd%d%gd&d%gg¡Z9d$d%d%gZ:e 6d#d$gd'd(gd)d*gd$d$gd+d(gd*d*gd#d#gd d,gd$d#gg	¡Z;d-gd& d.gd&  d/gd&  Z<e 6d)d(gd$d%gd d"gg¡Z=d-d.d/gZ>e 6d$d$d d d d gd$d$d d d d gd d d$d d d gd d d$d d d gd d d d d$d$gd d d d d$d$gd d d d$d d gd d d d$d d gg¡Z?e 6d$d$d$d$d%d%d%d%g¡Z@e 6d$d0d1d d d gd$d2d3d d d gd$d4d5d d d gd$d6d7d d d gd d d d8d6d$gd d d d9d2d$gd d d d6d:d$gd d d d;d$d$gg¡ZAe 6d$d$d$d$d%d%d%d%g¡ZBe C¡ ZDe 6d"d#gd#d#gd#d"gd$d$gd$d%gd%d$gg¡ZEd$d$d$d%d%d%gZFd d$d$gZG�d
d=d>„ZHd?d@„ ZIejJ KdAe-e3e/e4g¡ejJ KdBdCdDdEdFg¡dGdH„ ƒƒZLejJ KdAe-e3e/e4g¡dIdJ„ ƒZMejJ KdAe-e3e/e4g¡dKdL„ ƒZNejJ KdAe-e3e/e4e1e5g¡dMdN„ ƒZOejJ KdAe-e3e/e4e1e5g¡dOdP„ ƒZPejJ KdAe-e3e/e4g¡dQdR„ ƒZQejJ KdAe-e3e/e4g¡dSdT„ ƒZRejJ KdAe-e3e/e4g¡dUdV„ ƒZSejJ KdAe-e3e/e4g¡dWdX„ ƒZTejJ KdAe-e3e/e4g¡dYdZ„ ƒZUejJ KdAe-e3e/e4g¡d[d\„ ƒZVejJ KdAe-e3g¡d]d^„ ƒZWejJ KdAe-e3e1e5g¡d_d`„ ƒZXejJ Kdae-dbe Ydc¡ife3dbe Ydc¡ife1dde Ydc¡ife5dde Ydc¡ifg¡dedf„ ƒZZejJ KdAe-e3e/e4g¡dgdh„ ƒZ[ejJ Kdae-dbd ife3dbd ife1ddd ife5ddd ifg¡didj„ ƒZ\ejJ KdAe-e3g¡dkdl„ ƒZ]ejJ KdAe-e3g¡dmdn„ ƒZ^ejJ KdAe-e3g¡dodp„ ƒZ_ejJ KdAe-e3g¡dqdr„ ƒZ`ejJ KdAe-e3g¡dsdt„ ƒZaejJ KdAe-e3g¡dudv„ ƒZbejJ KdAe-e3g¡dwdx„ ƒZcejJ KdAe-e3g¡dydz„ ƒZdejJ KdAe-e3g¡d{d|„ ƒZeejJ KdAe-e3g¡d}d~„ ƒZfejJ KdAe-e3g¡dd€„ ƒZgejJ KdAe-e3g¡d�d‚„ ƒZhejJ KdAe-e3g¡dƒd„„ ƒZiejJ KdAe-e3g¡d…d†„ ƒZjejJ KdAe-e3g¡d‡dˆ„ ƒZkejJ KdAe-e3g¡d‰dŠ„ ƒZlejJ KdAe-e3g¡d‹dŒ„ ƒZmejJ KdAe-e3g¡d�dŽ„ ƒZnejJ KdAe-e3e1e5g¡d�d�„ ƒZoejJ KdAe-e3g¡d‘d’„ ƒZpejJ KdAe-e3g¡d“d”„ ƒZqejJ KdAe-e3g¡d•d–„ ƒZrejJ KdAe-e3g¡d—d˜„ ƒZsejJ KdAe-e3g¡d™dš„ ƒZtejJ KdAe-e3g¡ejJ KdBdCdDdEdFg¡d›dœ„ ƒƒZuejJ KdAe-e3g¡d�dž„ ƒZvejJ KdAe-e3g¡dŸd „ ƒZwejJ KdAe-e3g¡d¡d¢„ ƒZxejJ KdAe/e4g¡d£d¤„ ƒZyejJ KdAe/e4g¡d¥d¦„ ƒZzejJ KdAe/e4g¡d§d¨„ ƒZ{ejJ KdAe/e4g¡d©dª„ ƒZ|ejJ KdAe/e4g¡d«d¬„ ƒZ}ejJ KdAe/e4g¡d­d®„ ƒZ~ejJ KdAe/e4g¡d¯d°„ ƒZejJ KdAe/e4g¡d±d²„ ƒZ€e+ejJ KdAe/e4g¡d³d´„ ƒƒZ�ejJ KdAe/e4g¡ejJ KdBdCdDdEdFg¡dµd¶„ ƒƒZ‚ejJ KdAe/e4g¡d·d¸„ ƒZƒ�dd¹dº„Z„ejJ KdAe1e5g¡d»d¼„ ƒZ…ejJ KdAe1e5g¡ejJ KdBdCdDdEdFg¡d½d¾„ ƒƒZ†ejJ KdAe1e5g¡d¿dÀ„ ƒZ‡ejJ KdAe1e5g¡dÁdÂ„ ƒZˆejJ KdAe1e5g¡ejJ KdBdCdDdEdFg¡dÃdÄ„ ƒƒZ‰ejJ KdAe1e5g¡dÅdÆ„ ƒZŠejJ KdAe1e5g¡dÇdÈ„ ƒZ‹ejJ KdAe1e5g¡dÉdÊ„ ƒZŒejJ KdAe1e5g¡dËdÌ„ ƒZ�dÍdÎ„ ZŽdÏdÐ„ Z�dÑdÒ„ Z�dÓdÔ„ Z‘dÕdÖ„ Z’ejJ Kd×dØdÙdÚg¡dÛdÜ„ ƒZ“dÝdÞ„ Z”dßdà„ Z•dádâ„ Z–dãdä„ Z—dådæ„ Z˜dçdè„ Z™dédê„ Zšdëdì„ Z›dídî„ Zœdïdð„ Z�dñdò„ Zždódô„ ZŸejJ Kdõdöd÷døg¡dùdú„ ƒZ ejJ Kdûej-ej/g¡düdý„ ƒZ¡dþdÿ„ Z¢�d �d„ Z£ejJ Kdûe-e/g¡�d�d„ ƒZ¤ejJ K�de-e3e/e4e1e5g¡ejJ K�dej¥ej¦f¡�d�d„ ƒƒZ§ejJ K�de-e3e/e4e1e5g¡�d�d	„ ƒZ¨dS (  é    N)ÚMock)ÚdatasetsÚlinear_modelÚmetrics)ÚcloneÚis_classifier)ÚConvergenceWarning)ÚNystroem)Ú	_sgd_fast)Ú_stochastic_gradient)ÚRandomizedSearchCVÚShuffleSplitÚStratifiedShuffleSplit)Úmake_pipeline)ÚLabelEncoderÚMinMaxScalerÚStandardScalerÚscale)ÚOneClassSVM)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚignore_warningsc                 C   s4   d| krd| d< d| kr d | d< d| kr0d| d< d S )NÚrandom_stateé*   ÚtolÚmax_iteré   © ©Úkwargsr   r   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/linear_model/tests/test_sgd.pyÚ_update_kwargs    s    r#   c                       s@   e Zd Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  ZS )	Ú_SparseSGDClassifierc                    s    t  |¡}tƒ j||f|ž|ŽS ©N)ÚspÚ
csr_matrixÚsuperÚfit©ÚselfÚXÚyÚargsÚkw©Ú	__class__r   r"   r)   +   s    
z_SparseSGDClassifier.fitc                    s    t  |¡}tƒ j||f|ž|ŽS r%   )r&   r'   r(   Úpartial_fitr*   r0   r   r"   r2   /   s    
z _SparseSGDClassifier.partial_fitc                    s   t  |¡}tƒ  |¡S r%   )r&   r'   r(   Údecision_function©r+   r,   r0   r   r"   r3   3   s    
z&_SparseSGDClassifier.decision_functionc                    s   t  |¡}tƒ  |¡S r%   )r&   r'   r(   Úpredict_probar4   r0   r   r"   r5   7   s    
z"_SparseSGDClassifier.predict_proba)Ú__name__Ú
__module__Ú__qualname__r)   r2   r3   r5   Ú__classcell__r   r   r0   r"   r$   *   s   r$   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_SparseSGDRegressorc                 O   s"   t  |¡}tjj| ||f|ž|ŽS r%   )r&   r'   r   ÚSGDRegressorr)   r*   r   r   r"   r)   =   s    
z_SparseSGDRegressor.fitc                 O   s"   t  |¡}tjj| ||f|ž|ŽS r%   )r&   r'   r   r;   r2   r*   r   r   r"   r2   A   s    
z_SparseSGDRegressor.partial_fitc                 O   s    t  |¡}tjj| |f|ž|ŽS r%   )r&   r'   r   r;   r3   ©r+   r,   r.   r/   r   r   r"   r3   E   s    
z%_SparseSGDRegressor.decision_functionN©r6   r7   r8   r)   r2   r3   r   r   r   r"   r:   <   s   r:   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_SparseSGDOneClassSVMc                 O   s    t  |¡}tjj| |f|ž|ŽS r%   )r&   r'   r   ÚSGDOneClassSVMr)   r<   r   r   r"   r)   L   s    
z_SparseSGDOneClassSVM.fitc                 O   s    t  |¡}tjj| |f|ž|ŽS r%   )r&   r'   r   r?   r2   r<   r   r   r"   r2   P   s    
z!_SparseSGDOneClassSVM.partial_fitc                 O   s    t  |¡}tjj| |f|ž|ŽS r%   )r&   r'   r   r?   r3   r<   r   r   r"   r3   T   s    
z'_SparseSGDOneClassSVM.decision_functionNr=   r   r   r   r"   r>   K   s   r>   c                  K   s   t | ƒ tjf | ŽS r%   )r#   r   ÚSGDClassifierr    r   r   r"   r@   Y   s    r@   c                  K   s   t | ƒ tjf | ŽS r%   )r#   r   r;   r    r   r   r"   r;   ^   s    r;   c                  K   s   t | ƒ tjf | ŽS r%   )r#   r   r?   r    r   r   r"   r?   c   s    r?   c                  K   s   t | ƒ tf | ŽS r%   )r#   r$   r    r   r   r"   ÚSparseSGDClassifierh   s    rA   c                  K   s   t | ƒ tf | ŽS r%   )r#   r:   r    r   r   r"   ÚSparseSGDRegressorm   s    rB   c                  K   s   t | ƒ tf | ŽS r%   )r#   r>   r    r   r   r"   ÚSparseSGDOneClassSVMr   s    rC   éþÿÿÿéÿÿÿÿé   é   é   g      è¿ç      à?g      ø¿ç      ø?g      è?ç      à¿ÚoneÚtwoÚthreeçÍÌÌÌÌÌì?çš™™™™™é?gáz®Gáê?g\�Âõ(\ï?ç¸…ëQ¸î?g)\�Âõ(ì?g…ëQ¸í?ç®Gáz®ï?g{®Gázì?gHáz®Gé?gffffffî?gÃõ(\�Âí?ç        c                 C   sð   |d krt  |jd ¡}n|}t  |jd ¡}|}	d}
d}| ttfkrJd}t|ƒD ]”\}}t  ||¡}||	7 }|||  }|d||  9 }||| |  7 }|	||  | 7 }	||9 }||7 }||d  }|
|9 }
|
|	7 }
|
|d  }
qR||
fS )NrF   rS   ç      ð?ç{®Gáz„?)ÚnpÚzerosÚshaperA   rB   Ú	enumerateÚdot)Úklassr,   r-   ÚetaÚalphaÚweight_initÚintercept_initÚweightsÚaverage_weightsÚ	interceptÚaverage_interceptÚdecayÚiÚentryÚpÚgradientr   r   r"   Úasgd½   s.    ri   c                 C   sÀ   | ddd|d�}|  ||¡ | ddd|d�}|j |||j ¡ |j ¡ d� | dddd|d�}|  ||¡ |j|jksxt‚t|j|jƒ |jdd� |  ||¡ |j|jks®t‚t|j|jƒ d S )	NrU   F)r]   Úeta0ÚshuffleÚlearning_rateçü©ñÒMbP?©Ú	coef_initr_   T)r]   rj   rk   Ú
warm_startrl   ©r]   )r)   Úcoef_ÚcopyÚ
intercept_Út_ÚAssertionErrorr   Ú
set_params)r[   r,   ÚYÚlrÚclfÚclf2Úclf3r   r   r"   Ú_test_warm_startß   s$        ÿr}   r[   ry   ÚconstantÚoptimalZ
invscalingÚadaptivec                 C   s   t | tt|ƒ d S r%   )r}   r,   rx   ©r[   ry   r   r   r"   Útest_warm_start÷   s    r‚   c              	   C   sd   | ddd�}|  tt¡ t t¡d d …tjf }tj||f }t t	¡� |  t|¡ W 5 Q R X d S )NrU   F©r]   rk   )
r)   r,   rx   rV   ÚarrayZnewaxisZc_ÚpytestÚraisesÚ
ValueError)r[   rz   ÚY_r   r   r"   Útest_input_formatÿ   s    r‰   c                 C   sV   | ddd�}t |ƒ}|jdd� | tt¡ | ddd�}| tt¡ t|j|jƒ d S )NrU   Úl1)r]   ÚpenaltyÚl2)r‹   )r   rw   r)   r,   rx   r   rr   ©r[   rz   r{   r   r   r"   Ú
test_clone  s    rŽ   c                 C   sž   | ddd�}|  tt¡ t|dƒs&t‚t|dƒs4t‚t|dƒsBt‚t|dƒsPt‚| ƒ }|  tt¡ t|dƒrpt‚t|dƒr~t‚t|dƒrŒt‚t|dƒršt‚d S )NTrU   )Úaveragerj   Z_average_coefZ_average_interceptZ_standard_interceptZ_standard_coef)r)   r,   rx   Úhasattrrv   ©r[   rz   r   r   r"   Útest_plain_has_no_average_attr  s    r’   c                 C   sÀ   | dd�}| ƒ }t dƒD ]R}t|ƒrR|jttt t¡d� |jttt t¡d� q| tt¡ | tt¡ qt|j|jdd� | t	t
ttfkr¢t|j|jdd� n| ttfkr¼t|j|jƒ d S )NiX  ©r�   éd   ©Úclassesé   ©Údecimal)Úranger   r2   r,   rx   rV   Úuniquer   rr   r@   rA   r;   rB   r   rt   r?   rC   r   Úoffset_)r[   Úclf1r{   Ú_r   r   r"   Ú%test_late_onset_averaging_not_reached:  s    
rŸ   c              	   C   s¼   d}d}t  t¡}d||dk< d||dk< | ddd	||dd
d�}| ddd	||dd
d�}| t|¡ | t|¡ t| t||||j ¡ |jd�\}}t	|j ¡ | ¡ dd� t
|j|dd� d S )Nrm   ç-Cëâ6?ç      ð¿rF   rT   rG   é   r~   Úsquared_errorF)r�   rl   Úlossrj   r]   r   rk   r   )r^   r_   r—   r˜   )rV   r„   rx   r)   r,   ri   rr   Úravelrt   r   r   )r[   rj   r]   ZY_encoder�   r{   ra   rc   r   r   r"   Ú!test_late_onset_averaging_reachedW  sH    
ù	ù
ù

r¦   c                 C   sV   t jt jdk }t jt jdk }dD ],}d}| |d|d� ||¡}|j|k s$t‚q$d S )Nr   ©TFéè  rm   )Úearly_stoppingr   r   )ÚirisÚdataÚtargetr)   Ún_iter_rv   )r[   r,   rx   r©   r   rz   r   r   r"   Útest_early_stopping…  s     ÿr®   c                 C   sT   | ddddd�}|  tjtj¡ | ddddd�}|  tjtj¡ |j|jksPt‚d S )Nr€   rU   rm   r”   )rl   rj   r   r   r~   )r)   rª   r«   r¬   r­   rv   )r[   r�   r{   r   r   r"   Ú"test_adaptive_longer_than_constant“  s
    r¯   c              
   C   sê   t jt j }}d}d}d}d}| dtj |¡|ddd ||d�}| ||¡ |j|ksXt‚| dtj |¡ddd ||d	�}t	|ƒrŒt
||d
�}	nt||d
�}	t|	 ||¡ƒ\}
}t |
¡}
| ||
 ||
 ¡ |j|ksØt‚t|j|jƒ d S )Nçš™™™™™Ù?r   Fé
   Tr~   rU   )r©   r   Úvalidation_fractionrl   rj   r   r   rk   )r©   r   rl   rj   r   r   rk   )Z	test_sizer   )rª   r«   r¬   rV   ÚrandomÚRandomStater)   r­   rv   r   r   r   ÚnextÚsplitÚsortr   rr   )r[   r,   rx   r²   Úseedrk   r   r�   r{   ZcvZ	idx_trainZidx_valr   r   r"   Ú)test_validation_set_not_used_for_trainingž  sD    
ø

ù

r¹   c                    sB   t jt j ‰ ‰dD ]*‰‡ ‡‡‡fdd„dD ƒ}t|t|ƒƒ qd S )Nr§   c                    s&   g | ]}ˆˆ|d dd�  ˆ ˆ¡j‘qS )r    r¨   )r©   Ún_iter_no_changer   r   )r)   r­   )Ú.0rº   ©r,   rx   r©   r[   r   r"   Ú
<listcomp>Ñ  s   	øü úz)test_n_iter_no_change.<locals>.<listcomp>)rG   rH   r±   )rª   r«   r¬   r   Úsorted)r[   Zn_iter_listr   r¼   r"   Útest_n_iter_no_changeÊ  s    	÷r¿   c              	   C   s2   | ddd�}t  t¡� | tt¡ W 5 Q R X d S )NTrR   )r©   r²   )r…   r†   r‡   r)   ÚX3ÚY3r‘   r   r   r"   Ú)test_not_enough_sample_for_early_stoppingß  s    rÂ   c              	   C   s>   dD ]4}| ddd|ddd�}|  tt¡ t| t¡tƒ qd S )N)ÚhingeÚsquared_hingeÚlog_lossÚmodified_huberrŒ   rU   Tr±   )r‹   r]   Úfit_interceptr¤   r   rk   )r)   r,   rx   r   ÚpredictÚTÚtrue_result)r[   r¤   rz   r   r   r"   Útest_sgd_clfí  s    úrË   c              	   C   s6   t jtdd�� | ƒ jttt d¡d� W 5 Q R X dS )z1Check that the shape of `coef_init` is validated.z)Provided coef_init does not match dataset©Úmatch©rH   ©ro   N)r…   r†   r‡   r)   r,   rx   rV   rW   ©r[   r   r   r"   Útest_provide_coefÿ  s    rÑ   zklass, fit_paramsr_   rÎ   Úoffset_initc              	   C   s4   | ƒ }t jtdd�� |jttf|Ž W 5 Q R X dS )z:Check that `intercept_init` or `offset_init` is validated.zdoes not match datasetrÌ   N©r…   r†   r‡   r)   r,   rx   )r[   Ú
fit_paramsZsgd_estimatorr   r   r"   Útest_set_intercept_offset  s    rÕ   c              	   C   s4   d}t jt|d�� | dd� tt¡ W 5 Q R X dS )zSCheck that we raise an error for `early_stopping` used with
    `partial_fit`.
    z/early_stopping should be False with partial_fitrÌ   T)r©   N)r…   r†   r‡   r2   r,   rx   )r[   Úerr_msgr   r   r"   Ú(test_sgd_early_stopping_with_partial_fit  s    r×   c                 C   s   | ƒ j ttf|Ž dS )zdCheck that we can pass a scaler with binary classification to
    `intercept_init` or `offset_init`.N)r)   ÚX5ÚY5)r[   rÔ   r   r   r"   Ú test_set_intercept_offset_binary$  s    rÚ   c              
   C   s¶   d}d}d}d}t j d¡}|j||fd�}|j|d�}| dd||d	d
d	dd�}t  ||¡}	t  |	¡}	| ||	¡ t| ||	||ƒ\}
}|
 d
d¡}
t	|j
|
dd� t|j|dd� d S )Nçš™™™™™¹?ç       @é   r±   r   ©Úsizer£   r~   TrF   F©r¤   rl   rj   r]   rÇ   r   r�   rk   rE   é   r˜   )rV   r³   r´   ÚnormalrZ   Úsignr)   ri   Úreshaper   rr   r   rt   )r[   r\   r]   Ú	n_samplesÚ
n_featuresÚrngr,   Úwrz   r-   ra   rc   r   r   r"   Ú&test_average_binary_computed_correctly3  s0    ø
ré   c                 C   sH   | ƒ   tt¡}| ƒ j tt|jd� | ƒ   tt¡}| ƒ j tt|jd� d S )N©r_   )r)   rØ   rÙ   rt   r,   rx   r‘   r   r   r"   Útest_set_intercept_to_interceptU  s    rë   c              	   C   s8   | ddd�}t  t¡� | tt d¡¡ W 5 Q R X d S )NrU   rÝ   ©r]   r   é	   )r…   r†   r‡   r)   ÚX2rV   Úonesr‘   r   r   r"   Útest_sgd_at_least_two_labels_  s    rð   c              	   C   s>   d}t jt|d��" | dd�jttt t¡d� W 5 Q R X d S )Na`  class_weight 'balanced' is not supported for partial_fit\. In order to use 'balanced' weights, use compute_class_weight\('balanced', classes=classes, y=y\). In place of y you can use a large enough sample of the full training set target to properly estimate the class frequency distributions\. Pass the resulting weights as the class_weight parameter\.rÌ   Úbalanced)Úclass_weightr•   )r…   r†   r‡   r2   r,   rx   rV   r›   )r[   Úregexr   r   r"   Ú&test_partial_fit_weight_class_balancedg  s    ÿ
rô   c                 C   sf   | ddd�  tt¡}|jjdks$t‚|jjdks4t‚| ddgg¡jdksNt‚| t	¡}t
|tƒ d S )NrU   rÝ   rì   ©rH   rG   rÎ   r   ©rF   rH   ©r)   rî   ÚY2rr   rX   rv   rt   r3   rÈ   ÚT2r   Útrue_result2©r[   rz   Úpredr   r   r"   Útest_sgd_multiclassx  s    
rý   c              
   C   s®   d}d}| dd||ddddd�}t  t¡}| t|¡ t  |¡}t|ƒD ]`\}}t  |jd	 ¡}d
|||k< t	| t|||ƒ\}	}
t
|	|j| dd� t|
|j| dd� qHd S )Nrm   rU   r£   r~   TrF   Frà   r   rE   r—   r˜   )rV   r„   rø   r)   rî   r›   rY   rï   rX   ri   r   rr   r   rt   )r[   r\   r]   rz   Znp_Y2r–   re   ÚclZy_iÚaverage_coefrc   r   r   r"   Útest_sgd_multiclass_averageƒ  s*    ø

r   c                 C   sb   | ddd�}|j ttt d¡t d¡d� |jjdks:t‚|jjsJtdƒ‚| 	t
¡}t|tƒ d S )NrU   rÝ   rì   rõ   rH   rn   rÎ   )r)   rî   rø   rV   rW   rr   rX   rv   rt   rÈ   rù   r   rú   rû   r   r   r"   Ú"test_sgd_multiclass_with_init_coefŸ  s    
r  c                 C   sh   | dddd�  tt¡}|jjdks&t‚|jjdks6t‚| ddgg¡jdksPt‚| t	¡}t
|tƒ d S )	NrU   rÝ   rG   )r]   r   Ún_jobsrõ   rÎ   r   rö   r÷   rû   r   r   r"   Útest_sgd_multiclass_njobsª  s    
r  c              	   C   s˜   | ƒ }t  t¡� |jttt d¡d� W 5 Q R X | ƒ jttt d¡d�}| ƒ }t  t¡� |jttt d¡d� W 5 Q R X | ƒ jttt d¡d�}d S )N)rG   rG   rÏ   rõ   ©rF   rê   rÎ   )r…   r†   r‡   r)   rî   rø   rV   rW   r‘   r   r   r"   Útest_set_coef_multiclassµ  s      r  c              
   C   s¨   t jjD ]š}t|d�}|dkr<t|dƒs,t‚t|dƒs¢t‚qd |¡}t|dƒrTt‚t|dƒrbt‚tjt|d�� |j	 W 5 Q R X tjt|d�� |j
 W 5 Q R X qd S )N)r¤   ©rÅ   rÆ   r5   Úpredict_log_probaz5probability estimates are not available for loss={!r}rÌ   )r   r@   Úloss_functionsr�   rv   Úformatr…   r†   ÚAttributeErrorr5   r  )r[   r¤   rz   Úmessager   r   r"   Ú$test_sgd_predict_proba_method_accessÊ  s    
ÿr  c                 C   sÞ  t dddd d� tt¡}t|dƒr&t‚t|dƒr4t‚dD ]¦}| |ddd�}| tt¡ | d	d
gg¡}|d dksvt‚| ddgg¡}|d dk s–t‚| d	d
gg¡}|d |d ksºt‚| ddgg¡}|d |d k s8t‚q8| dddd� tt	¡}| 
ddgddgg¡}| ddgddgg¡}ttj|dd�tj|dd�ƒ t|d  ¡ dƒ t |d dk¡�sjt‚| ddgg¡}| 
ddgg¡}tt |d ¡t |d ¡ƒ | d	d
gg¡}| d	d
gg¡}tt |¡|ƒ | ddgg¡}| ddgg¡}tt |¡|ƒ | dddd�}| tt	¡ | 
d	d
gg¡}| d	d
gg¡}| tk�rptj|dd�tj|dd�k�s’t‚n"tj|dd�tj|dd�k�s’t‚tjdd�}| 
|g¡}t |dk ¡�rÚ| |g¡}t|d dgd	 ƒ d S )NrÃ   rU   r±   )r¤   r]   r   r   r5   r  r  )r¤   r]   r   rH   rG   ©r   rF   rI   rE   )r   r   rÅ   rÛ   çš™™™™™¹¿ç333333Ó?çš™™™™™É?rF   )Zaxisr   rÆ   gUUUUUUÕ?)r@   r)   r,   rx   r�   rv   r5   r  rî   rø   r3   r   rV   Zargmaxr   ÚsumÚallZargsortr   ÚlogrA   ZargminÚmean)r[   rz   r¤   rg   ÚdZlpÚxr   r   r"   Útest_sgd_probaâ  sR    
$"r  c                 C   sö   t tƒ}tj d¡}t |¡}| |¡ t|d d …f }t| }| ddddd dd�}| ||¡ t	|j
ddd	…f t d
¡ƒ | |¡}t	||ƒ | ¡  t |j
¡sªt‚| |¡}t	||ƒ t t |¡¡}t |j
¡sÞt‚| |¡}t	||ƒ d S )Né   rŠ   r  FéÐ  )r‹   r]   rÇ   r   r   rk   r   rF   rE   )é   )ÚlenÚX4rV   r³   r´   Úarangerk   ÚY4r)   r   rr   rW   rÈ   Zsparsifyr&   Úissparserv   ÚpickleÚloadsÚdumps)r[   Únrç   Úidxr,   rx   rz   rü   r   r   r"   Útest_sgd_l1'  s4    

ú




r%  c                 C   s²   t  ddgddgddgddgddgg¡}dddddg}| dd	d
d d�}| ||¡ t| ddgg¡t  dg¡ƒ | dd	d
ddid�}| ||¡ t| ddgg¡t  dg¡ƒ d S )Nr¡   r   çš™™™™™é¿rT   rS   rF   rE   rÛ   r¨   F)r]   r   rÇ   rò   r  rm   ©rV   r„   r)   r   rÈ   ©r[   r,   r-   rz   r   r   r"   Útest_class_weightsL  s    (r)  c                 C   s�   ddgddgddgddgg}ddddg}| ddd d�}|  ||¡ ddgddgg}ddg}| dddddœd�}|  ||¡ t|j|jdd	� d S )
NrF   r   rÛ   r¨   ©r]   r   rò   rI   r  rG   r˜   )r)   r   rr   )r[   r,   r-   rz   Zclf_weightedr   r   r"   Útest_equal_class_weight_  s    r+  c              	   C   s8   | ddddid�}t  t¡� | tt¡ W 5 Q R X d S )NrÛ   r¨   r   rI   r*  rÓ   r‘   r   r   r"   Útest_wrong_class_weight_labelp  s    r,  c                 C   s¬   dddœ}t j d¡}| tjd ¡}t  |¡}|tdk  |d 9  < |tdk  |d 9  < | dd|d	�}| ddd
�}|jtt|d� |jtt|d� t	|j
|j
ƒ d S )Ng333333ã?r  )rF   rG   r   rF   rG   rÛ   rÝ   r*  rì   ©Úsample_weight)rV   r³   r´   Zrandom_sampler  rX   rs   r)   r  r   rr   )r[   Zclass_weightsrç   Zsample_weightsZmultiplied_togetherr�   r{   r   r   r"   Útest_weights_multipliedx  s    

r/  c                 C   s   t jt j }}t|ƒ}t |jd ¡}tj d¡}| 	|¡ || }|| }| ddd dd� 
||¡}tj|| |¡dd�}t|d	d
d� | ddddd� 
||¡}tj|| |¡dd�}t|d	d
d� t|j|jdƒ ||dkd d …f }||dk }	t |g|gd  ¡}
t |g|	gd  ¡}| dd dd�}| 
|
|¡ | |¡}tj||dd�d	k �s^t‚| dddd�}| 
|
|¡ | |¡}tj||dd�d	k�sœt‚d S )Nr   é   r    r¨   F)r]   r   rò   rk   Zweightedr“   rQ   rF   r˜   rñ   r±   )r   rò   rk   )rª   r«   r¬   r   rV   r  rX   r³   r´   rk   r)   r   Zf1_scorerÈ   r   r   rr   ZvstackÚconcatenaterv   )r[   r,   r-   r$  rç   rz   Úf1Zclf_balancedZX_0Zy_0ZX_imbalancedZy_imbalancedÚy_predr   r   r"   Útest_balanced_weight‹  sD    
   ÿ þ

r4  c                 C   s°   t  ddgddgddgddgddgg¡}dddddg}| dd	d
d�}| ||¡ t| ddgg¡t  dg¡ƒ |j||dgd dgd  d� t| ddgg¡t  dg¡ƒ d S )Nr¡   r   r&  rT   rS   rF   rE   rÛ   r¨   F©r]   r   rÇ   r  rm   rH   rG   r-  r'  r(  r   r   r"   Útest_sample_weightsº  s    ( r6  c              	   C   sf   | t tfkr| dddd�}n| ttfkr6| dddd�}t t¡� |jtt	t
 d¡d� W 5 Q R X d S )NrÛ   r¨   Fr5  )Únur   rÇ   r¢   r-  )r@   rA   r?   rC   r…   r†   r‡   r)   r,   rx   rV   r  r‘   r   r   r"   Útest_wrong_sample_weightsÌ  s    r8  c              	   C   s0   | dd�}t  t¡� | tt¡ W 5 Q R X d S )NrU   rq   )r…   r†   r‡   r2   rÀ   rÁ   r‘   r   r   r"   Útest_partial_fit_exceptionÚ  s    
r9  c                 C   sÞ   t jd d }| dd�}t t¡}|jt d |… td |… |d� |jjdt jd fks\t‚|jjdkslt‚| 	ddgg¡jdks†t‚t
|jjƒ}| t |d … t|d … ¡ t
|jjƒ}|sÆt|ƒ‚| t¡}t|tƒ d S )Nr   rH   rU   rq   r•   rF   r  )r,   rX   rV   r›   rx   r2   rr   rv   rt   r3   Úidr«   rÈ   rÉ   r   rÊ   )r[   Úthirdrz   r–   Úid1Úid2r3  r   r   r"   Útest_partial_fit_binaryâ  s    

 
r>  c                 C   sÊ   t jd d }| dd�}t t¡}|jt d |… td |… |d� |jjdt jd fks\t‚|jjdkslt‚| 	ddgg¡jdks†t‚t
|jjƒ}| t |d … t|d … ¡ t
|jjƒ}|sÆt|ƒ‚d S )	Nr   rH   rU   rq   r•   rF   rÎ   rö   )rî   rX   rV   r›   rø   r2   rr   rv   rt   r3   r:  r«   )r[   r;  rz   r–   r<  r=  r   r   r"   Útest_partial_fit_multiclass÷  s    

 r?  c                 C   s¾   t jd d }| dt jd d�}t t¡}|jt d |… td |… |d� |jjdt jd fksdt‚|jjdkstt‚| t |d … t|d … ¡ |jjdt jd fksªt‚|jjdksºt‚d S )Nr   rH   rU   )r]   r�   r•   rF   rÎ   )	rî   rX   rV   r›   rø   r2   rr   rv   rt   )r[   r;  rz   r–   r   r   r"   Ú#test_partial_fit_multiclass_average	  s    
 r@  c                 C   s"   | ƒ }|  tt¡ | tt¡ d S r%   )r)   rî   rø   r2   r‘   r   r   r"   Útest_fit_then_partial_fit  s    rA  c                 C   s°   t ttftttffD ]–\}}}| ddd|dd�}| ||¡ | |¡}|j}t	 
|¡}| dd|dd�}tdƒD ]}	|j|||d� qn| |¡}
|j|ksœt‚t||
dd� qd S )NrU   rG   F)r]   rj   r   rl   rk   ©r]   rj   rl   rk   r•   r˜   )r,   rx   rÉ   rî   rø   rù   r)   r3   ru   rV   r›   rš   r2   rv   r   )r[   ry   ZX_rˆ   ZT_rz   r3  Útr–   re   Úy_pred2r   r   r"   Ú"test_partial_fit_equal_fit_classif"  s    


rE  c                 C   sô   t j d¡}| dddd|d�}| tt¡ dt  | t¡tk¡ksFt‚| dddd|d�}| tt¡ dt  | t¡tk¡ks€t‚| dd	|d
�}| tt¡ dt  | t¡tk¡ks¶t‚| dddd|d�}| tt¡ dt  | t¡tk¡ksðt‚d S )NrF   rU   r~   rÛ   Úepsilon_insensitive)r]   rl   rj   r¤   r   rT   Zsquared_epsilon_insensitiveÚhuber)r]   r¤   r   r£   )	rV   r³   r´   r)   r,   rx   r  rÈ   rv   )r[   r   rz   r   r   r"   Útest_regression_losses5  s>    ûûûrH  c                 C   s   t | ttdƒ d S )Nr   )r}   rî   rø   rÐ   r   r   r"   Útest_warm_start_multiclass[  s    rI  c                 C   s\   | ddd�}|  tt¡ t|dƒs&t‚dd„ tƒ  t¡D ƒ}|  td d …d d…f |¡ d S )NrU   Frƒ   rr   c                 S   s   g | ]}d dg| ‘qS )ZhamZspamr   )r»   re   r   r   r"   r½   h  s     z%test_multiple_fit.<locals>.<listcomp>rE   )r)   r,   rx   r�   rv   r   Úfit_transform)r[   rz   r-   r   r   r"   Útest_multiple_fit`  s
    rK  c                 C   sN   | dddd�}|  ddgddgddggdddg¡ |jd |jd ksJt‚d S )NrÛ   rG   Fr5  r   rF   )r)   rr   rv   r‘   r   r   r"   Útest_sgd_regp  s    $rL  c              
   C   s    d}d}d}d}t j d¡}|j||fd�}|j|d�}t  ||¡}| dd||d	d
d	dd�}	|	 ||¡ t| ||||ƒ\}
}t|	j|
dd� t	|	j
|dd� d S )Nrm   rU   rÝ   r±   r   rÞ   r£   r~   TrF   Frà   r—   r˜   )rV   r³   r´   râ   rZ   r)   ri   r   rr   r   rt   ©r[   r\   r]   rå   ræ   rç   r,   rè   r-   rz   ra   rc   r   r   r"   Ú$test_sgd_averaged_computed_correctlyx  s,    ørN  c              
   C   s   d}d}d}d}t j d¡}|j||fd�}|j|d�}t  ||¡}| dd||d	d
d	dd�}	|	 |d t|d ƒ… d d … |d t|d ƒ… ¡ |	 |t|d ƒd … d d … |t|d ƒd … ¡ t| ||||ƒ\}
}t|	j	|
dd� t
|	jd |dd� d S )Nrm   rU   rÝ   r±   r   rÞ   r£   r~   TrF   Frà   rG   r—   r˜   )rV   r³   r´   râ   rZ   r2   Úintri   r   rr   r   rt   rM  r   r   r"   Útest_sgd_averaged_partial_fit™  s.    ø44rP  c              
   C   sÊ   d}d}| dd||ddddd�}t jd	 }| td t|d
 ƒ… d d … t d t|d
 ƒ… ¡ | tt|d
 ƒd … d d … t t|d
 ƒd … ¡ t| tt ||ƒ\}}t|j|dd� t|j	|dd� d S )Nrm   rU   r£   r~   TrF   Frà   r   rG   r—   r˜   )
rÁ   rX   r2   rÀ   rO  ri   r   rr   r   rt   )r[   r\   r]   rz   rå   ra   rc   r   r   r"   Útest_average_sparseº  s$    ø
44rQ  c           	      C   sÂ   d\}}d}t j d¡}t  |||¡ |d¡}d| ¡  }| dddd	d
�}| ||¡ | ||¡}|dksnt‚d| ¡  | 	|d¡ ¡  }| dddd	d
�}| ||¡ | ||¡}|dks¾t‚d S )N©éûÿÿÿr   r”   r   rF   rI   r£   rÛ   rÝ   F)r¤   r]   r   rÇ   rR   ©
rV   r³   r´   Zlinspacerä   r¥   r)   Úscorerv   Úrandn©	r[   ZxminZxmaxrå   rç   r,   r-   rz   rU  r   r   r"   Útest_sgd_least_squares_fitÕ  s    rX  c           	      C   sÆ   d\}}d}t j d¡}t  |||¡ |d¡}d| ¡  }| dddd	d
d�}| ||¡ | ||¡}|dkspt‚d| ¡  | 	|d¡ ¡  }| dddd	d
d�}| ||¡ | ||¡}|dksÂt‚d S )NrR  r”   r   rF   rI   rF  rU   rÛ   rÝ   F©r¤   Úepsilonr]   r   rÇ   rR   rT  rW  r   r   r"   Útest_sgd_epsilon_insensitiveí  s4    ûûr[  c           	      C   sÆ   d\}}d}t j d¡}t  |||¡ |d¡}d| ¡  }| ddddd	d
�}| ||¡ | ||¡}|dkspt‚d| ¡  | 	|d¡ ¡  }| ddddd	d
�}| ||¡ | ||¡}|dksÂt‚d S )NrR  r”   r   rF   rI   rG  rÛ   rÝ   FrY  rR   rT  rW  r   r   r"   Útest_sgd_huber_fit  s    r\  c              	   C   s¨   d\}}t j d¡}| ||¡}| |¡}t  ||¡}dD ]h}dD ]^}tj||dd�}	|	 ||¡ | dd||dd	�}
|
 ||¡ d
||f }t|	j	|
j	d|d� qBq:d S )N)r¨   r   r   )rU   rm   )rI   rP   rT   F)r]   Úl1_ratiorÇ   Ú
elasticneté2   )r‹   r   r]   r]  rÇ   zNcd and sgd did not converge to comparable results for alpha=%f and l1_ratio=%frG   )r™   rÖ   )
rV   r³   r´   rV  rZ   r   Z
ElasticNetr)   r   rr   )r[   rå   ræ   rç   r,   Zground_truth_coefr-   r]   r]  ÚcdZsgdrÖ   r   r   r"   Útest_elasticnet_convergence)  s4    
  ÿûÿÿra  c                 C   sº   t jd d }| dd�}| t d |… td |… ¡ |jjt jd fksLt‚|jjdks\t‚| ddgg¡jdksvt‚t|jj	ƒ}| t |d … t|d … ¡ t|jj	ƒ}|s¶t|ƒ‚d S )Nr   rH   rU   rq   rF   r  )
r,   rX   r2   rx   rr   rv   rt   rÈ   r:  r«   )r[   r;  rz   r<  r=  r   r   r"   Útest_partial_fitK  s    
rb  c                 C   s‚   | ddd|dd�}|  tt¡ | t¡}|j}| dd|dd�}tdƒD ]}| tt¡ qF| t¡}|j|kspt‚t	||dd� d S )NrU   rG   F)r]   r   rj   rl   rk   rB  r˜   )
r)   r,   rx   rÈ   rÉ   ru   rš   r2   rv   r   )r[   ry   rz   r3  rC  re   rD  r   r   r"   Útest_partial_fit_equal_fit]  s    

rc  c                 C   s0   | dd�}|j dd� |jd d dks,t‚d S )NrO   )rZ  rÛ   rG  rF   )rw   r  rv   r‘   r   r   r"   Útest_loss_function_epsilonn  s    
rd  c                 C   s  |d krt  |jd ¡}n|}t  |jd ¡}|}d| }	d}
d}| tkrNd}t|ƒD ]¨\}}t  ||¡}||	7 }|dkr€d}nd}|tdd|| d  ƒ9 }||| |  7 }|	|||   | 7 }	||9 }||7 }||d  }|
|9 }
|
|	7 }
|
|d  }
qV|d|
 fS )NrF   rS   rT   rU   rE   r   rG   )rV   rW   rX   rC   rY   rZ   Úmax)r[   r,   r\   r7  ro   rÒ   Úcoefrÿ   Úoffsetrb   rc   rd   re   rf   rg   rh   r   r   r"   Úasgd_oneclassz  s4    rh  c                 C   s¸   | ddd|d�}|  |¡ | ddd|d�}|j ||j ¡ |j ¡ d� | dddd|d�}|  |¡ |j|jksrt‚t|j|jƒ |jdd	� |  |¡ |j|jks¦t‚t|j|jƒ d S )
NrI   rU   F)r7  rj   rk   rl   rÛ   ©ro   rÒ   T)r7  rj   rk   rp   rl   ©r7  )r)   rr   rs   rœ   ru   rv   r   rw   )r[   r,   ry   rz   r{   r|   r   r   r"   Ú_test_warm_start_oneclass   s    


rk  c                 C   s   t | t|ƒ d S r%   )rk  r,   r�   r   r   r"   Útest_warm_start_oneclass·  s    rl  c                 C   sN   | dd�}t |ƒ}|jdd� | t¡ | dd�}| t¡ t|j|jƒ d S )NrI   rj  rÛ   )r   rw   r)   r,   r   rr   r�   r   r   r"   Útest_clone_oneclass½  s    



rm  c              	   C   sÂ   t jd d }| dd�}| t d |… ¡ |jjt jd fksBt‚|jjdksRt‚| ddgg¡jdkslt‚|j}| t |d … ¡ |j|ks’t‚t t	¡� | t d d …df ¡ W 5 Q R X d S )Nr   rH   rÛ   rj  rF   r  )
r,   rX   r2   rr   rv   rœ   rÈ   r…   r†   r‡   )r[   r;  rz   Zprevious_coefsr   r   r"   Útest_partial_fit_oneclassË  s    
rn  c           	      C   s    | ddd|dd�}|  t¡ | t¡}|j}|j}|j}| ddd|dd�}tdƒD ]}| t¡ qR| t¡}|j|kszt	‚t
||ƒ t
|j|ƒ t
|j|ƒ d S )Nçš™™™™™©?rG   rU   F)r7  r   rj   rl   rk   rF   )r7  rj   r   rl   rk   )r)   r,   r3   rÉ   ru   rr   rœ   rš   r2   rv   r   )	r[   ry   rz   Zy_scoresrC  rf  rg  rž   Z	y_scores2r   r   r"   Ú#test_partial_fit_equal_fit_oneclassß  s    



rp  c                 C   sˆ   d}d}| dd||ddd�}| dd||d	dd�}|  t¡ |  t¡ t| t|||j ¡ |jd
�\}}t|j ¡ | ¡ ƒ t|j|ƒ d S )Nrm   ro  r¢   r~   rG   F)r�   rl   rj   r7  r   rk   r   rF   ri  )r)   r,   rh  rr   r¥   rœ   r   )r[   rj   r7  r�   r{   rÿ   Úaverage_offsetr   r   r"   Ú*test_late_onset_averaging_reached_oneclassô  s<         ÿ     ÿ

     ÿ
rr  c           
   	   C   sz   d}d}d}d}t j d¡}|j||fd�}| d||dd	dd
d�}| |¡ t| |||ƒ\}}	t|j|ƒ t|j|	ƒ d S )Nrm   ro  rÝ   r±   r   rÞ   r~   TrF   F©rl   rj   r7  rÇ   r   r�   rk   )	rV   r³   r´   râ   r)   rh  r   rr   rœ   ©
r[   r\   r7  rå   ræ   rç   r,   rz   rÿ   rq  r   r   r"   Ú-test_sgd_averaged_computed_correctly_oneclass  s&    ù

ru  c           
   	   C   s´   d}d}d}d}t j d¡}|j||fd�}| d||dd	dd
d�}| |d t|d ƒ… d d … ¡ | |t|d ƒd … d d … ¡ t| |||ƒ\}}	t|j|ƒ t|j	|	ƒ d S )Nrm   ro  rÝ   r±   r   rÞ   r~   TrF   Frs  rG   )
rV   r³   r´   râ   r2   rO  rh  r   rr   rœ   rt  r   r   r"   Ú&test_sgd_averaged_partial_fit_oneclass+  s(    ù
""rv  c              	   C   sŠ   d}d}| d||ddddd�}t jd }| t d t|d	 ƒ… ¡ | t t|d	 ƒd … ¡ t| t ||ƒ\}}t|j|ƒ t|j|ƒ d S )
Nrm   rU   r~   TrF   Frs  r   rG   )rÀ   rX   r2   rO  rh  r   rr   rœ   )r[   r\   r7  rz   rå   rÿ   rq  r   r   r"   Útest_average_sparse_oneclassG  s"    ù

rw  c                  C   sÖ   t  ddgddgddgg¡} t  ddgddgg¡}tdddddd�}| | ¡ t|jt  d	d
g¡ƒ |jd dksvt‚| |¡}t|t  ddg¡ƒ | |¡|j }t| 	|¡|ƒ | 
|¡}t|t  ddg¡ƒ d S )NrD   rE   rF   rI   rG   r~   F)r7  rj   rl   rk   r   g      À¿g      Ü?r   rK   g      î¿g      ä?)rV   r„   r?   r)   r   rr   rœ   rv   Zscore_samplesr3   rÈ   r   )ÚX_trainÚX_testrz   ZscoresÚdecrü   r   r   r"   Útest_sgd_oneclass`  s$        ÿ


r{  c                  C   s.  d} d}d}t j |¡}d| dd¡ }t j|d |d f }d| dd¡ }t j|d |d f }t|d| d	�}| |¡ | |¡}| |¡ 	d
d¡}	d}
t
||d�}t| dd|
|d d�}t||ƒ}| |¡ | |¡}| |¡ 	d
d¡}t  ||k¡dk�st‚t  t  |	|f¡¡d }|dk�s*t‚d S )Nro  rÜ   r   r  éô  rG   r”   Zrbf)ÚgammaZkernelr7  rF   rE   é   )r}  r   T)r7  rk   rÇ   r   r   r   rR   r  rO   )rV   r³   r´   rV  Zr_r   r)   rÈ   r3   rä   r	   r?   r   r  rv   Úcorrcoefr1  )r7  r}  r   rç   r,   rx  ry  rz   Zy_pred_ocsvmZ	dec_ocsvmr   Z	transformZclf_sgdZpipe_sgdZy_pred_sgdocsvmZdec_sgdocsvmr  r   r   r"   Útest_ocsvm_vs_sgdocsvmv  s:    

ú


r€  c                  C   s¢   t jddddd�\} }tddd dd	d
d� | |¡}tdddd
d d� | |¡}t|j|jƒ tddd ddd
d� | |¡}tdddd
d d� | |¡}t|j|jƒ d S )Nr¨   r”   rÝ   iÒ  )rå   ræ   Zn_informativer   rm   r^  r0  g�Aòÿÿÿï?r   )r]   r‹   r   r   r]  r   rŠ   )r]   r‹   r   r   r   g»½×Ùß|Û=rŒ   )r   Úmake_classificationr@   r)   r   rr   )r,   r-   Zest_enZest_l1Zest_l2r   r   r"   Útest_l1_ratioŸ  sd       ÿ
ú ù    ÿ þú ù    ÿ þr‚  c            	   
   C   s  t jdd��� t j d¡} d}d}| j||fd�}|d d …d d…f  d9  < t  |¡ ¡ sbt‚tƒ  	|¡}t  |¡ ¡ s€t‚| j|d�}t  
||¡d	k t j¡}tt  |¡dd
gƒ tdddd�}| ||¡ t  |j¡ ¡ sæt‚d}tjt|d�� | ||¡ W 5 Q R X W 5 Q R X d S )NÚraise©r  r   r”   r±   rÞ   rG   gœu ˆ<ä7~rS   rF   rÛ   rÄ   r|  )r]   r¤   r   zwFloating-point under-/overflow occurred at epoch #.* Scaling input data with StandardScaler or MinMaxScaler might help.rÌ   )rV   Úerrstater³   r´   râ   Úisfiniter  rv   r   rJ  rZ   ÚastypeZint32r   r›   r@   r)   rr   r…   r†   r‡   )	rç   rå   ræ   r,   ZX_scaledZground_truthr-   ÚmodelZ	msg_regxpr   r   r"   Útest_underflow_or_overlowÂ  s&    ÿr‰  c                  C   sZ   t ddddddddd d	�	} tjd
d�� |  tjtj¡ W 5 Q R X t | j¡ 	¡ sVt
‚d S )NrÄ   r±   Tr^  r  rU   rm   r   )	r¤   r   rk   r‹   r]  r]   rj   r   r   rƒ  r„  )r@   rV   r…  r)   rª   r«   r¬   r†  rr   r  rv   )rˆ  r   r   r"   Ú'test_numerical_stability_large_gradientè  s    ÷rŠ  r‹   rŒ   rŠ   r^  c              	   C   sV   t ddd| dd dd�}tjdd�� | tjtj¡ W 5 Q R X t|jt 	|j¡ƒ d S )	Ng     jø@r~   rÛ   Fr0  )r]   rl   rj   r‹   rk   r   r   rƒ  r„  )
r@   rV   r…  r)   rª   r«   r¬   r   rr   Ú
zeros_like)r‹   rˆ  r   r   r"   Útest_large_regularizationû  s    ù	rŒ  c               	   C   s   t ƒ  tj¡} tjdk}d}td d|d�}| | |¡ ||jksDt‚d}tdd|d�}| | |¡ ||jkspt‚|jdks~t‚tdd|d�}| | |¡ |j|jks¨t‚|jdks¶t‚tdd	dd
�}d}t	j
t|d�� | | |¡ W 5 Q R X |jdksüt‚d S )NrF   r   r   )r   r   r   r  r   rÛ   rH   rm   )r   r   r   zhMaximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.rÌ   )r   rJ  rª   r«   r¬   r@   r)   r­   rv   r…   Úwarnsr   )r,   r-   r   Zmodel_0Zmodel_1Zmodel_2Zmodel_3Zwarning_messager   r   r"   Útest_tol_parameter  s*    
ÿrŽ  c                 C   s:   |D ]0\}}}}t |  ||¡|ƒ t |  ||¡|ƒ qd S r%   )r   Úpy_lossÚpy_dloss)Zloss_functionÚcasesrg   r-   Zexpected_lossZexpected_dlossr   r   r"   Ú_test_loss_common1  s    r’  c                  C   sT   t  d¡} dddddddd	g}t| |ƒ t  d
¡} ddddddddg}t| |ƒ d S )NrT   )gš™™™™™ñ?rT   rS   rS   ©ç       Àr¡   rS   rS   )rT   rT   rS   r¡   )r¡   r¡   rS   rT   )rI   rT   rI   r¡   )rÜ   r¡   ç      @rT   )rK   r¡   rI   rT   )rS   rT   rF   r¡   rS   ©rT   rT   rS   rS   )r  r¡   rS   rS   )rS   rT   rS   r¡   )rS   r¡   rS   rT   )rI   r¡   rI   rT   )rÜ   r¡   rÜ   rT   )rK   rT   rI   r¡   )r¡   rT   rT   r¡   )Úsgd_fastZHinger’  ©r¤   r‘  r   r   r"   Útest_loss_hinge9  s,    
÷

÷r™  c                  C   s(   t  d¡} ddddddg}t| |ƒ d S )NrT   r–  r“  )rT   r¡   ç      @rš  ©r¡   rT   rš  ç      À)rI   rT   g      Ð?r¡   ©rI   r¡   g      @r•  )r—  ZSquaredHinger’  r˜  r   r   r"   Útest_gradient_squared_hingeZ  s    
ù	rž  c                  C   sH  t  ¡ } ddt dt d¡ ¡dt d¡d  fddt dt d¡ ¡dt d¡d  fddt dt d¡ ¡dt d¡d  fddt dt d¡ ¡dt d¡d  fddt d¡dfddt d¡dfddg}t| |ƒ t|  d	d¡t d
¡d dƒ t|  d	d¡t d
¡dƒ t|  d
d¡t d
¡d dƒ t|  d
d¡d	dƒ d S )NrT   r¡   rS   rG   rK   rI   )çfffffæ1@r¡   rŸ  rT   )gfffffæ1ÀrT   rŸ  r¡   gš™™™™2@gš™™™™2Àr—   )	r—  ÚLogrV   r  Úexpr’  r   r�  r�  r˜  r   r   r"   Útest_loss_logi  s    ((((÷
r¢  c                  C   s$   t  ¡ } dddddg}t| |ƒ d S )N©rS   rS   rS   rS   r–  )rT   rS   rI   rT   )rI   r¡   g      ò?rJ   )g      ÀrÜ   g     @$@g      À)r—  ZSquaredLossr’  r˜  r   r   r"   Útest_loss_squared_loss~  s    úr¤  c                  C   s(   t  d¡} ddddddg}t| |ƒ d S )NrÛ   r£  )rÛ   rS   ç{®Gázt?rÛ   )rS   rÛ   r¥  r  )gš™™™™™@rš  g{®GázT?gš™™™™™©¿)ç      @rÜ   gáz®GáÒ?rÛ   )r¡   r¦  g
×£p=
ã?r  )r—  ZHuberr’  r˜  r   r   r"   Útest_loss_huberŒ  s    
ù	r§  c                  C   s*   t  ¡ } ddddddddg}t| |ƒ d S )	Nr–  )r¡   r¡   rS   rS   )rÜ   rT   rS   rS   )rS   rT   rT   r”  r›  r�  )r”  rT   é   rœ  )g      ÀrT   é   rœ  )r—  ZModifiedHuberr’  r˜  r   r   r"   Útest_loss_modified_huber›  s    ÷rª  c                  C   s,   t  d¡} dddddddd	g}t| |ƒ d S )
NrÛ   r£  ©rÛ   rS   rS   rS   ©gffffff Àr”  rS   rS   ©gffffff@r•  rS   rS   )çš™™™™™@rÜ   rÛ   rT   )rÜ   r¡   ç333333@rT   )rÜ   r®  rÛ   r¡   )r”  rT   r¯  r¡   )r—  ZEpsilonInsensitiver’  r˜  r   r   r"   Útest_loss_epsilon_insensitive¬  s    
÷r°  c                  C   s,   t  d¡} dddddddd	g}t| |ƒ d S )
NrÛ   r£  r«  r¬  r­  )r®  rÜ   rU   r  )rÜ   r¡   çR¸…ëÑ @g333333@)rÜ   r®  rU   gš™™™™™É¿)r”  rT   r±  g333333À)r—  ZSquaredEpsilonInsensitiver’  r˜  r   r   r"   Ú%test_loss_squared_epsilon_insensitive½  s    
÷r²  c               	   C   sf   t dddddddd�} |  tjtj¡ | j| jks6t‚| j| jd k sJt‚|  tjtj¡d	ksbt‚d S )
Nrm   r¨   Tr”   r   rG   )r]   r   r   r©   rº   r   r  rÝ   rP   )	r@   r)   rª   r«   r¬   r­   rº   rv   rU  )rz   r   r   r"   Ú0test_multi_thread_multi_class_and_early_stoppingÎ  s    ù	r³  c                  C   s^   t  ddd¡dddgdœ} tdd	d
dd�}t|| dddd�}| tjtj¡ |jdksZt	‚d S )Néüÿÿÿr  rí   r   r±   r_  )r]   rº   rU   r¨   Tr   )r   r   r©   r   rG   )Zn_iterr  r   rP   )
rV   Zlogspacer@   r   r)   rª   r«   r¬   Zbest_score_rv   )Z
param_gridrz   Úsearchr   r   r"   Ú-test_multi_core_gridsearch_and_early_stoppingà  s    þr¶  ÚbackendZlokyÚmultiprocessingÚ	threadingc              	   C   sŠ   t j d¡}tjdddd|d�}| dd¡}tdd	dd
�}| ||¡ tdddd
�}tj| d�� | ||¡ W 5 Q R X t	|j
|j
ƒ d S )Nr   r|  r  g{®Gáz”?Zcsr)Zdensityr	  r   rÝ   r¨   rF   )r   r  r   r  )r·  )rV   r³   r´   r&   Úchoicer@   r)   ÚjoblibZparallel_backendr   rr   )r·  r   r,   r-   Zclf_sequentialZclf_parallelr   r   r"   Ú'test_SGDClassifier_fit_for_all_backendsï  s    r¼  Ú	Estimatorc              	   C   s  | t jkrtj|d�\}}ntj|d�\}}| |dd�}t t¡�" | ||¡j	}|j
dks`t‚W 5 Q R X | |dd�}t t¡�" | ||¡j	}|j
dksžt‚W 5 Q R X t||ƒ | |d dd�}t t¡�" | ||¡j	}|j
dksêt‚W 5 Q R X t || ¡ ¡ dk�st‚d S )N)r   rF   )r   r   rT   )r   r;   r   Zmake_regressionr�  r…   r�  r   r)   rr   r­   rv   r   rV   Úabsre  )r½  Zglobal_random_seedr,   r-   ZestZcoef_same_seed_aZcoef_same_seed_bZcoef_other_seedr   r   r"   Útest_sgd_random_state  s"    

r¿  c           	      C   s¢   t jt j }}|jd }d}tjddd|d�}ttjd�}|  	td|¡ | 
||¡ |jd d	d
… \}}|jd t|| ƒks„t‚|jd t|| ƒksžt‚dS )ziTest that data passed to validation callback correctly subsets.

    Non-regression test for #23255.
    r   r  Trm   r¨   )r©   r   r   r²   )Zside_effectÚ_ValidationScoreCallbackrF   rH   N)rª   r«   r¬   rX   r   r@   r   r   rÀ  Úsetattrr)   Z	call_argsrO  rv   )	Zmonkeypatchr,   rx   rå   r²   rz   ZmockZX_valZy_valr   r   r"   Ú&test_validation_mask_correctly_subsets9  s    
ürÂ  c               	   C   s^   t jt j } }t |¡}d}tjd|dd�}d}tjt	|d�� |j
| ||d� W 5 Q R X d S )Nr°   Tr   )r©   r²   r   z\The sample weights for validation set are all zero, consider using a different random state.rÌ   r-  )rª   r«   r¬   rV   r‹  r   r@   r…   r†   r‡   r)   )r,   rx   r.  r²   rz   Úerror_messager   r   r"   Ú(test_sgd_error_on_zero_validation_weightQ  s    
  ÿÿrÄ  c                 C   s   | dd�  tt¡ dS )z!non-regression test for gh #25249rF   )ÚverboseN)r)   r,   rx   )r½  r   r   r"   Útest_sgd_verbosed  s    rÆ  ÚSGDEstimatorÚ	data_typec                 C   s>   t  |¡}tjt|d�}| ƒ }| ||¡ |jj|ks:t‚d S )N©Údtype)	r,   r‡  rV   r„   rx   r)   rr   rÊ  rv   )rÇ  rÈ  Z_XZ_YZ	sgd_modelr   r   r"   Útest_sgd_dtype_matchj  s
    
rË  c                 C   sz   t jtjd�}tjttjd�}t jtjd�}tjttjd�}| dd�}| ||¡ | dd�}| ||¡ t|j	|j	ƒ d S )NrÉ  rÝ   )r   )
r,   r‡  rV   Úfloat64r„   rx   Úfloat32r)   r   rr   )rÇ  ZX_64ZY_64ZX_32ZY_32Zsgd_64Zsgd_32r   r   r"   Útest_sgd_numerical_consistency~  s    

rÎ  )NrS   )NrS   )©r   Zunittest.mockr   r»  ÚnumpyrV   r…   Zscipy.sparseÚsparser&   Zsklearnr   r   r   Zsklearn.baser   r   Zsklearn.exceptionsr   Zsklearn.kernel_approximationr	   Zsklearn.linear_modelr
   r—  r   Zsklearn.model_selectionr   r   r   Zsklearn.pipeliner   Zsklearn.preprocessingr   r   r   r   Zsklearn.svmr   Zsklearn.utils._testingr   r   r   r   r   r#   r@   r$   r;   r:   r?   r>   rA   rB   rC   r„   r,   rx   rÉ   rÊ   rî   rø   rù   rú   rÀ   rÁ   r  r  Z	load_irisrª   rØ   rÙ   Ztrue_result5ri   r}   ÚmarkZparametrizer‚   r‰   rŽ   r’   rŸ   r¦   r®   r¯   r¹   r¿   rÂ   rË   rÑ   rW   rÕ   r×   rÚ   ré   rë   rð   rô   rý   r   r  r  r  r  r  r%  r)  r+  r,  r/  r4  r6  r8  r9  r>  r?  r@  rA  rE  rH  rI  rK  rL  rN  rP  rQ  rX  r[  r\  ra  rb  rc  rd  rh  rk  rl  rm  rn  rp  rr  ru  rv  rw  r{  r€  r‚  r‰  rŠ  rŒ  rŽ  r’  r™  rž  r¢  r¤  r§  rª  r°  r²  r³  r¶  r¼  r¿  rÂ  rÄ  rÆ  rÍ  rÌ  rË  rÎ  r   r   r   r"   Ú<module>   s–  	
.
÷ÿ
øÿøÿ.
	" 
ÿ 
ÿ
 
ÿ
úþ
úþ
 
ÿ
+ 
ÿ
 
ÿ
 
ÿ
) 
ÿ
 
ÿ

 
ÿ
üþ	
 
ÿ
	



üþ	

!
	











D
$




.
 
ÿ





	
%



 
 


#

!
&






)#&
$!
# 
ÿ
#úþúþ