o
    \ii                     @   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 d dlmZ d dlmZmZmZ d dlmZmZmZmZ d	Zd
d Zejddge 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gejdedd Z%d d! Z&ejd"ed#d$ Z'd%d& Z(d'd( Z)d)d* Z*d+d, Z+ejddge ejd-ddgd.d/ Z,d0d1 Z-d2d3 Z.ejddge d4d5 Z/ejddge d6d7 Z0ejd8ed9d: Z1ejded;d< Z2ejddge ejd=d>d?d@ Z3dAdB Z4ejdCddDgejddge dEdF Z5ejdedGdH Z6ejdIg dJejddgdKdL eD  ejdddgdMdN Z7dS )O    N)linalgsparse)	load_irismake_regressionmake_sparse_uncorrelated)LinearRegression)_preprocess_data_rescale_datamake_dataset)add_dummy_feature)assert_allcloseassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERSư>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   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_base.pytest_linear_regression!   s   r   sparse_containerfit_interceptTFc                 C   s  t j|}d\}}|j||fd}| d ur| |}|j|d}d|j|d }t|dd}	|	j|||d |	j}
|	j}|	jj	|j	d fksHJ t 
|}|sQ|nt|}|j| | }|j| | }t||}|srt|
| d S t|
|dd   t||d  d S )	N)      )size      ?gؗҜ<)r!   tolsample_weightr   r   )nprandomRandomStatenormaluniformr   r   r   r   shapediagr   Tr   solver   )r    r!   global_random_seedrng	n_samples
n_featuresr   yr(   r   coefs1inter1WX_augXwywcoefs2r   r   r   %test_linear_regression_sample_weights9   s*   
r>   c                  C   sb   d} t d}td}tdd}tjt| d ||| W d    d S 1 s*w   Y  d S )Nz9Sparse data was passed for X, but dense data is required.
   Tpositivematch)	r   eyer)   onesr   pytestraises	TypeErrorr   )	error_msgr   r6   r   r   r   r   .test_raises_value_error_if_positive_and_sparseb   s   


"rJ   zn_samples, n_features)r      )rK   r   c           	      C   sp   t jd}|| |}|| }|| d d }d}d}t }|||| |||| |||| d S )Nr   r   r   r%   g       @)r)   r*   r+   randnr   r   )	r4   r5   r3   r   r6   sample_weights_OKsample_weights_OK_1sample_weights_OK_2r   r   r   r   9test_raises_value_error_if_sample_weights_greater_than_1dn   s   
rP   c                  C   s   t ddgddgg} t g dg dg}t ddg}tdd	| |}t | |}tdd	||}t ||}|jj|jjksGJ |jj|jjksQJ |jj|jjks[J d S )
NgmGB?g\^?gL+K?gfiU?)g&/)¶?g <E/?gMd?)g".Hw?g%|?g0e?r   Fr!   )r)   arrayr   r   r   r.   ndim)X2X3r6   lr2_without_interceptlr2_with_interceptlr3_without_interceptlr3_with_interceptr   r   r   test_fit_intercept   s   rZ   c                 C   sr   t j| }d}t||}||}|| }t }|||  t	||j
|j  t	|||  d d S )Nd   r   )r)   r*   r+   r   rD   randr   r   ravelr   r   r   r   )r2   r3   nr   betar6   olsr   r   r   test_linear_regression_sparse   s   
ra   csr_containerc                 C   s   t jd}d}d}|||}d||dk < ||}||}t| d}tdi |}	tdi |}
|	|| |
|| |	jt	
|
jksIJ t|	j|
j d S )Nr      r           g?rQ   r   )r)   r*   r+   rL   r\   dictr   r   r   rF   approxr   r   )r!   rb   r3   r4   r5   r   Xcsrr6   params	clf_dense
clf_sparser   r   r   )test_linear_regression_sparse_equal_dense   s   

rk   c                  C   s   t jd} t| d\}}t ||fj}|jd }t }||| |j	jd|fks-J |
|}||| |
|}tt ||fj|dd d S )Nr   random_stater   r   rK   decimal)r)   r*   r+   r   vstackr0   r.   r   r   r   r   r   )r3   r   r6   r   r5   r   Y_predy_predr   r   r   'test_linear_regression_multiple_outcome   s   


rs   coo_containerc           
      C   s   t j| }t|d\}}||}t ||fj}|jd }t }||| |j	jd|fks1J |
|}|||  |
|}	tt |	|	fj|dd d S )Nrl   r   r   rK   rn   )r)   r*   r+   r   rp   r0   r.   r   r   r   r   r]   r   )
r2   rt   r3   r   r6   r   r5   r`   rq   rr   r   r   r   .test_linear_regression_sparse_multiple_outcome   s   


ru   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   Tr@   r   )r   r   r   r   r   r   r   )r   r6   r   r   r   r   test_linear_regression_positive   s   

rv   c           	      C   s   t j| }t|d\}}t ||fj}|jd }tdd}||| |j	jd|fks/J t 
|j	dks9J ||}|||  ||}tt ||fj| d S )Nrl   r   Tr@   r   rd   )r)   r*   r+   r   rp   r0   r.   r   r   r   allr   r]   r   )	r2   r3   r   r6   r   r5   r`   rq   rr   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s2J d S )Nrl   Tr@   Fr   gMbP?)r)   r*   r+   r   r   r   meanr   )r2   r3   r   r6   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[J d S )Nrc      r   r   r   rK   g      ?Tr@   Fr   )r)   r*   r+   r\   r   r   ry   r   )r2   r3   r4   r5   r   r6   r   rz   r   r   r   <test_linear_regression_positive_vs_nonpositive_when_positive  s   L

"r}   use_swc                 C   s  t j|}|dd}|dd}|d}| d ur | |}n| }| }|r/| }	nd }	t }
|
j|||	d | d urHt|	 | nt|| t|| |rYt|	| tdd}
|
j|||	d | d urrt|	 | nt j
|| dks~J t|| |rt|	| d S d S )Nr?      r   r'   F)copy_XgzG?)r)   r*   r+   rL   r\   copyr   r   r   toarrayr   norm)r    r~   r2   r3   original_X_dataoriginal_y_dataorginal_sw_datar   r6   r(   r   r   r   r   test_inplace_data_preprocessing  s8   







r   c                  C   s\  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
 ||jd d ddf |jd d df  W d    n1 scw   Y  | jj|d dd|d< t|ds{J t % tdt ||jd d ddf |jd d df  W d    d S 1 sw   Y  d S )Npandas0r?   r   r|   r      )
fill_valuez+pandas.DataFrame with sparse columns found.rB   r   rK   r   error)rF   importorskip	DataFramer)   r*   rL   rangearraysSparseArraystrr   warnsUserWarningr   ilochasattrwarningscatch_warningssimplefilter)pddfcolarrmsgr   r   r   r   2test_linear_regression_pd_sparse_dataframe_warningW  s&   
.
."r   c                 C   s   t j| }d}d}|||}||}t j|dd}t j|dd}t||dd\}}	}
}}t|
t | t|d t|t | t|| t|	| t||dd\}}	}
}}t|
| t|| t|t | t|||  t|	||  d S )Nrc   r   r   axisFrQ   T)	r)   r*   r+   r\   ry   r   r   zerosrE   )r2   r3   r4   r5   r   r6   expected_X_meanexpected_y_meanXtytX_meany_meanX_scaler   r   r   test_preprocess_datas  s&   





r   c                 C   s   t j| }d}d}d}|||}|||}t j|dd}|d ur'||}t||dd\}	}
}	}}	t|t | t|
| t||dd\}	}
}	}}	t|| t|
||  d S )	Nrc   rK   r   r   r   FrQ   T)r)   r*   r+   r\   ry   r   r   r   )r2   r    r3   r4   r5   	n_outputsr   r6   r   _r   r   r   r   r    test_preprocess_data_multioutput  s   

r   c                 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|g d t 	|t 	|
  }d||< | d ur| |}t||d|d\}}}}}t|| t||	 t|t | | d urt| |  nt|||  t|||	  d S )Nrc   r|   rd         ?r   r?   r%   r   rK   )r   weights)r   r   )r   r   r   r   r   T)r!   r(   )r)   r*   r+   r\   averagefinfodtypeepsr   sqrtsumr   r   rE   r   )r    r2   r3   r4   r5   r   r6   r(   r   r   X_sample_weight_avgX_sample_weight_varconstant_maskexpected_X_scaler   r   r   r   r   r   r   r   test_preprocess_data_weighted  sF   



r   lil_containerc                 C   s  t j| }d}d}tj||d|d}||}||}| }t||dd\}}	}
}}t|
t | t|d t|t 	| t| | t|	| t||dd\}}	}
}}t|
t j
|dd	 t|t j
|dd	 t|t 	| t| | t|	|t j
|dd	  d S )
Nrc   r   r   )densityrm   FrQ   r   Tr   )r)   r*   r+   r   r\   r   r   r   r   rE   ry   )r2   r   r3   r4   r5   r   r6   XAr   r   r   r   r   r   r   r   #test_sparse_preprocess_data_offsets  s&   


r   c                 C   sH   t  \}}d||dk < | |}t||dd\}}}}}|jdks"J d S )Nrd         @TrQ   csr)r   r   format)rb   r   r6   r   csr_r   r   r   r   test_csr_preprocess_data  s
   
r   to_copyTFc                 C   s   t  \}}d||dk < | d ur| |}t||d|dd\}}}}}|r3| d ur3t|j|jr1J d S |r?t||r=J d S | d urOt|j|jsMJ d S t||sWJ d S )Nrd   r   TF)r!   r   check_input)r   r   r)   may_share_memorydata)r    r   r   r6   X_y_r   r   r   r   #test_preprocess_copy_data_no_checks  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 ]}
t|||
d\}}}}}t||	|
d\}}}}}t||	|
d\}}}}}t|||
d\}}}}}|jt jksrJ |jt jkszJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jksJ |jt jks'J |	jt jks0J t	|| t	|| t	|| t	|| t	|| q7d S )Nrc   r   r   r   rQ   )
r)   r*   r+   r\   asarrayfloat32float64r   r   r   )r2   r3   r4   r5   r   r6   X_32y_32X_64y_64r!   Xt_32yt_32	X_mean_32	y_mean_32
X_scale_32Xt_64yt_64	X_mean_64	y_mean_64
X_scale_64Xt_3264yt_3264X_mean_3264y_mean_3264X_scale_3264Xt_6432yt_6432X_mean_6432y_mean_6432X_scale_6432r   r   r   test_dtype_preprocess_data  sx   





r   	n_targetsr   c                 C   s$  t j|}d}d}d|| }|||}| d u r!||}n||| }t |}	||	d d t jf  }
| d u r@||	 }n||	d d t jf  }|d urd||}| d u r`||dd}n||}t|||\}}}t||	 |d ur|	 }|	 }| d u r|
 }t||
 t|| d S )Nrc   r   r%   r   )r)   r*   r+   r\   r   newaxisreshaper	   r   r   r]   )r   r    r2   r3   r4   r5   r(   r   r6   expected_sqrt_swexpected_rescaled_Xexpected_rescaled_y
rescaled_X
rescaled_ysqrt_swr   r   r   test_rescale_data^  s6   



r   c                 C   s  t  }|jtj}|jtj}| |}tj|jtjd}|jtj}|jtj}| |}tj|jtjd}	t	|||\}
}t	|||	\}}|

 \}}}}|
 \}}}}|\}}}|\}}}|jtjkskJ |jtjkssJ t||td t	|||\}}t	|||	\}}|
 \}}}}|
 \}}}}|\}}}|\}}}|jtjksJ |jtjksJ t||td t||td t|| t|| t|| t|| d S )Nr   rtol)r   r   astyper)   r   targetaranger$   r   r
   _next_pyr   r   r   r   )rb   irisr   r   X_csr_32sample_weight_32r   r   X_csr_64sample_weight_64
dataset_32r   
dataset_64xi_32yi_32xi_64yi_64
xi_data_32
xi_data_64datasetcsr_32datasetcsr_64xicsr_32yicsr_32xicsr_64yicsr_64xicsr_data_32xicsr_data_64r   r   r   test_fused_types_make_dataset  s@   






r  X_shape))r?   r#   )r?      )r[   r[   c                 C   s$   g | ]}t j|t jjd ddqS )z/Known to fail for CSR arrays, see issue #30131.)reason)marks)rF   parammarkxfail).0	containerr   r   r   
<listcomp>  s    r  c                 C   s  t j|}| \}}|||}||}|dur||}t|d}	tdi |	j||dd}
|
j }|r9|
j	}t 
|}|
j|||d t|
j|dd |rVt|
j	| d}|
j|||d t|
j|dd |rpt|
j	| |jdd|jd	 d
}|
j|||d}
|
j }|r|
j	}|
j||t j| d t|
j||du rdndd |rt|
j	| | }d	|dd< |dd  d9  < |
j|||d |
j }|r|
j	}|
j|dd |dd |dd d t|
j|dd |rt|
j	| |du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di |	j|||d}tdi |	j|||d}t|j|jdd |rwt|j	|j	 dS dS )zTest that the impact of sample_weight is consistent.

    Note that this test is stricter than the common test
    check_sample_weight_equivalence alone and also tests sparse X.
    It is very similar to test_enet_sample_weight_consistency.
    NrQ   r'   r   r   g     ^@g{Gz?r   r   )lowhighr$   gh㈵>i  csc)r   r   r   )r)   r*   r+   r\   re   r   r   r   r   r   	ones_liker   r-   r.   pir   rp   concatenate)r  r    r!   r2   r3   r4   r5   r   r6   rh   r   coef	interceptr(   sample_weight_0coef_0intercept_0rT   y2sample_weight_1sample_weight_2reg1reg2r   r   r   0test_linear_regression_sample_weight_consistency  sp   





(
 r+  )8r   numpyr)   rF   scipyr   r   sklearn.datasetsr   r   r   sklearn.linear_modelr   sklearn.linear_model._baser   r	   r
   sklearn.preprocessingr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   r   r   r   r  parametrizer>   rJ   rP   rZ   ra   rk   rs   ru   rv   rx   r{   r}   r   r   r   r   r   r   r   r   r   r   r  r+  r   r   r   r   <module>   s~   '

6

9

	I)
-