U
    _»{jáx  ã                   @   s^  d dl Z d dlZd dlZd dlmZ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mZ d dlmZmZmZ dZd	d
„ Zej dejejg¡ej dddg¡dd„ ƒƒZdd„ Z ej dddg¡dd„ ƒZ!dd„ Z"dd„ Z#ej ddddg¡dd„ ƒZ$d d!„ Z%ej 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,ej d0ddg¡ej d1ddg¡d2d3„ ƒƒZ-d4d5„ Z.d6d7„ Z/d8d9„ Z0ej d:ddg¡d;d<„ ƒZ1d=d>„ Z2d?d@„ Z3ej d:dA¡ej dBdA¡dCdD„ ƒƒZ4dEdF„ Z5ej dGddHg¡ej dIddg¡dJdK„ ƒƒZ6dLdM„ Z7ej dNddg¡ej dddg¡dOdP„ ƒƒZ8dS )Qé    N)ÚlinalgÚsparse)Ú	load_irisÚmake_regressionÚmake_sparse_uncorrelated)ÚLinearRegression)Ú_deprecate_normalizeÚ_preprocess_dataÚ_rescale_dataÚmake_dataset)ÚStandardScalerÚadd_dummy_feature)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalç�íµ ÷Æ°>c                  C   s¨   dgdgg} ddg}t ƒ }| | |¡ t|jdgƒ t|jdgƒ t| | ¡ddgƒ dgg} dg}t ƒ }| | |¡ t|jdgƒ t|jdgƒ t| | ¡dgƒ d S )Né   é   r   )r   Úfitr   Úcoef_Ú
intercept_Úpredict)ÚXÚYÚreg© r   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/linear_model/tests/test_base.pyÚtest_linear_regression   s    r   Úarray_constrÚfit_interceptTFc                 C   sø   t j |¡}d\}}| |j||fd�ƒ}|j|d�}d|j|d� }t|d�}	|	j|||d� |	j}
|	j}|	jj	|j	d fks‚t
‚t  |¡}|s”|nt|ƒ}|j| | }|j| | }t ||¡}|sÔt|
|ƒ n t|
|dd … ƒ t||d ƒ d S )N)é   é   )Úsizeç      ð?©r   ©Úsample_weightr   r   )ÚnpÚrandomÚRandomStateÚnormalÚuniformr   r   r   r   ÚshapeÚAssertionErrorZdiagr   ÚTr   Zsolver   )r   r   Úglobal_random_seedÚrngÚ	n_samplesÚ
n_featuresr   Úyr&   r   Zcoefs1Zinter1ÚWZX_augZXwZywZcoefs2r   r   r   Ú%test_linear_regression_sample_weights7   s&    

r5   c               	   C   sL   d} t  d¡}t d¡}tdd�}tjt| d�� | ||¡ W 5 Q R X d S )Nz7A sparse matrix was passed, but dense data is required.é
   T©Zpositive©Úmatch)	r   Úeyer'   Úonesr   ÚpytestÚraisesÚ	TypeErrorr   )Ú	error_msgr   r3   r   r   r   r   Ú.test_raises_value_error_if_positive_and_sparse^   s    


r@   zn_samples, n_features)r   é   )rA   r   c           	      C   sp   t j d¡}| | |¡}| | ¡}| | ¡d d }d}d}tƒ }| |||¡ | |||¡ | |||¡ d S )Nr   r   r   r#   g       @)r'   r(   r)   Úrandnr   r   )	r1   r2   r0   r   r3   Zsample_weights_OKZsample_weights_OK_1Zsample_weights_OK_2r   r   r   r   Ú9test_raises_value_error_if_sample_weights_greater_than_1dj   s    
rC   c                  C   s¾   t  ddgddgg¡} t  dddgdd	d
gg¡}t  ddg¡}tdd� | |¡}tƒ  | |¡}tdd� ||¡}tƒ  ||¡}|jj|jjks’t‚|jj|jjks¦t‚|jj|jjksºt‚d S )NgmâG©B‹Ø?gÊ\«^ºã?gñ‰L+KÕâ?gìf©iUÚ?g&Ï/)Â¶Ñ?g ö<E/Ÿæ?g²MdÅô­�?g".ÆáHwµ?g€%ü÷…|Ê?gÜ0Èeõ±æ?r   Fr$   )r'   Úarrayr   r   r   r,   r-   Úndim)ÚX2ZX3r3   Zlr2_without_interceptZlr2_with_interceptZlr3_without_interceptZlr3_with_interceptr   r   r   Útest_fit_intercept|   s    ÿrG   c               	   C   s0   d} d}t jt|d�� t| dƒ W 5 Q R X d S )NZwrongz Leave 'normalize' to its defaultr8   Ú	estimator)r<   r=   Ú
ValueErrorr   )Ú	normalizer?   r   r   r   Útest_error_on_wrong_normalize�   s    rK   rJ   Ú
deprecatedc              	      s¼   | dkrd}d }g }n(| }t }dg}| s4| d¡ n
| d¡ |d krrt ¡ � t dt ¡ t| dƒ}W 5 Q R X n:t |¡�‰ t| dƒ}W 5 Q R X t‡ fdd	„|D ƒƒs¬t	‚||ks¸t	‚d S )
NrL   Fz1.4zdefault valuezStandardScaler(ÚerrorrH   c                    s   g | ]}|t ˆ d  jƒk‘qS )r   )ÚstrÚmessage)Ú.0Úwarning©Úrecordr   r   Ú
<listcomp>¯   s     z,test_deprecate_normalize.<locals>.<listcomp>)
ÚFutureWarningÚappendÚwarningsÚcatch_warningsÚsimplefilterr   r<   ÚwarnsÚallr-   )rJ   ÚoutputÚexpectedZwarning_msgÚ
_normalizer   rR   r   Útest_deprecate_normalize—   s$    

r_   c                 C   sr   t j | ¡}d}t ||¡}| |¡}|| }tƒ }| || ¡ ¡ t	||j
|j ƒ t	| |¡| ¡  dƒ d S )Néd   r   )r'   r(   r)   r   r:   Úrandr   r   Úravelr   r   r   r   )r/   r0   Únr   Úbetar3   Úolsr   r   r   Útest_linear_regression_sparse³   s    
rf   c           
      C   sž   t j d¡}d}d}| ||¡}d||dk < t |¡}| |¡}t| d�}tf |Ž}tf |Ž}	| 	||¡ |	 	||¡ |j
t |	j
¡ksŒt‚t|j|	jƒ d S )Nr   éÈ   r   ç        gš™™™™™¹?r$   )r'   r(   r)   rB   r   Ú
csr_matrixra   Údictr   r   r   r<   Zapproxr-   r   r   )
r   r0   r1   r2   r   ZXcsrr3   ÚparamsZ	clf_denseZ
clf_sparser   r   r   Ú)test_linear_regression_sparse_equal_denseÂ   s    




rl   c                  C   s˜   t j d¡} t| d�\}}t  ||f¡j}|jd }tƒ }| ||¡ |j	jd|fksZt
‚| |¡}| ||¡ | |¡}tt  ||f¡j|dd� d S )Nr   ©Úrandom_stater   r   rA   ©Údecimal)r'   r(   r)   r   Úvstackr.   r,   r   r   r   r-   r   r   )r0   r   r3   r   r2   r   ÚY_predÚy_predr   r   r   Ú'test_linear_regression_multiple_outcomeÕ   s    


rt   c           	      C   s¦   t j | ¡}t|d�\}}t |¡}t  ||f¡j}|jd }t	ƒ }| 
||¡ |jjd|fksdt‚| |¡}| 
|| ¡ ¡ | |¡}tt  ||f¡j|dd� d S )Nrm   r   r   rA   ro   )r'   r(   r)   r   r   Z
coo_matrixrq   r.   r,   r   r   r   r-   r   rb   r   ©	r/   r0   r   r3   r   r2   re   rr   rs   r   r   r   Ú.test_linear_regression_sparse_multiple_outcomeæ   s    



rv   c                  C   s°   dgdgg} ddg}t dd�}| | |¡ t|jdgƒ t|jdgƒ t| | ¡ddgƒ dgg} dg}t dd�}| | |¡ t|jdgƒ t|jdgƒ t| | ¡dgƒ d S )Nr   r   Tr7   r   )r   r   r   r   r   r   r   )r   r3   r   r   r   r   Útest_linear_regression_positive÷   s    

rw   c           	      C   s°   t j | ¡}t|d�\}}t  ||f¡j}|jd }tdd�}| ||¡ |j	jd|fks^t
‚t  |j	dk¡srt
‚| |¡}| || ¡ ¡ | |¡}tt  ||f¡j|ƒ d S )Nrm   r   Tr7   r   rh   )r'   r(   r)   r   rq   r.   r,   r   r   r   r-   r[   r   rb   r   ru   r   r   r   Ú0test_linear_regression_positive_multiple_outcome  s    



rx   c                 C   sh   t j | ¡}t|d�\}}tdd�}| ||¡ tdd�}| ||¡ t  |j|j d ¡dksdt‚d S )Nrm   Tr7   Fr   gü©ñÒMbP?)	r'   r(   r)   r   r   r   Úmeanr   r-   )r/   r0   r   r3   r   Úregnr   r   r   Ú.test_linear_regression_positive_vs_nonpositive  s    

r{   c                 C   sº   t j | ¡}d}d}| ||¡}|d d …df d|d d …df   d|d d …df   d|d d …df   }tdd	�}| ||¡ td
d	�}| ||¡ t  |j|j d ¡dk s¶t‚d S )Nrg   é   r   r   r   rA   g      ø?Tr7   Fr   )	r'   r(   r)   ra   r   r   ry   r   r-   )r/   r0   r1   r2   r   r3   r   rz   r   r   r   Ú<test_linear_regression_positive_vs_nonpositive_when_positive,  s    L

r}   Úsparse_XÚuse_swc                 C   s  t j |¡}| dd¡}| dd¡}| d¡}| r>t |¡}n| ¡ }| ¡ }|r\| ¡ }	nd }	tƒ }
|
j	|||	d� | rŠt
| ¡ |ƒ n
t
||ƒ t
||ƒ |r¬t
|	|ƒ tdd�}
|
j	|||	d� | rÚt
| ¡ |ƒ nt j || ¡dksòt‚t
||ƒ |�rt
|	|ƒ d S )Nr6   é   r   r%   F)Zcopy_Xgáz®GáÚ?)r'   r(   r)   rB   ra   r   ri   Úcopyr   r   r   Útoarrayr   Znormr-   )r~   r   r/   r0   Zoriginal_X_dataZoriginal_y_dataZorginal_sw_datar   r3   r&   r   r   r   r   Útest_inplace_data_preprocessing=  s6    






rƒ   c               	   C   s2  t  d¡} |  dtj d¡i¡}tddƒD ]@}tj d¡}d|d d…< |dkr^| jj|dd�}||t	|ƒ< q*d	}t
ƒ }t jt|d
��2 | |jd d …dd…f |jd d …df ¡ W 5 Q R X | jj|d dd�|d< t|dƒsât‚t ¡ �> t dt¡ | |jd d …dd…f |jd d …df ¡ W 5 Q R X d S )NZpandasÚ0r6   r   r|   r   é   )Z
fill_valuez+pandas.DataFrame with sparse columns found.r8   r   rA   r   rM   )r<   ZimportorskipZ	DataFramer'   r(   rB   ÚrangeZarraysZSparseArrayrN   r   rZ   ÚUserWarningr   ZilocÚhasattrr-   rW   rX   rY   )ÚpdZdfÚcolZarrÚmsgr   r   r   r   Ú2test_linear_regression_pd_sparse_dataframe_warningu  s"    
6
rŒ   c                 C   sr  t j | ¡}d}d}| ||¡}| |¡}t j|dd�}t j|dd�t  |jd ¡ }t j|dd�}t||ddd�\}	}
}}}t	|t  
|¡ƒ t	|dƒ t	|t  |¡ƒ t	|	|ƒ t	|
|ƒ t||ddd�\}	}
}}}t	||ƒ t	||ƒ t	|t  |¡ƒ t	|	|| ƒ t	|
|| ƒ t||ddd�\}	}
}}}t	||ƒ t	||ƒ t	||ƒ t	|	|| | ƒ t	|
|| ƒ d S )Nrg   r   r   ©ÚaxisF©r   rJ   T)r'   r(   r)   ra   ry   ÚstdÚsqrtr,   r	   r   Úzerosr;   )r/   r0   r1   r2   r   r3   Úexpected_X_meanÚexpected_X_scaleÚexpected_y_meanÚXtÚytÚX_meanÚy_meanÚX_scaler   r   r   Útest_preprocess_data‘  sR    
   ÿ


   ÿ

   ÿ


r›   c                 C   sò   t j | ¡}d}d}d}| ||¡}| ||¡}t j|dd�}|t |¡g}|D ]œ}t||ddd�\}	}
}	}}	t|t  	|¡ƒ t|
|ƒ t||ddd�\}	}
}	}}	t||ƒ t|
|| ƒ t||ddd�\}	}
}	}}	t||ƒ t|
|| ƒ qPd S )	Nrg   rA   r   r   r�   Fr�   T)
r'   r(   r)   ra   ry   r   Z
csc_matrixr	   r   r’   )r/   r0   r1   r2   Z	n_outputsr   r3   r•   ÚargsÚ_r—   r™   r   r   r   Ú test_preprocess_data_multioutput·  s8       ÿ
   ÿ

rž   Ú	is_sparsec                 C   sâ  t j |¡}d}d}| ||¡}d||dk < |d d …df  d9  < d|d d …df< d|d d …d	f< | |¡}| |¡}t j|d|d
�}t j|d|d
�}	t j||dd�}
t j||
 d |dd�}|dt  |j¡j k }t|ddddgƒ t  	|¡t  	| 
¡ ¡ }d||< | �rt |¡}t||dd|d�\}}}}}t||ƒ t||	ƒ t|t  |¡ƒ | �rrt| ¡ | ¡ ƒ nt||| ƒ t|||	 ƒ t||dd|d�\}}}}}t||ƒ t||	ƒ t||ƒ | �ræt| ¡ | ¡ | ƒ nt||| | ƒ | �r’tdd�j||d�}t| |¡ ¡ d d …d d…f t  	| 
¡ ¡ | ¡ d d …d d…f ƒ t| |¡ ¡ d d …dd …f | ¡ d d …dd …f ƒ n>tdd�j||d�}t|j|ƒ t| |¡t  	| 
¡ ¡ |ƒ t|||	 ƒ d S )Nrg   r|   rh   ç      à?r   r6   r#   r   rA   )rŽ   Úweights)r¡   rŽ   r   TF)r   rJ   r&   )Z	with_meanr%   )r'   r(   r)   ra   ZaverageZfinfoÚdtypeÚepsr   r‘   Úsumr   ri   r	   r   r;   r‚   r   r   Z	transformZmean_)rŸ   r/   r0   r1   r2   r   r3   r&   r“   r•   ZX_sample_weight_avgZX_sample_weight_varZconstant_maskr”   r–   r—   r˜   r™   rš   Zscalerr   r   r   Útest_preprocess_data_weightedÓ  sˆ    


  ÿ
û

û


*þ ÿþr¥   c                 C   s¦  t j | ¡}d}d}tj||d|d�}| ¡ }| |¡}| ¡ }t j|dd�t  |j	d ¡ }t
||ddd�\}}	}
}}t|
t  |¡ƒ t|dƒ t|t  |¡ƒ t|j|ƒ t|	|ƒ t
||d	dd�\}}	}
}}t|
t j|dd�ƒ t|t j|dd�ƒ t|t  |¡ƒ t|j|ƒ t|	|t j|dd� ƒ t
||d	d	d�\}}	}
}}t|
t j|dd�ƒ t|t j|dd�ƒ t||ƒ t|j|| ƒ t|	|t j|dd� ƒ d S )
Nrg   r   r    )Zdensityrn   r   r�   Fr�   T)r'   r(   r)   r   ra   Ztolilr‚   r�   r‘   r,   r	   r   r’   r;   ÚAry   )r/   r0   r1   r2   r   r3   ZXAr”   r–   r—   r˜   r™   rš   r   r   r   Ú#test_sparse_preprocess_data_offsets<  sR    
   ÿ

   ÿ   ÿ
r§   c                  C   sJ   t ƒ \} }d| | dk < t | ¡}t||dƒ\}}}}}| ¡ dksFt‚d S )Nrh   ç      @TÚcsr)r   r   ri   r	   Z	getformatr-   )r   r3   r©   Zcsr_r�   r   r   r   Útest_csr_preprocess_datab  s
    

rª   ©TFÚto_copyc                 C   s¢   t ƒ \}}d||dk < | r$t |¡}t||d|dd�\}}}}}|r^| r^t |j|j¡ržt‚n@|rtt ||¡ržt‚n*| rŽt |j|j¡sžt‚nt ||¡sžt‚d S )Nrh   r¨   TF)r�   Zcheck_input)r   r   ri   r	   r'   Zmay_share_memoryÚdatar-   )rŸ   r¬   r   r3   ZX_Zy_r�   r   r   r   Ú#test_preprocess_copy_data_no_checksk  s    

r®   c                  C   sÎ  t j | ¡}d}d}| ||¡}| |¡}t j|t jd�}t j|t jd�}t j|t jd�}t j|t jd�}	dD �]X}
dD �]L}t|||
|d�\}}}}}t||	|
|d�\}}}}}t||	|
|d�\}}}}}t|||
|d�\}}}}}|jt jksöt	‚|jt jk�st	‚|jt jk�st	‚|jt jk�s,t	‚|jt jk�s>t	‚|jt jk�sPt	‚|jt jk�sbt	‚|jt jk�stt	‚|jt jk�s†t	‚|jt jk�s˜t	‚|jt jk�sªt	‚|jt jk�s¼t	‚|jt jk�sÎt	‚|jt jk�sàt	‚|jt jk�sòt	‚|jt jk�st	‚|jt jk�st	‚|jt jk�s(t	‚|jt jk�s:t	‚|jt jk�sLt	‚|jt jk�s^t	‚|jt jk�spt	‚|jt jk�s‚t	‚|	jt jk�s”t	‚t
||ƒ t
||ƒ t
||ƒ t
||ƒ t
||ƒ qxqnd S )Nrg   r   ©r¢   r«   r�   )r'   r(   r)   ra   ZasarrayÚfloat32Úfloat64r	   r¢   r-   r   ) r/   r0   r1   r2   r   r3   ÚX_32Úy_32ÚX_64Úy_64r   rJ   ZXt_32Zyt_32Z	X_mean_32Z	y_mean_32Z
X_scale_32ZXt_64Zyt_64Z	X_mean_64Z	y_mean_64Z
X_scale_64ZXt_3264Zyt_3264ZX_mean_3264Zy_mean_3264ZX_scale_3264ZXt_6432Zyt_6432ZX_mean_6432Zy_mean_6432ZX_scale_6432r   r   r   Útest_dtype_preprocess_data€  s€    


üüüü



r¶   Ú	n_targetsr   Úsparse_datac                 C   s&  t j |¡}d}d}d| |¡ }| ||¡}| d krB| |¡}n| || ¡}t  |¡}	||	d d …t jf  }
| d kr€||	 }n||	d d …t jf  }|rÊt |¡}| d krÀt | dd¡¡}n
t |¡}t	|||ƒ\}}}t
||	ƒ |�r| ¡ }| ¡ }| d k�r| ¡ }t
||
ƒ t
||ƒ d S )Nrg   r   r#   éÿÿÿÿr   )r'   r(   r)   ra   r‘   Znewaxisr   ri   Zreshaper
   r   r‚   rb   )r·   r¸   r/   r0   r1   r2   r&   r   r3   Zexpected_sqrt_swZexpected_rescaled_XZexpected_rescaled_yZ
rescaled_XZ
rescaled_yZsqrt_swr   r   r   Útest_rescale_dataÎ  s6    






rº   c                  C   s¸  t ƒ } | j tj¡}| j tj¡}t |¡}tj|j	tjd�}| j tj
¡}| j tj
¡}t |¡}tj|j	tj
d�}t|||ƒ\}	}
t|||ƒ\}}
|	 ¡ \}}}
}
| ¡ \}}}
}
|\}}
}
|\}}
}
|jtjksÚt‚|jtj
ksêt‚t||td� t|||ƒ\}}
t|||ƒ\}}
| ¡ \}}}
}
| ¡ \}}}
}
|\}}
}
|\}}
}
|jtjk�s^t‚|jtj
k�spt‚t||td� t||td� t||ƒ t||ƒ t||ƒ t||ƒ d S )Nr¯   ©Úrtol)r   r­   Zastyper'   r°   Útargetr   ri   Zaranger"   r±   r   Z_next_pyr¢   r-   r   r¼   r   )Zirisr²   r³   ZX_csr_32Zsample_weight_32r´   rµ   ZX_csr_64Zsample_weight_64Z
dataset_32r�   Z
dataset_64Zxi_32Zyi_32Zxi_64Zyi_64Z
xi_data_32Z
xi_data_64Zdatasetcsr_32Zdatasetcsr_64Zxicsr_32Zyicsr_32Zxicsr_64Zyicsr_64Zxicsr_data_32Zxicsr_data_64r   r   r   Útest_fused_types_make_datasetù  s@    








r¾   ÚsparseXc                 C   sð  t j |¡}d\}}| ||¡}| |¡}| r8t |¡}t|d�}tf |Žj||dd�}	|	j	 
¡ }
|rl|	j}t  |¡}|	j|||d� t|	j	|
dd� |r¦t|	j|ƒ d}|	j|||d� t|	j	|
dd� |rÚt|	j|ƒ |jdd	|jd
 d�}|	j|||d�}	|	j	 
¡ }
|�r|	j}|	j||t j| d� t|	j	|
| �r>dndd� |�rXt|	j|ƒ | 
¡ }d
|dd…< |dd…  d9  < |	j|||d� |	j	 
¡ }|�r¦|	j}|	j|dd… |dd… |dd… d� |�rÜ| �sÜn"t|	j	|dd� |�rþt|	j|ƒ | �r$tj||d|d	 … gdd�}nt j||d|d	 … gd
d�}t  ||d|d	 … g¡}| 
¡ }|d|d	 …  d	9  < t j||d|d	 … gd
d�}tf |Žj|||d�}tf |Žj|||d�}t|j	|j	dd� |�rìt|j|jƒ dS )zõTest that the impact of sample_weight is consistent.

    Note that this test is stricter than the common test
    check_sample_weights_invariance alone and also tests sparse X.
    It is very similar to test_enet_sample_weight_consistency.
    )r6   r!   r$   Nr%   r   r»   g     À^@g{®Gáz„?r   r   )ÚlowÚhighr"   gñhãˆµøä>éûÿÿÿiè  Zcsc)Úformatr�   )r'   r(   r)   ra   r   ri   rj   r   r   r   r�   r   Z	ones_liker   r+   r,   Úpirq   Zconcatenate)r¿   r   r/   r0   r1   r2   r   r3   rk   r   ZcoefZ	interceptr&   Zsample_weight_0Zcoef_0Zintercept_0rF   Úy2Zsample_weight_1Zsample_weight_2Zreg1Zreg2r   r   r   Ú0test_linear_regression_sample_weight_consistency&  st    






(  ÿrÆ   )9rW   Únumpyr'   r<   Zscipyr   r   Zsklearn.datasetsr   r   r   Zsklearn.linear_modelr   Zsklearn.linear_model._baser   r	   r
   r   Zsklearn.preprocessingr   r   Zsklearn.utils._testingr   r   r   r¼   r   ÚmarkZparametrizerD   ri   r5   r@   rC   rG   rK   r_   rf   rl   rt   rv   rw   rx   r{   r}   rƒ   rŒ   r›   rž   r¥   r§   rª   r®   r¶   rº   r¾   rÆ   r   r   r   r   Ú<module>   sd   %


6&
h&	N)-