U
    fv"                     @   sX  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mZ d dlmZ d dlmZmZmZ e	 ZedZeejjd  Zee eje Zeje ZeeZG dd	 d	eZd
d Z dd Z!dd Z"ej#$dddd Z%ej#$d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#$dd&d'd( Z-d)d* Z.dS )+    N)ClassifierMixin)	load_iris)PassiveAggressiveClassifierPassiveAggressiveRegressor)check_random_state)assert_almost_equalassert_array_almost_equalassert_array_equal   c                   @   s&   e Zd ZdddZd	d
 Zdd ZdS )MyPassiveAggressive      ?{Gz?hingeT   Nc                 C   s"   || _ || _|| _|| _|| _d S N)Cepsilonlossfit_interceptn_iter)selfr   r   r   r   r   random_state r   Y/tmp/pip-target-lpfmz8o1/lib/python/sklearn/linear_model/tests/test_passive_aggressive.py__init__   s
    	zMyPassiveAggressive.__init__c                 C   s<  |j \}}tj|tjd| _d| _t| jD ]}t|D ]}| || }| j	dkrnt
d|| |  d}nt
t|||  | j d}t|| || }	| j	dkrt| j||	 }
n | j	dkr||	dd	| j    }
| j	dkr|
|| 9 }
n|
t|| | 9 }
|  j|
||  7  _| jr:|  j|
7  _q:q,d S )
N)Zdtype        r   squared_hinger   r   )r   epsilon_insensitive)r   squared_epsilon_insensitiver      )shapenpZzerosZfloat64wbranger   projectr   maxabsr   dotminr   signr   )r   XyZ	n_samplesZ
n_featurestipr   Zsqnormstepr   r   r   fit(   s(    




zMyPassiveAggressive.fitc                 C   s   t || j| j S r   )r"   r)   r#   r$   )r   r,   r   r   r   r&   E   s    zMyPassiveAggressive.project)r   r   r   Tr   N)__name__
__module____qualname__r   r2   r&   r   r   r   r   r      s         
r   c                  C   s   t tfD ]} dD ]}dD ]x}tdd|d|d d}|| t || t}|dksTt|rt|dsftt|d	sttt|d
stt|dstqqqd S )NTFFTr      r   )r   max_iterr   r   averagetolHzG?_average_coef_average_intercept_standard_intercept_standard_coef)r,   X_csrr   r2   r-   scoreAssertionErrorhasattr)datar   r:   clfrB   r   r   r   test_classifier_accuracyI   s&    rG   c                  C   s   t t} ttfD ]}dD ]}td|dd}tdD ]}||t|  q4||t}|dks`t	|rt
|dsrt	t
|dst	t
|d	st	t
|d
st	qqd S )Nr7   r      r   r:   r9   r8   r<   r=   r>   r?   r@   )r"   uniquer-   r,   rA   r   r%   partial_fitrB   rC   rD   )classesrE   r:   rF   r.   rB   r   r   r   test_classifier_partial_fit_   s"    
  rM   c                  C   sX   t ddtt} t| jtt | td d d df tj	t  t| jtj	 d S )NrH   r9   )
r   r2   r,   r-   r	   Zclasses_r"   rJ   irisZtarget_namesrF   r   r   r   test_classifier_refitq   s    "rR   r   r   c                 C   sp   t  }d|t dk< t| dd}|t| ttfD ]6}t| ddd d}||| t|j|j	
 dd q4d S )NrO   r   r    r   r   F)r   r9   shuffler;   decimal)r-   copyr   r2   r,   rA   r   r   r#   coef_ravel)r   y_binZclf1rE   Zclf2r   r   r   test_classifier_correctnessz   s       r[   response_methodZpredict_probaZpredict_log_proba	transformc              	   C   s.   t dd}tt t||  W 5 Q R X d S Nd   rN   )r   pytestraisesAttributeErrorgetattr)r\   rF   r   r   r   !test_classifier_undefined_methods   s    
rd   c                  C   s   t ddgddgddgddgddgg} dddddg}tdd	d d	d
}|| | t|ddggt dg tdd	ddid	d
}|| | t|ddggt dg d S )N      r   皙r   r   r   rO   皙?r_   )r   r9   class_weightr   g?gMbP?)r"   arrayr   r2   r	   predictX2y2rF   r   r   r   test_class_weights   s$    (      rn   c               	   C   s<   t ddd} tt | jttttd W 5 Q R X d S )Nbalancedr_   rh   r9   )rL   )	r   r`   ra   
ValueErrorrK   r,   r-   r"   rJ   rQ   r   r   r   &test_partial_fit_weight_class_balanced   s    rr   c                  C   s   ddgddgddgddgg} ddddg}t dd d d}|| | t dd dd}|| | t dd dddd}|| | t|j|jdd	 t|j|jdd	 d S )
Nr   r   rg   )r   r;   rh   ro         ?)r   r   r    rU   )r   r2   r   rX   )rl   rm   rF   Zclf_balancedZclf_weightedr   r   r   test_equal_class_weight   s      rt   c               	   C   sl   t ddgddgddgddgddgg} dddddg}tddid	d
}tt || | W 5 Q R X d S )Nre   r   rf   r   r   r   rO   rs   r_   rp   )r"   ri   r   r`   ra   rq   r2   rk   r   r   r   test_wrong_class_weight_label   s
    (ru   c               
   C   s   t  } d| t dk< ttfD ]}dD ]}dD ]}td|d|dd}|||  ||}t||  d	 d
k srt	|r,t
|dst	t
|dst	t
|dst	t
|ds,t	q,q$qd S )NrO   r   r6   r7   r   r   rH   )r   r   r   r:   r9   r    333333?r=   r>   r?   r@   )r-   rW   r,   rA   r   r2   rj   r"   meanrC   rD   )rZ   rE   r   r:   regpredr   r   r   test_regressor_mse   s(    
rz   c                  C   s   t  } d| t dk< ttfD ]}dD ]}td|dd}tdD ]}|||  q>||}t	||  d d	k stt
|r$t|d
st
t|dst
t|dst
t|ds$t
q$qd S )NrO   r   r7   r   r_   rI   2   r    rv   r=   r>   r?   r@   )r-   rW   r,   rA   r   r%   rK   rj   r"   rw   rC   rD   )rZ   rE   r:   rx   r.   ry   r   r   r   test_regressor_partial_fit   s$      
r|   )r   r   c                 C   sp   t  }d|t dk< t| dd}|t| ttfD ]6}td | ddd}||| t|j|j	
 dd q4d S )NrO   r   r    rS   F)r;   r   r9   rT   rU   )r-   rW   r   r2   r,   rA   r   r   r#   rX   rY   )r   rZ   Zreg1rE   Zreg2r   r   r   test_regressor_correctness   s       r}   c               	   C   s.   t dd} tt | t W 5 Q R X d S r^   )r   r`   ra   rb   r]   r,   )rx   r   r   r    test_regressor_undefined_methods  s    
r~   )/numpyr"   r`   Zscipy.sparsesparsespZsklearn.baser   Zsklearn.datasetsr   Zsklearn.linear_modelr   r   Zsklearn.utilsr   Zsklearn.utils._testingr   r   r	   rP   r   ZarangerE   r!   indicesrT   r,   targetr-   Z
csr_matrixrA   r   rG   rM   rR   markZparametrizer[   rd   rn   rr   rt   ru   rz   r|   r}   r~   r   r   r   r   <module>   sD   



1	
 


