o
    tBhb                     @   sx  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 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 ejd 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%dd Z&dd  Z'd!d" Z(e j !d#g d$e j !d%ddgd&d' Z)dRd(d)Z*e j +d*e j !d#ddge j !dddgd+d, Z,dRd-d.Z-dRd/d0Z.d1d2 Z/dRd3d4Z0d5d6 Z1d7d8 Z2d9d: Z3d;d< Z4d=d> Z5e j !d?ddgd@dA Z6dBdC Z7dDdE Z8e j !d?dFe j !dGdFdHdI Z9dJdK Z:e j !dLddMgdNdO Z;dPdQ Z<dS )S    N)sparse)linalg)assert_array_almost_equal)assert_array_equal)assert_allclose)check_random_state)LinearRegression)_deprecate_normalize)_preprocess_data)_rescale_data)make_dataset)make_sparse_uncorrelated)make_regression)	load_iris)StandardScaler)add_dummy_featureư>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/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_base.pytest_linear_regression"   s   r   array_constrfit_interceptTFc                 C   s  t jd}d\}}| |j||fd}|j|d}d|j|d }t|d}|j|||d |j}	|j}
|jj	|j	d fksAJ |
||dksKJ t |}|sT|nt|}|j| | }|j| | }t||}|sut|	| d S t|	|dd   t|
|d  d S )	Nr   )      )size      ?r    sample_weightr         ?)nprandomRandomStatenormaluniformr   r   r   r   shapescorediagr   Tr   solver   )r   r    rng	n_samples
n_featuresr   yr'   r   coefs1inter1WX_augXwywcoefs2r   r   r   %test_linear_regression_sample_weights:   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 )Nz7A sparse matrix was passed, 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_sparse`   s   


"rJ   c            
      C   s   ddg} ddg}t | |D ]4\}}t||}t|}t|d d }d}d}t }	|	||| |	||| |	||| qd S )Nr      r   r$   g       @)zipr3   randnr   r   )

n_samplessn_featuressr4   r5   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_1dl   s   
rS   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   Fr%   )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   r\   c                  C   sL   d} d}d}t jt|d t| |d W d    d S 1 sw   Y  d S )NwrongTz Leave 'normalize' to its defaultrB   	estimator)rF   rG   
ValueErrorr	   )	normalizedefaultrI   r   r   r   test_error_on_wrong_normalize   s   "rb   r`   )TF
deprecatedra   c                    s  |s"| dkr|}d }g }n*| }t }dg}| s|d n|d n|r7| dkr1|}t }g d}n| }d }g }|d u r\t  tdt  t| |d}W d    n1 sVw   Y  n(t| t| |d}W d    n1 srw   Y  t fdd	|D sJ ||ksJ d S )
Nrc   1.2zdefault valueStandardScaler()Falserd   re   errorr^   c                    s   g | ]}|t  d  jv qS r   )strmessage).0warningrecordr   r   
<listcomp>   s    z,test_deprecate_normalize.<locals>.<listcomp>)	FutureWarningappendwarningscatch_warningssimplefilterr	   rF   warnsall)r`   ra   outputexpectedwarning_msg
_normalizer   rm   r   test_deprecate_normalize   s<   

r{   c                 C   s   t | } tdD ]:}d}t||}| |}||d d tjf  }t }|||	  t
||j|j  t
|||	  d qd S )Nr?   d   r   )r   ranger   rD   randr)   newaxisr   r   ravelr   r   r   r   )random_stateinr   betar6   olsr   r   r   test_linear_regression_sparse   s   
r   z!ignore:'normalize' was deprecatedc                 C   s   t d}d}d}|||}d||dk < t|}||}t| |d}tdi |}	tdi |}
|	|| |
|| |	jt	
|
jksIJ t|	j|
j d S )Nr      r           g?)r`   r    r   )r   rM   r   
csr_matrixr~   dictr   r   r   rF   approxr   r   )r`   r    r3   r4   r5   r   Xcsrr6   params	clf_dense
clf_sparser   r   r   )test_linear_regression_sparse_equal_dense   s   

r   c                 C   s   t | d\}}t||fj}|jd }t }||| |jjd|fks'J ||}||| ||}t	t||fj|dd d S Nr   r   r   rK   )decimal)
r   r)   vstackr1   r.   r   r   r   r   r   )r   r   r6   r   r5   r   Y_predy_predr   r   r   'test_linear_regression_multiple_outcome   s   


r   c                 C   s   t | } t| d\}}t|}t||fj}|jd }t }|	|| |j
jd|fks0J ||}|	||  ||}tt||fj|dd d S r   )r   r   r   
coo_matrixr)   r   r1   r.   r   r   r   r   r   r   r   r   r6   r   r5   r   r   r   r   r   r   .test_linear_regression_sparse_multiple_outcome   s   



r   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   

r   c                 C   s   t | } t| d\}}t||fj}|jd }tdd}||| |jjd|fks-J t	|jdks7J |
|}|||  |
|}tt||fj| d S )Nr   r   Tr@   r   r   )r   r   r)   r   r1   r.   r   r   r   rv   r   r   r   r   r   r   r   0test_linear_regression_positive_multiple_outcome$  s   



r   c                  C   s\   t dd\} }tdd}|| | tdd}|| | t|j|j d dks,J d S )Nr   r   Tr@   Fr   gMbP?)r   r   r   r)   meanr   )r   r6   r   regnr   r   r   .test_linear_regression_positive_vs_nonpositive5  s   

"r   c                  C   s   d} d}t | |}|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 sUJ d S )Nr      r   r   r   rK   g      ?Tr@   Fr   )r3   r~   r   r   r)   r   r   )r4   r5   r   r6   r   r   r   r   r   <test_linear_regression_positive_vs_nonpositive_when_positiveA  s   L

"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   rg   )rF   importorskip	DataFramer)   r*   rM   r}   arraysSparseArrayri   r   ru   UserWarningr   ilochasattrrr   rs   rt   )pddfcolarrmsgr   r   r   r   2test_linear_regression_pd_sparse_dataframe_warningQ  s&   
.
."r   c                  C   sf  d} d}t | |}t | }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 )Nr   r   r   axisFr    r`   T)r3   r~   r)   r   stdsqrtr.   r
   r   zerosrE   )r4   r5   r   r6   expected_X_meanexpected_X_scaleexpected_y_meanXtytX_meany_meanX_scaler   r   r   test_preprocess_datam  s>   








r   c            
      C   s   d} d}d}t | |}t | |}tj|dd}|t|g}|D ]N}t||ddd\}}}}	}t|	t| t|| t||ddd\}}}}	}t|	| t|||	  t||ddd\}}}}	}t|	| t|||	  q"d S )	Nr   rK   r   r   r   Fr   T)	r3   r~   r)   r   r   
csc_matrixr
   r   r   )
r4   r5   	n_outputsr   r6   r   args_r   r   r   r   r    test_preprocess_data_multioutput  s,   


r   	is_sparsec                 C   s  d}d}t ||}d||dk < |d d df  d9  < d|d d df< d|d d d	f< t |}t |}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||
< | rt
|}t||dd|d\}}}}}t|| t|| t|t| | rt| |  nt|||  t|||  t||dd|d\}}}}}t|| t|| t|| | rt| | |  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 )Nr   r   r   r(   r   r?   r$   r   rK   )r   weights)r   r   )r   r   r   r   r   TF)r    r`   r'   )	with_meanr&   )r3   r~   r)   averagefinfodtypeepsr   r   sumr   r   r
   r   rE   toarrayr   r   	transformmean_)r   r4   r5   r   r6   r'   r   r   X_sample_weight_avgX_sample_weight_varconstant_maskr   r   r   r   r   r   scalerr   r   r   test_preprocess_data_weighted  s   







*2r   c                  C   s  d} d}t j| |dd}| }t| }| }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 )
Nr   r   r(   )densityr   r   Fr   T)r   r~   tolilr3   r   r)   r   r   r.   r
   r   r   rE   Ar   )r4   r5   r   r6   XAr   r   r   r   r   r   r   r   r   #test_sparse_preprocess_data_offsets  s>   



r   c                  C   sJ   t  \} }d| | dk < t| }t||d\}}}}}| dks#J d S )Nr         @Tcsr)r   r   r   r
   	getformat)r   r6   r   csr_r   r   r   r   test_csr_preprocess_data;  s
   

r   TFto_copyc                 C   s   t  \}}d||dk < | rt|}t||d|dd\}}}}}|r0| r0t|j|jr.J d S |r<t||r:J d S | rJt|j|jsHJ d S t||sRJ d S )Nr   r   TF)copycheck_input)r   r   r   r
   r)   may_share_memorydata)r   r   r   r6   X_y_r   r   r   r   #test_preprocess_copy_data_no_checksD  s   

r   c                  C   s  d} d}t | |}t | }tj|tjd}tj|tjd}tj|tjd}tj|tjd}dD ]}dD ]}	t||||	d\}
}}}}t||||	d\}}}}}t||||	d\}}}}}t||||	d\}}}}}|
jtjksuJ |jtjks}J |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s3J t|
| t|| t|| t|| t|| q6q1d S )Nr   r   r   r   r   )	r3   r~   r)   asarrayfloat32float64r
   r   r   )r4   r5   r   r6   X_32y_32X_64y_64r    r`   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_dataY  s   






r  	n_targetsr   c                 C   s   d}d}dt | }t ||}| d u rt |}nt || }t|||\}}}||d d tjf  }	| d u r>|| }
n||d d tjf  }
t||	 t||
 d S )Nr   r   r$   )r3   r~   r   r)   r   r   )r  r4   r5   r'   r   r6   
rescaled_X
rescaled_ysqrt_swrescaled_X2rescaled_y2r   r   r   test_rescale_data_dense  s   

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smJ |jtj
ksuJ 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   targetr   r   aranger#   r   r   _next_pyr   r   r  r   )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(  rh   )=rF   rr   numpyr)   scipyr   r   sklearn.utils._testingr   r   r   sklearn.utilsr   sklearn.linear_modelr   sklearn.linear_model._baser	   r
   r   r   sklearn.datasetsr   r   r   sklearn.preprocessingr   r   r*   r+   r3   r  r   markparametrizerT   r   r>   rJ   rS   r\   rb   r{   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r(  r   r   r   r   <module>   sr   $
'



%
g&	N
