U
    9%e#                     @   s  d dl Zd dlZd dlmZmZmZmZ d dlm	Z	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mZ d d	lmZmZ ed
d\ZZeeddZedd edd  ZZejdddgdd Z dd Z!ejddddgdd Z"dd Z#dd Z$dd Z%ejde eed dd!ife eed"d!d#d$fe eed%ddifgd&d' Z&d(d) Z'd*d+ Z(ejd,ed-d d.dfe
 dfgd/d0 Z)ejddddgd1d2 Z*dS )3    N)	load_irismake_classificationmake_multilabel_classificationmake_regression)LinearRegressionLogisticRegression)ClassifierChain)scale)DecisionTreeClassifierDecisionTreeRegressor)_MockEstimatorOnOffPrediction)_get_response_values_get_response_values_binary)assert_allcloseassert_array_equalT)Z
return_X_yF)copyd   response_methoddecision_functionpredict_probac              	   C   sJ   t | gd}d}|jj d}tjt|d t||| d W 5 Q R X dS )zLCheck the error message with regressor an not supported response
    method.)Zresponse_methods)Zmocking_dataZmocking_targetz should either be a classifiermatchr   N)r   	__class____name__pytestraises
ValueErrorr   )r   Zmy_estimatorXerr_msg r    `/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/utils/tests/test_response.py(test_get_response_values_regressor_error   s
    r"   c                  C   sP   t ddd\} }t | |}t|| dd\}}t|||  |dksLtdS )z=Check the behaviour of `_get_response_values` with regressor.
   r   )	n_samplesrandom_statepredictr   N)r   r   fitr   r   r&   AssertionError)r   yZ	regressory_pred	pos_labelr    r    r!   "test_get_response_values_regressor&   s    
r,   r&   c              	   C   sR   t dddd\}}t ||}d}tjt|d t||| dd W 5 Q R X d	S )
zVCheck that `_get_response_values` raises the proper error message with
    classifier.r#      r   r$   	n_classesr%   zDpos_label=whatever is not a valid label: It should be one of \[0 1\]r   Zwhateverr   r+   N)r   r   r'   r   r   r   r   )r   r   r)   
classifierr   r    r    r!   5test_get_response_values_classifier_unknown_pos_label3   s    r2   c               	   C   sZ   t dddd\} }t|}t | |}d}tjt|d t|| dd W 5 Q R X d	S )
zpCheck that `_get_response_values` will raise an error when `y_pred` has a
    single class with `predict_proba`.r#   r-   r   r.   zJGot predict_proba of shape \(10, 1\), but need classifier with two classesr   r   r   N)	r   npZ
zeros_liker
   r'   r   r   r   r   )r   Zy_two_classZy_single_classr1   r   r    r    r!   Htest_get_response_values_classifier_inconsistent_y_pred_for_binary_probaH   s    
r4   c                  C   s   t ddddgdd\} }t | |}d}t|| |dd	\}}t|||  |d
ksZtt|| ||jd d	\}}t||| d  |dkstdS )zaCheck the behaviour of `_get_response_values` with `decision_function`
    and binary classifier.r#   r-   333333?ffffff?r   r$   r/   weightsr%   r   Nr0      )r   r   r'   r   r   r   r(   classes_r   r)   r1   r   r*   r+   r    r    r!   <test_get_response_values_binary_classifier_decision_functionW   s0    


r=   c                  C   s   t ddddgdd\} }t | |}d}t|| |dd	\}}t||| ddd
f  |d
ksftt|| ||jd d	\}}t||| dddf  |dkstdS )zQCheck that `_get_response_values` with `predict_proba` and binary
    classifier.r#   r-   r5   r6   r   r7   r   Nr0   r9   )r   r   r'   r   r   r   r(   r;   r<   r    r    r!   8test_get_response_values_binary_classifier_predict_probax   s0    


r>   z estimator, X, y, err_msg, paramsz.Expected 'estimator' to be a binary classifierautozCpos_label=unknown is not a valid label: It should be one of \[0 1\]unknownr0   z.be a binary classifier. Got 3 classes instead.c              	   C   s8   |  || tjt|d t| |f| W 5 Q R X dS )zMCheck that we raise the proper error messages in _get_response_values_binary.r   N)r'   r   r   r   r   )	estimatorr   r)   r   paramsr    r    r!   test_get_response_error   s    rC   c                  C   s   t  tt} t| tdd\}}tj|| tdddf  |dksLt	t| tddd\}}tj|| tdddf  |dkst	dS )zKCheck the behaviour of `_get_response_values_binary` using `predict_proba`.r   r   Nr9   r   r0   )
r
   r'   X_binaryy_binaryr   r3   testingr   r   r(   )r1   Zy_probar+   r    r    r!   test_get_response_predict_proba   s       
    
 rG   c                  C   s|   t  tt} t| tdd\}}tj|| t |dks@t	t| tddd\}}tj|| td  |dksxt	dS )zMCheck the behaviour of `_get_response_values_binary` using decision_function.r   r   r9   r   r0   r:   N)
r   r'   rD   rE   r   r3   rF   r   r   r(   )r1   Zy_scorer+   r    r    r!   #test_get_response_decision_function   s       
   
rH   zestimator, response_methodr-   )	max_depthr%   c                 C   sp   |  tt t| t|d\}}|dks*t|jtjd t| jfksHt|dkrlt	|dk|dk
 sltdS )zCheck that we can call `_get_response_values` with a multiclass estimator.
    It should return the predictions untouched.
    r   Nr   r   r9   )r'   r   r)   r   r(   shapelenr;   r3   logical_andall)rA   r   Zpredictionsr+   r    r    r!   #test_get_response_values_multiclass   s      
rN   c                 C   s   t dd\}}tt ||}t||| d\}}|d ks>t|j|jksNt| dkrtt|dk|dk	 stnN| dkr|dk 
 dkst|dk
 dkstnt|dk|dk	 std S )Nr   )r%   r   r   r9   r   )r   r   r   r'   r   r(   rJ   r3   rL   rM   sum
logical_or)r   r   YrA   r*   r+   r    r    r!   -test_get_response_values_multilabel_indicator   s      
rR   )+numpyr3   r   Zsklearn.datasetsr   r   r   r   Zsklearn.linear_modelr   r   Zsklearn.multioutputr   Zsklearn.preprocessingr	   Zsklearn.treer
   r   Zsklearn.utils._mockingr   Zsklearn.utils._responser   r   Zsklearn.utils._testingr   r   r   r)   rD   rE   markZparametrizer"   r,   r2   r4   r=   r>   rC   rG   rH   rN   rR   r    r    r    r!   <module>   sx   


!!

 