U
    9%ex                     @   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/Darija-Ai-API/env/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st
t |}|s|nt|}|j| | }|j| | }t||}|st|
| 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st|jj|jjkst|jj|jjkstd S )NgmGB?g\^?gL+K?gfiU?g&/)¶?g <E/?gMd?g".Hw?g%|?g0e?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 st	||kst	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 )Nd   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st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   gMbP?)	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 st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 | rt
| | n
t
|| t
|| |rt
|	| tdd}
|
j	|||	d | rt
| | nt j|| dkstt
|| |rt
|	| d S )Nr6      r   r%   F)Zcopy_Xgz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st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|| | rt| | |  nt||| |  | rt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dtypeZ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rtn@|rtt||rtn*| rt|j|jstnt||st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st	|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st	|jt jkst	|jt jkst	|jt jkst	|jt jkst	|jt jkst	|jt jkst	|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st	|	jt jkst	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  }|rt|}| d krt|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st|jtj
kst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 |rt|	j| d}|	j|||d t|	j	|
dd |rt|	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| sn"t|	j	|dd |rt|	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 |rt|j|j dS )zTest 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{Gz?r   r   )lowhighr"   gh㈵>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)-