o
    tBh.                    @   sl  d dl Z d dlZd dlZd dl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 d dl
m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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& d dl'm(Z) d dl'm*Z* d dl$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Z7g d,Z8e6d)d)gd+d+gd-d+ggZ9g d.Z:e6d)d*gd/d0gd1d2gd*d*gd3d0gd2d2gd)d)gd d4gd*d)gg	Z;d5gd- d6gd-  d7gd-  Z<e6d1d0gd*d+gd d(ggZ=g d8Z>e6g d9g d9g d:g d:g d;g d;g d<g d<gZ?e6g d=Z@e6g d>g d?g d@g dAg dBg dCg dDg dEgZAe6g d=ZBeC ZDe6d(d)gd)d)gd)d(gd*d*gd*d+gd+d*ggZEg d,ZFg dFZGd9dHdIZHejIJdJe-e3e/e4e1e5gejIJdKdLdMgejIjJdNdOdPidQfdRdSdTdUfdVdRidWfdXdYidZfd[d\id]fd^d4id_fd^d+id_fd d`dadbfd dcdddefdfd)idgfdhdiidjfdkdiidlfdmdPidnfdod idpfgdqdr dsdtdu ZKdvdw ZLejIJdJe-e3e/e4gejIJdxg dydzd{ ZMejIJdJe-e3e/e4gd|d} ZNejIJdJe-e3e/e4gd~d ZOejIJdJe-e3e/e4e1e5gdd ZPejIJdJe-e3e/e4e1e5gdd ZQejIJdJe-e3e/e4gdd ZRejIJdJe-e3e/e4gdd ZSejIJdJe-e3e/e4gdd ZTejIJdJe-e3e/e4gdd ZUejIJdJe-e3e/e4gdd ZVejIJdJe-e3e/e4gdd ZWejIJdJe-e3gdd ZXejIJdJe-e3e1e5gdd ZYejIJde-deZdife3deZdife1deZdife5deZdifgdd Z[ejIJdJe-e3e/e4gdd Z\ejIJde-dd ife3dd ife1dd ife5dd ifgdd Z]ejIJdJe-e3gdd Z^ejIJdJe-e3gdd Z_ejIJdJe-e3gdd Z`ejIJdJe-e3gdd ZaejIJdJe-e3gdd ZbejIJdJe-e3gdd ZcejIJdJe-e3gdd ZdejIJdJe-e3gdd ZeejIJdJe-e3gdd ZfejIgdejIJdJe-e3gdd ZhejIJdJe-e3gdd ZiejIJdJe-e3gdd ZjejIJdJe-e3gdd ZkejIJdJe-e3gdd ZlejIJdJe-e3gdd ZmejIJdJe-e3gdd ZnejIJdJe-e3gdd ZoejIJdJe-e3gdd ZpejIJdJe-e3gddĄ ZqejIJdJe-e3e1e5gddƄ ZrejIJdJe-e3gddȄ ZsejIJdJe-e3gddʄ ZtejIJdJe-e3gdd̄ ZuejIJdJe-e3gdd΄ ZvejIJdJe-e3gddЄ ZwejIJdJe-e3gejIJdxg dydd҄ ZxejIJdJe-e3gddԄ ZyejIJdJe-e3gddք ZzejIJdJe-e3gdd؄ Z{ejIJdJe/e4gddڄ Z|ejIJdJe/e4gdd܄ Z}ejIJdJe/e4gddބ Z~ejIJdJe/e4gdd ZejIJdJe/e4gdd ZejIJdJe/e4gdd ZejIJdJe/e4gdd ZejIJdJe/e4gdd ZeejIJdJe/e4gdd ZejIJdJe/e4gejIJdxg dydd ZejIJdJe/e4gdd Zd9ddZejIJdJe1e5gdd ZejIJdJe1e5gejIJdxg dydd ZejIJdJe1e5gdd ZejIJdJe1e5gdd ZejIJdJe1e5gejIJdxg dydd ZejIJdJe1e5gdd ZejIJdJe1e5gdd ZejIJdJe1e5gdd  ZejIJdJe1e5gdd Zdd Zdd Zdd Zd	d
 Zdd ZejIJdg d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( ZejIJd)g d*d+d, ZejIJd-d.d/ej-fd.d/ej/fd0d1ej-fgd2d3 ZejIJd4ej-ej/gd5d6 Zd7d8 ZdS (:      N)Mock)assert_allclose)assert_array_equal)assert_almost_equal)assert_array_almost_equal)ignore_warnings)linear_modeldatasetsmetrics)cloneis_classifier)OneClassSVM)LabelEncoderscaleMinMaxScaler)StandardScaler)Nystroem)make_pipeline)ConvergenceWarning)StratifiedShuffleSplitShuffleSplit)	_sgd_fast)_stochastic_gradient)RandomizedSearchCVc                 C   s8   d| vrd| d< d| vrd | d< d| vrd| d< d S d S )Nrandom_state*   tolmax_iter    kwargsr   r   z/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/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                    &   t |}t j||g|R i |S N)sp
csr_matrixsuperfitselfXyargskw	__class__r   r"   r*   (      
z_SparseSGDClassifier.fitc                    r%   r&   )r'   r(   r)   partial_fitr+   r1   r   r"   r4   ,   r3   z _SparseSGDClassifier.partial_fitc                       t |}t |S r&   )r'   r(   r)   decision_functionr,   r-   r1   r   r"   r6   0      
z&_SparseSGDClassifier.decision_functionc                    r5   r&   )r'   r(   r)   predict_probar7   r1   r   r"   r9   4   r8   z"_SparseSGDClassifier.predict_proba)__name__
__module____qualname__r*   r4   r6   r9   __classcell__r   r   r1   r"   r$   '   s
    r$   c                   @   $   e Zd Zdd Zdd Zdd ZdS )_SparseSGDRegressorc                 O   (   t |}tjj| ||g|R i |S r&   )r'   r(   r   SGDRegressorr*   r+   r   r   r"   r*   :      
z_SparseSGDRegressor.fitc                 O   r@   r&   )r'   r(   r   rA   r4   r+   r   r   r"   r4   >   rB   z_SparseSGDRegressor.partial_fitc                 O   &   t |}tjj| |g|R i |S r&   )r'   r(   r   rA   r6   r,   r-   r/   r0   r   r   r"   r6   B   s   
z%_SparseSGDRegressor.decision_functionNr:   r;   r<   r*   r4   r6   r   r   r   r"   r?   9       r?   c                   @   r>   )_SparseSGDOneClassSVMc                 O   rC   r&   )r'   r(   r   SGDOneClassSVMr*   rD   r   r   r"   r*   I   r3   z_SparseSGDOneClassSVM.fitc                 O   rC   r&   )r'   r(   r   rH   r4   rD   r   r   r"   r4   M   r3   z!_SparseSGDOneClassSVM.partial_fitc                 O   rC   r&   )r'   r(   r   rH   r6   rD   r   r   r"   r6   Q   r3   z'_SparseSGDOneClassSVM.decision_functionNrE   r   r   r   r"   rG   H   rF   rG   c                  K      t |  tjdi | S Nr   )r#   r   SGDClassifierr    r   r   r"   rK   V      rK   c                  K   rI   rJ   )r#   r   rA   r    r   r   r"   rA   [   rL   rA   c                  K   rI   rJ   )r#   r   rH   r    r   r   r"   rH   `   rL   rH   c                  K      t |  tdi | S rJ   )r#   r$   r    r   r   r"   SparseSGDClassifiere      rN   c                  K   rM   rJ   )r#   r?   r    r   r   r"   SparseSGDRegressorj   rO   rP   c                  K   rM   rJ   )r#   rG   r    r   r   r"   SparseSGDOneClassSVMo   rO   rQ         )rT   rT   rT   rU   rU   rU      )rT   rU   rU   g            ?g            ?g      ?      onetwothree)rZ   r[   r\   )rT   rT   r   r   r   r   )r   r   rT   r   r   r   )r   r   r   r   rT   rT   )r   r   r   rT   r   r   )rT   rT   rT   rT   rU   rU   rU   rU   )rT   ?皙?r   r   r   )rT   zG?g\(\?r   r   r   )rT   Q?g)\(?r   r   r   )rT   Q?Gz?r   r   r   )r   r   r   g{Gz?ra   rT   )r   r   r   gHzG?r_   rT   )r   r   r   ra   gffffff?rT   )r   r   r   g(\?rT   rT   )r   rT   rT           c                 C   s   |d u rt |jd }n|}t |jd }|}	d}
d}| ttfv r%d}t|D ]J\}}t ||}||	7 }|||  }|d||  9 }||| |  7 }|	||  | 7 }	||9 }||7 }||d  }|
|9 }
|
|	7 }
|
|d  }
q)||
fS )NrT   rc         ?{Gz?)npzerosshaperN   rP   	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.   ry   rk   
fit_methodr*   r4   zparams, err_msgrm   皙zalpha must be >= 0foobarg333333?)penaltyl1_ratiozPenalty foobar is not supportedlossz The loss foobar is not supportedr~   皙?zl1_ratio must be in \[0, 1\]learning_ratez	<unknown>z(learning rate <unknown> is not supportednuznu must be in \(0, 1]optimal)rm   r   zalpha must be > 0constant)eta0r   zeta0 must be > 0r   zmax_iter must be > zeroshufflefalsez$shuffle must be either True or Falseearly_stoppingz+early_stopping must be either True or Falsevalidation_fractionz-validation_fraction must be in range \(0, 1\)n_iter_no_changezn_iter_no_change must be >= 1c                 C   s"   t | tr| d d ddS | S )N
   ] )
isinstancestrreplace)xr   r   r"   <lambda>   s   " r   )idsc              
   C   s   z	| di |}W n t y$ } zdt|v rW Y d}~dS |d}~ww tjt|d' t|r=|dkr=dtti}ni }t	||t
tfi | W d   dS 1 sVw   Y  dS )z4Validate parameters in the different SGD estimators.zunexpected keyword argumentNmatchr4   classesr   )	TypeErrorr   pytestraises
ValueErrorr   rf   uniqueYgetattrr-   )rk   rz   paramserr_msgsgd_estimatorerr
fit_paramsr   r   r"   $test_sgd_estimator_params_validation   s   '"r   c                 C   s   | ddd|d}| || | ddd|d}|j |||j |j d | dddd|d}| || |j|jks<J t|j|j |jdd | || |j|jksWJ t|j|j d S )	Nre   F)rm   r   r   r   MbP?	coef_initro   T)rm   r   r   
warm_startr   rm   )r*   coef_copy
intercept_t_r   
set_params)rk   r-   r   lrclfclf2clf3r   r   r"   _test_warm_start  s   
r   r   )r   r   
invscalingadaptivec                 C   s   t | tt| d S r&   )r   r-   r   rk   r   r   r   r"   test_warm_start*  s   r   c                 C   sz   | ddd}| tt ttd d tjf }tj||f }tt	 | t| W d    d S 1 s6w   Y  d S )Nre   Frm   r   )
r*   r-   r   rf   arraynewaxisc_r   r   r   )rk   r   Y_r   r   r"   test_input_format2  s   "r   c                 C   sV   | ddd}t |}|jdd |tt | ddd}|tt t|j|j d S )Nre   l1)rm   r}   l2)r}   )r   r   r*   r-   r   r   r   rk   r   r   r   r   r"   
test_clone@  s   r   c                 C   s   | ddd}| tt t|dsJ t|dsJ t|ds!J t|ds(J |  }| tt t|dr8J t|dr?J t|drFJ t|drMJ d S )NTre   )averager   _average_coef_average_intercept_standard_intercept_standard_coef)r*   r-   r   hasattrrk   r   r   r   r"   test_plain_has_no_average_attrP  s   r   c                 C   s   | dd}|  }t dD ])}t|r)|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v rRt|j|jdd d S | ttfv rat|j|j d S d S )NiX  r   d   r      decimal)ranger   r4   r-   r   rf   r   r   r   rK   rN   rA   rP   r   r   rH   rQ   r   offset_)rk   clf1r   _r   r   r"   %test_late_onset_averaging_not_reachedm  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 )Nr   -C6?      rT   rd   rU      r   squared_errorF)r   r   r   r   rm   r   r   r   )rn   ro   r   r   )rf   r   r   r*   r-   ry   r   ravelr   r   r   )rk   r   rm   Y_encoder   r   rq   rs   r   r   r"   !test_late_onset_averaging_reached  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(J qd S )Nr   TF  r   )r   r   r   )irisdatatargetr*   n_iter_)rk   r-   r   r   r   r   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s(J d S )Nr   re   r   r   )r   r   r   r   r   )r*   r   r   r   r   )rk   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s,J | dtj|ddd ||d	}t|rFt	||d
}	nt
||d
}	t|	||\}
}t|
}
|||
 ||
  |j|kslJ t|j|j d S )Ng?r   Fr   Tr   re   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )	test_sizer   )r   r   r   rf   randomRandomStater*   r   r   r   r   nextsplitsortr   r   )rk   r-   r   r   seedr   r   r   r   cv	idx_train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   r   r   r   )r*   r   ).0r   r-   r   r   rk   r   r"   
<listcomp>  s    	z)test_n_iter_no_change.<locals>.<listcomp>)rU   rV   r   )r   r   r   r   sorted)rk   n_iter_listr   r   r"   test_n_iter_no_change  s   	r   c                 C   sH   | ddd}t t |tt W d    d S 1 sw   Y  d S )NTrb   )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 ]}| ddd|ddd}| tt t|tt qd S )N)hingesquared_hingelog_lossmodified_huberr   re   Tr   )r}   rm   fit_interceptr   r   r   )r*   r-   r   r   predictTtrue_result)rk   r   r   r   r   r"   test_sgd_clf   s   r   c                 C   sL   t jtdd |  jtttdd W d   dS 1 sw   Y  dS )z1Check that the shape of `coef_init` is validated.z)Provided coef_init does not match datasetr   rV   r   N)r   r   r   r*   r-   r   rf   rg   rk   r   r   r"   test_provide_coef2  s   "r  zklass, fit_paramsro   r   offset_initc                 C   sN   |  }t jtdd |jttfi | W d   dS 1 s w   Y  dS )z:Check that `intercept_init` or `offset_init` is validated.zdoes not match datasetr   Nr   r   r   r*   r-   r   )rk   r   r   r   r   r"   test_set_intercept_offset;  s   "r  c                 C   sJ   d}t jt|d | ddtt W d   dS 1 sw   Y  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   r4   r-   r   )rk   r   r   r   r"   (test_sgd_early_stopping_with_partial_fitK  s   "r  c                 C   s   |  j ttfi | dS )zdCheck that we can pass a scaler with binary classification to
    `intercept_init` or `offset_init`.N)r*   X5Y5)rk   r   r   r   r"    test_set_intercept_offset_binaryW  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   TrT   Fr   r   r   rm   r   r   r   r   rS      r   )rf   r   r   normalrj   signr*   ry   reshaper   r   r   r   )rk   rl   rm   	n_samples
n_featuresrngr-   wr   r.   rq   rs   r   r   r"   &test_average_binary_computed_correctlyf  s0   
r  c                 C   sH   |   tt}|  j tt|jd |   tt}|  j tt|jd d S )Nro   )r*   r  r	  r   r-   r   r   r   r   r"   test_set_intercept_to_intercept  s   r  c                 C   sN   | ddd}t t |ttd W d    d S 1 s w   Y  d S )Nre   r  rm   r   	   )r   r   r   r*   X2rf   onesr   r   r   r"   test_sgd_at_least_two_labels  s   "r   c                 C   sT   d}t jt|d | ddjttttd W d    d S 1 s#w   Y  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 us 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   r4   r-   r   rf   r   )rk   regexr   r   r"   &test_partial_fit_weight_class_balanced  s
   
"r$  c                 C   sf   | ddd tt}|jjdksJ |jjdksJ |ddggjdks'J |t}t	|t
 d S )Nre   r  r  rV   rU   r   r   rT   rV   r*   r  Y2r   rh   r   r6   r   T2r   true_result2rk   r   predr   r   r"   test_sgd_multiclass  s   
r-  c              
   C   s   d}d}| dd||ddddd}t t}|t| t |}t|D ]0\}}t |jd	 }d
|||k< t	| t|||\}	}
t
|	|j| dd t|
|j| dd q$d S )Nr   re   r   r   TrT   Fr  r   rS   r   r   )rf   r   r(  r*   r  r   ri   r  rh   ry   r   r   r   r   )rk   rl   rm   r   np_Y2r   ru   cly_iaverage_coefrs   r   r   r"   test_sgd_multiclass_average  s,   

r2  c                 C   sb   | ddd}|j tttdtdd |jjdksJ |jjs%J d|t	}t
|t d S )Nre   r  r  r%  rV   r   r   )r*   r  r(  rf   rg   r   rh   r   r   r)  r   r*  r+  r   r   r"   "test_sgd_multiclass_with_init_coef  s   
r3  c                 C   sh   | dddd tt}|jjdksJ |jjdksJ |ddggjdks(J |t}t	|t
 d S )	Nre   r  rU   )rm   r   n_jobsr%  r   r   r&  r'  r+  r   r   r"   test_sgd_multiclass_njobs  s   
r5  c                 C   s   |  }t t |jtttdd W d    n1 sw   Y  |  jtttdd}|  }t t |jtttdd W d    n1 sMw   Y  |  jtttdd}d S )N)rU   rU   r  r%  rT   r  r   )r   r   r   r*   r  r(  rf   rg   r   r   r   r"   test_set_coef_multiclass  s   r7  z%ignore:.*squared_loss.*:FutureWarningc              	   C   s   t jjD ]a}t|d}|dv rt|dsJ t|dsJ qd|}t|dr*J t|dr1J tjt|d |j W d    n1 sFw   Y  tjt|d |j	 W d    n1 s`w   Y  qd S )N)r   )r   logr   r9   predict_log_probaz5probability estimates are not available for loss={!r}r   )
r   rK   loss_functionsr   formatr   r   AttributeErrorr9   r9  )rk   r   r   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J t|drJ dD ]S}| |ddd}|tt |d	d
gg}|d dks;J |ddgg}|d dk sKJ |d	d
gg}|d |d ks]J |ddgg}|d |d k soJ q| 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sJ |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r7tj|ddtj|ddks6J ntj|ddtj|ddksHJ tjdd}|	|g}t|dk rn||g}t|d dgd	  d S d S )Nr   re   r   )r   rm   r   r   r9   r9  )r   r   )r   rm   r   rV   rU   r   rT   rW   rS   )r   r   r   r  r{   333333?皙?rT   )axisr   r   gUUUUUU?)rK   r*   r-   r   r   r9   r9  r  r(  r6   r   rf   argmaxr   sumallargsortr   r8  rN   argminmean)rk   r   r   rw   dlpr   r   r   r"   test_sgd_proba  sT   
$"rK  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
sUJ ||}t	|| tt|}t|j
soJ ||}t	|| d S )N   r   rA  F  )r}   rm   r   r   r   r   r   rT   rS   )   )lenX4rf   r   r   aranger   Y4r*   r   r   rg   r   sparsifyr'   issparsepickleloadsdumps)rk   nr  idxr-   r   r   r,  r   r   r"   test_sgd_l1]  s4   






rZ  c                 C   s   t ddgddgddgddgddgg}g d}| 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   皙rd   rc   rT   rT   rT   rS   rS   r  r   F)rm   r   r   r"  rA  rT   r   rS   rf   r   r*   r   r   rk   r-   r.   r   r   r   r"   test_class_weights  s   ("r_  c                 C   s   ddgddgddgddgg}g d}| 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 )NrT   r   )r   r   rT   rT   r  r   rm   r   r"  rW   r?  rU   r   )r*   r   r   )rk   r-   r.   r   clf_weightedr   r   r"   test_equal_class_weight  s   rb  c                 C   sN   | ddddid}t t |tt W d    d S 1 s w   Y  d S )Nr  r   r   rW   r`  r  r   r   r   r"   test_wrong_class_weight_label  s   "rc  c                 C   sL   | dddgd}t t |tt W d    d S 1 sw   Y  d S )Nr  r   rW   r`  r  r   r   r   r"   test_wrong_class_weight_format  s   "rd  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@  )rT   rU   r   rT   rU   r  r  r`  r  sample_weight)rf   r   r   random_samplerR  rh   r   r*   rP  r   r   )rk   class_weightsr  sample_weightsmultiplied_togetherr   r   r   r   r"   test_weights_multiplied  s   

rk  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 sJ | dddd}|
|
| ||}tj||ddd	ksJ d S )Nr      r   r   F)rm   r   r"  r   weightedr   r`   rT   r   r!  r   )r   r"  r   )r   r   r   r   rf   rQ  rh   r   r   r   r*   r
   f1_scorer   r   r   r   vstackconcatenate)rk   r-   r.   rY  r  r   f1clf_balancedX_0y_0X_imbalancedy_imbalancedy_predr   r   r"   test_balanced_weight  s<   


rx  c                 C   s   t ddgddgddgddgddgg}g d}| 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[  rd   rc   r\  r  r   Frm   r   r   rA  rT   r   rV   rU   re  rS   r]  r^  r   r   r"   test_sample_weights  s   ( "rz  c                 C   s|   | t tfv r| dddd}n| ttfv r| dddd}tt |jtt	t
dd W d    d S 1 s7w   Y  d S )Nr  r   Fry  )r   r   r   r   re  )rK   rN   rH   rQ   r   r   r   r*   r-   r   rf   rQ  r   r   r   r"   test_wrong_sample_weights
  s   "r{  c                 C   sF   | dd}t t |tt W d    d S 1 sw   Y  d S )Nre   r   )r   r   r   r4   r   r   r   r   r   r"   test_partial_fit_exception  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.J |jjdks6J |ddggjdksCJ t	|jj
}|t |d  t|d   t	|jj
}|scJ ||t}t|t d S )Nr   rV   re   r   r   rT   r6  )r-   rh   rf   r   r   r4   r   r   r6   idr   r   r   r   r   )rk   thirdr   r   id1id2rw  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.J |jjdks6J |ddggjdksCJ t	|jj
}|t |d  t|d   t	|jj
}|scJ |d S )	Nr   rV   re   r   r   rT   r   r&  )r  rh   rf   r   r(  r4   r   r   r6   r}  r   )rk   r~  r   r   r  r  r   r   r"   test_partial_fit_multiclass5  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s2J |jjdks:J |t |d  t|d   |jjdt jd fksUJ |jjdks]J d S )Nr   rV   re   )rm   r   r   rT   r   )r  rh   rf   r   r(  r4   r   r   )rk   r~  r   r   r   r   r"   #test_partial_fit_multiclass_averageG  s   
 r  c                 C   s"   |  }| tt |tt d S r&   )r*   r  r(  r4   r   r   r   r"   test_fit_then_partial_fitV  s   r  c                 C   s   t ttftttffD ]K\}}}| ddd|dd}||| ||}|j}t	
|}| dd|dd}tdD ]
}	|j|||d q7||}
|j|ksNJ t||
dd q
d S )Nre   rU   F)rm   r   r   r   r   rm   r   r   r   r   r   )r-   r   r   r  r(  r)  r*   r6   r   rf   r   r   r4   r   )rk   r   X_r   T_r   rw  tr   ru   y_pred2r   r   r"   "test_partial_fit_equal_fit_classif`  s   


r  c                 C   s   t jd}| dddd|d}|tt dt |ttkks#J | dddd|d}|tt dt |ttkks@J | dd	|d
}|tt dt |ttkks[J | dddd|d}|tt dt |ttkksxJ d S )NrT   re   r   r  epsilon_insensitive)rm   r   r   r   r   rd   squared_epsilon_insensitivehuber)rm   r   r   r   )rf   r   r   r*   r-   r   rH  r   )rk   r   r   r   r   r"   test_regression_lossess  s>    r  c                 C   s   t | ttd d S )Nr   )r   r  r(  r  r   r   r"   test_warm_start_multiclass  s   r  c                 C   s\   | ddd}| tt t|dsJ dd t tD }| td d d df | d S )Nre   Fr   r   c                 S   s   g | ]}d dg| qS )hamspamr   )r   ru   r   r   r"   r     s    z%test_multiple_fit.<locals>.<listcomp>rS   )r*   r-   r   r   r   fit_transform)rk   r   r.   r   r   r"   test_multiple_fit  s
    r  c                 C   sL   | dddd}| ddgddgddggg d |jd |jd ks$J d S )Nr  rU   Fry  r   rT   )r   rT   rU   )r*   r   r   r   r   r"   test_sgd_reg  s   "r  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 )Nr   re   r  r   r   r  r   r   TrT   Fr  r   r   )rf   r   r   r  rj   r*   ry   r   r   r   r   rk   rl   rm   r  r  r  r-   r  r.   r   rq   rs   r   r   r"   $test_sgd_averaged_computed_correctly  s,   r  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 )Nr   re   r  r   r   r  r   r   TrT   Fr  rU   r   r   )rf   r   r   r  rj   r4   intry   r   r   r   r   r  r   r   r"   test_sgd_averaged_partial_fit  s.   44r  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 )Nr   re   r   r   TrT   Fr  r   rU   r   r   )
r   rh   r4   r   r  ry   r   r   r   r   )rk   rl   rm   r   r  rq   rs   r   r   r"   test_average_sparse  s$   
44r  c           	      C   s   d\}}d}t jd}t ||||d}d|  }| dddd	d
}||| |||}|dks7J d|  ||d  }| dddd	d
}||| |||}|dks_J d S )Nr   r   r   rT   rW   r   r  r  F)r   rm   r   r   rb   	rf   r   r   linspacer  r   r*   scorerandn	rk   xminxmaxr  r  r-   r.   r   r  r   r   r"   test_sgd_least_squares_fit  s   r  c           	      C   s   d\}}d}t jd}t ||||d}d|  }| dddd	d
d}||| |||}|dks8J d|  ||d  }| dddd	d
d}||| |||}|dksaJ d S )Nr  r   r   rT   rW   r  re   r  r  Fr   epsilonrm   r   r   rb   r  r  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s8J d|  ||d  }| ddddd	d
}||| |||}|dksaJ d S )Nr  r   r   rT   rW   r  r  r  Fr  rb   r  r  r   r   r"   test_sgd_huber_fitO  s   r  c              	   C   s   d\}}t jd}|||}||}t ||}dD ]4}dD ]/}tj||dd}	|	|| | dd||dd	}
|
|| d
||f }t|	j	|
j	d|d q!qd S )N)r   r   r   )re   r   )rW   r^   rd   F)rm   r~   r   
elasticnet2   )r}   r   rm   r~   r   zNcd and sgd did not converge to comparable results for alpha=%f and l1_ratio=%frU   )r   r   )
rf   r   r   r  rj   r   
ElasticNetr*   r   r   )rk   r  r  r  r-   ground_truth_coefr.   rm   r~   cdsgdr   r   r   r"   test_elasticnet_convergenceg  s4   
r  c                 C   s   t jd d }| dd}|t d | td |  |jjt jd fks&J |jjdks.J |ddggjdks;J t|jj}|t |d  t|d   t|jj}|s[J |d S )Nr   rV   re   r   rT   r6  )	r-   rh   r4   r   r   r   r   r}  r   )rk   r~  r   r  r  r   r   r"   test_partial_fit  s   
r  c                 C   s   | ddd|dd}| tt |t}|j}| dd|dd}tdD ]}|tt q#|t}|j|ks8J t||dd d S )Nre   rU   F)rm   r   r   r   r   r  r   )	r*   r-   r   r   r   r   r   r4   r   )rk   r   r   rw  r  ru   r  r   r   r"   test_partial_fit_equal_fit  s   

r  c                 C   s0   | dd}|j dd |jd d dksJ d S )Nr]   )r  r  r  rT   )r   r:  r   r   r   r"   test_loss_function_epsilon  s   
r  c                 C   s  |d u rt |jd }n|}t |jd }|}d| }	d}
d}| tkr'd}t|D ]T\}}t ||}||	7 }|dkr@d}nd}|tdd|| d  9 }||| |  7 }|	|||   | 7 }	||9 }||7 }||d  }|
|9 }
|
|	7 }
|
|d  }
q+|d|
 fS )NrT   rc   rd   re   rS   r   rU   )rf   rg   rh   rQ   ri   rj   max)rk   r-   rl   r   r   r  coefr1  offsetrr   rs   rt   ru   rv   rw   rx   r   r   r"   asgd_oneclass  s4   r  c                 C   s   | ddd|d}| | | ddd|d}|j ||j |j d | dddd|d}| | |j|jks9J t|j|j |jdd	 | | |j|jksSJ t|j|j d S )
NrW   re   F)r   r   r   r   r  r   r  T)r   r   r   r   r   r   )r*   r   r   r   r   r   r   )rk   r-   r   r   r   r   r   r   r"   _test_warm_start_oneclass  s   


r  c                 C   s   t | t| d S r&   )r  r-   r   r   r   r"   test_warm_start_oneclass  s   r  c                 C   sN   | dd}t |}|jdd |t | dd}|t t|j|j d S )NrW   r  r  )r   r   r*   r-   r   r   r   r   r   r"   test_clone_oneclass  s   



r  c                 C   s   t jd d }| dd}|t d |  |jjt jd fks!J |jjdks)J |ddggjdks6J |j}|t |d   |j|u sIJ tt |t d d df  W d    d S 1 sew   Y  d S )Nr   rV   r  r  rT   r6  )	r-   rh   r4   r   r   r   r   r   r   )rk   r~  r   previous_coefsr   r   r"   test_partial_fit_oneclass  s   
"r  c           	      C   s   | ddd|dd}| t |t}|j}|j}|j}| ddd|dd}tdD ]}|t q)|t}|j|ks=J t	|| t	|j| t	|j| d S )N皙?rU   re   F)r   r   r   r   r   rT   )r   r   r   r   r   )
r*   r-   r6   r   r   r   r   r   r4   r   )	rk   r   r   y_scoresr  r  r  r   	y_scores2r   r   r"   #test_partial_fit_equal_fit_oneclass  s   



r  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 )Nr   r  r   r   rU   F)r   r   r   r   r   r   r   rT   r  )r*   r-   r  r   r   r   r   )rk   r   r   r   r   r1  average_offsetr   r   r"   *test_late_onset_averaging_reached_oneclass1  s   


r  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 )Nr   r  r  r   r   r  r   TrT   Fr   r   r   r   r   r   r   )	rf   r   r   r  r*   r  r   r   r   
rk   rl   r   r  r  r  r-   r   r1  r  r   r   r"   -test_sgd_averaged_computed_correctly_oneclassM  s&   

r  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 )Nr   r  r  r   r   r  r   TrT   Fr  rU   )
rf   r   r   r  r4   r  r  r   r   r   r  r   r   r"   &test_sgd_averaged_partial_fit_oneclassh  s(   "
"r  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 )
Nr   re   r   TrT   Fr  r   rU   )r   rh   r4   r  r  r   r   r   )rk   rl   r   r   r  r1  r  r   r   r"   test_average_sparse_oneclass  s"   

r  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s;J ||}t|t ddg |||j }t||| |	|}t
|t ddg d S )NrR   rS   rT   rW   rU   r   F)r   r   r   r   r   g      g      ?r   rY   g      g      ?)rf   r   rH   r*   r   r   r   score_samplesr6   r   r   )X_trainX_testr   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|
|t j d}t||}|| ||}||	d
d}t ||kdksJ t t |	|fd }|dksJ d S )Nr  r  r   r@    rU   r   rbf)gammakernelr   rT   rS      )r  r   T)r   r   r   r   r   r   rb   r?  r]   )rf   r   r   r  r_r   r*   r   r6   r  r   rH   infr   rH  corrcoefrp  )r   r  r   r  r-   r  r  r   y_pred_ocsvm	dec_ocsvmr   	transformclf_sgdpipe_sgdy_pred_sgdocsvmdec_sgdocsvmr  r   r   r"   test_ocsvm_vs_sgdocsvm  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  n_informativer   r   r  rl  gA?r   )rm   r}   r   r   r~   r   r   )rm   r}   r   r   r   g|=r   )r	   make_classificationrK   r*   r   r   )r-   r.   est_enest_l1est_l2r   r   r"   test_l1_ratio  sF   


r  c            	   	   C   sV  t jdd t jd} d}d}| j||fd}|d d d df  d9  < t | s0J t |}t | s?J | j|d}t 	||d	k
t j}tt |dd
g tdddd}||| t |j srJ d}tjt|d ||| W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NraiserE  r   r   r   r  rU   gu <7~rc   rT   r  r   r  )rm   r   r   zwFloating-point under-/overflow occurred at epoch #.* Scaling input data with StandardScaler or MinMaxScaler might help.r   )rf   errstater   r   r  isfiniterE  r   r  rj   astypeint32r   r   rK   r*   r   r   r   r   )	r  r  r  r-   X_scaledground_truthr.   model	msg_regxpr   r   r"   test_underflow_or_overlow  s.   !"r  c                  C   sn   t ddddddddd d		} tjd
d | tjtj W d    n1 s&w   Y  t| j	 s5J d S )Nr   r   Tr  r@  re   r   r   )	r   r   r   r}   r~   rm   r   r   r   r  r  )
rK   rf   r  r*   r   r   r   r  r   rE  )r  r   r   r"   'test_numerical_stability_large_gradient%  s   r  r}   )r   r   r  c              	   C   sj   t ddd| dd dd}tjdd |tjtj W d    n1 s$w   Y  t|jt	|j d S )	Ng     j@r   r  Frl  )rm   r   r   r}   r   r   r   r  r  )
rK   rf   r  r*   r   r   r   r   r   
zeros_like)r}   r  r   r   r"   test_large_regularization8  s   	r  c                  C   s  t  tj} tjdk}d}td d|d}|| | ||jks"J d}tdd|d}|| | ||jks8J |jdks?J tdd|d}|| | |j|jksTJ |jdks[J tdd	dd
}d}tj	t
|d || | W d    n1 s|w   Y  |jdksJ d S )NrT   r   r   )r   r   r   rM  r   r  rV   r   )r   r   r   zhMaximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.r   )r   r  r   r   r   rK   r*   r   r   warnsr   )r-   r.   r   model_0model_1model_2model_3warning_messager   r   r"   test_tol_parameterJ  s,   
r  c                 C   s:   |D ]\}}}}t | ||| t | ||| qd S r&   )r   py_losspy_dloss)loss_functioncasesrw   r.   expected_lossexpected_dlossr   r   r"   _test_loss_commonn  s   r  c                  C   s<   t d} g d}t| | t d} g d}t| | d S )Nrd   ))r   rd   rc   rc          r   rc   rc   )rd   rd   rc   r   )r   r   rc   rd   )rW   rd   rW   r   )r  r         @rd   )rY   r   rW   rd   )rc   rd   rT   r   rc   )rd   rd   rc   rc   )r{   r   rc   rc   )rc   rd   rc   r   )rc   r   rc   rd   )rW   r   rW   rd   )r  r   r  rd   )rY   rd   rW   r   )r   rd   rd   r   )sgd_fastHinger  r   r  r   r   r"   test_loss_hingev  s   


r  c                  C       t d} g d}t| | d S )Nrd   )r  r   )rd   r         @r	  r   rd   r	        )rW   rd   g      ?r   rW   r   g      @r  )r  SquaredHinger  r  r   r   r"   test_gradient_squared_hinge     
	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 )Nrd   r   rc   rU   rY   rW   )fffff1@r   r  rd   )gfffff1rd   r  r   g2@g2r   )	r  Logrf   r8  expr  r   r  r  r  r   r   r"   test_loss_log  s   ((((
r  c                  C      t  } g d}t| | d S )N)rc   rc   rc   rc   r  )rd   rc   rW   rd   )rW   r   g      ?rX   )g      r  g     @$@g      )r  SquaredLossr  r  r   r   r"   test_loss_squared_loss  s   r  c                  C   r  )Nr  )r  )r  rc   {Gzt?r  )rc   r  r  r{   )g@r	  g{GzT?g)      @r  gzG?r  )r   r  g
ףp=
?r{   )r  Huberr  r  r   r   r"   test_loss_huber  r  r  c                  C   r  )N)r  )r   r   rc   rc   )r  rd   rc   rc   )rc   rd   rd   r  r
  r  )r  rd      r  )g      rd      r  )r  ModifiedHuberr  r  r   r   r"   test_loss_modified_huber  s   r  c                  C   r  )Nr  )r  r  rc   rc   rc   gffffff r  rc   rc   gffffff@r  rc   rc   )皙@r  r  rd   )r  r   333333@rd   )r  r#  r  r   )r  rd   r$  r   )r  EpsilonInsensitiver  r  r   r   r"   test_loss_epsilon_insensitive     
r&  c                  C   r  )Nr  )r  r   r!  r"  )r#  r  re   rA  )r  r   R @g333333@)r  r#  re   gɿ)r  rd   r(  g333333)r  SquaredEpsilonInsensitiver  r  r   r   r"   %test_loss_squared_epsilon_insensitive  r'  r*  c               	   C   sf   t dddddddd} | tjtj | j| jksJ | j| jd k s%J | tjtjd	ks1J d S )
Nr   r   Tr   r   rU   )rm   r   r   r   r   r   r4  r  r^   )rK   r*   r   r   r   r   r   r  )r   r   r   r"   0test_multi_thread_multi_class_and_early_stopping  s   	r+  c                  C   s\   t dddg dd} tdddd	d
}t|| ddd	d}|tjtj |jdks,J d S )NrN  r  )r   r   r  )rm   r   re   r   Tr   )r   r   r   r   r   rU   )n_iterr4  r   r^   )	rf   logspacerK   r   r*   r   r   r   best_score_)
param_gridr   searchr   r   r"   -test_multi_core_gridsearch_and_early_stopping  s   r2  backend)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 d    n1 sAw   Y  t	|j
|j
 d S )Nr   r  rM  g{Gz?csr)densityr;  r   r  r   rT   )r   r4  r   rN  )r3  )rf   r   r   r'   choicerK   r*   joblibparallel_backendr   r   )r3  r   r-   r.   clf_sequentialclf_parallelr   r   r"   'test_SGDClassifier_fit_for_all_backends,  s   r>  zold_loss, new_loss, Estimatorsquared_lossr   r8  r   c                 C   s   t jtd|  dd || dd}|tt W d    n1 s"w   Y  ||dd}|tt t|drEt|t|t d S t|	t|	t d S )Nz
The loss 'z' was deprecatedr   r   )r   r   r9   )
r   r  FutureWarningr*   r-   r   r   r   r9   r   )old_lossnew_loss	Estimatorest1est2r   r   r"   test_loss_deprecatedP  s   
rF  rC  c                 C   sN  | t jkrtj|d\}}ntj|d\}}| |dd}tt |||j	}|j
dks0J W d    n1 s:w   Y  | |dd}tt |||j	}|j
dksYJ W d    n1 scw   Y  t|| | |d dd}tt |||j	}|j
dksJ W d    n1 sw   Y  t||  dksJ d S )N)r   rT   )r   r   rd   )r   rA   r	   make_regressionr  r   r  r   r*   r   r   r   rf   absr  )rC  global_random_seedr-   r.   estcoef_same_seed_acoef_same_seed_bcoef_other_seedr   r   r"   test_sgd_random_statej  s(   

rN  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sBJ |jd t|| ksOJ dS )ziTest that data passed to validation callback correctly subsets.

    Non-regression test for #23255.
    r   rA  Tr   r   )r   r   r   r   )side_effect_ValidationScoreCallbackrT   rV   N)r   r   r   rh   r   rK   r   r   rP  setattrr*   	call_argsr  )	monkeypatchr-   r   r  r   r   mockX_valy_valr   r   r"   &test_validation_mask_correctly_subsets  s   
rW  )Nrc   )rU  r:  r   numpyrf   scipy.sparsesparser'   unittest.mockr   sklearn.utils._testingr   r   r   r   r   sklearnr   r	   r
   sklearn.baser   r   sklearn.svmr   sklearn.preprocessingr   r   r   r   sklearn.kernel_approximationr   sklearn.pipeliner   sklearn.exceptionsr   sklearn.model_selectionr   r   sklearn.linear_modelr   r  r   r   r#   rK   r$   rA   r?   rH   rG   rN   rP   rQ   r   r-   r   r   r   r  r(  r)  r*  r   r   rP  rR  	load_irisr   r  r	  true_result5ry   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rg   r  r  r
  r  r  r   r$  r-  r2  r3  r5  r7  filterwarningsr>  rK  rZ  r_  rb  rc  rd  rk  rx  rz  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r+  r2  r>  rF  rN  rW  r   r   r   r"   <module>   s   
.."














+


)




	
	




	
!
	









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