U
    3dj                     @   sj  d dl Z d dlm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mZ d dlmZ G d	d
 d
eZG dd deeZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd  Zd!d" Zd#d$ Z d%d& Z!d'd( Z"d)d* Z#d+d, Z$d-d. Z%d/d0 Z&d1d2 Z'dS )3    N)PrettyPrinter)_EstimatorPrettyPrinter)LogisticRegressionCV)make_pipeline)BaseEstimatorTransformerMixin)SelectKBestchi2)config_contextc                   @   s   e Zd ZdddZdd ZdS )LogisticRegressionl2F-C6?      ?T   Nwarnd   r   c                 C   s^   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _d S N)penaltydualtolCfit_interceptintercept_scalingclass_weightrandom_statesolvermax_itermulti_classverbose
warm_startn_jobsl1_ratio)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!    r#   C/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/utils/tests/test_pprint.py__init__   s    zLogisticRegression.__init__c                 C   s   | S r   r#   )r"   Xyr#   r#   r$   fit5   s    zLogisticRegression.fit)r   Fr   r   Tr   NNr   r   r   r   FNN)__name__
__module____qualname__r%   r(   r#   r#   r#   r$   r      s"                  
"r   c                   @   s    e Zd ZdddZdddZdS )	StandardScalerTc                 C   s   || _ || _|| _d S r   )	with_meanwith_stdcopy)r"   r/   r-   r.   r#   r#   r$   r%   :   s    zStandardScaler.__init__Nc                 C   s   | S r   r#   r"   r&   r/   r#   r#   r$   	transform?   s    zStandardScaler.transform)TTT)N)r)   r*   r+   r%   r1   r#   r#   r#   r$   r,   9   s   
r,   c                   @   s   e Zd ZdddZdS )RFENr   r   c                 C   s   || _ || _|| _|| _d S r   )	estimatorn_features_to_selectstepr   )r"   r3   r4   r5   r   r#   r#   r$   r%   D   s    zRFE.__init__)Nr   r   r)   r*   r+   r%   r#   r#   r#   r$   r2   C   s   r2   c                	   @   s   e Zd Zd
dd	ZdS )GridSearchCVNr   Tr   2*n_jobsraise-deprecatingFc                 C   sF   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
d S r   )r3   
param_gridscoringr    iidrefitcvr   pre_dispatcherror_scorereturn_train_score)r"   r3   r:   r;   r    r<   r=   r>   r   r?   r@   rA   r#   r#   r$   r%   L   s    zGridSearchCV.__init__)	NNr   Tr   r   r8   r9   Fr6   r#   r#   r#   r$   r7   K   s            r7   c                   @   s:   e Zd Zdddddddddddd	d
dddejfddZdS )CountVectorizercontentzutf-8strictNTz(?u)\b\w\w+\b)r   r   wordr   r   Fc                 C   sj   || _ || _|| _|| _|| _|| _|| _|| _|	| _|| _	|| _
|| _|| _|
| _|| _|| _|| _d S r   )inputencodingdecode_errorstrip_accentspreprocessor	tokenizeranalyzer	lowercasetoken_pattern
stop_wordsmax_dfmin_dfmax_featuresngram_range
vocabularybinarydtype)r"   rF   rG   rH   rI   rM   rJ   rK   rO   rN   rS   rL   rP   rQ   rR   rT   rU   rV   r#   r#   r$   r%   h   s"    zCountVectorizer.__init__)r)   r*   r+   npZint64r%   r#   r#   r#   r$   rB   g   s$   rB   c                   @   s   e Zd ZdddZdS )PipelineNc                 C   s   || _ || _d S r   )stepsmemory)r"   rY   rZ   r#   r#   r$   r%      s    zPipeline.__init__)Nr6   r#   r#   r#   r$   rX      s   rX   c                   @   s   e Zd ZdddZd
S )SVCr   rbf   auto_deprecated        TFMbP?   Novrc                 C   sX   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _d S r   )kerneldegreegammacoef0r   r   	shrinkingprobability
cache_sizer   r   r   decision_function_shaper   )r"   r   rd   re   rf   rg   rh   ri   r   rj   r   r   r   rk   r   r#   r#   r$   r%      s    zSVC.__init__)r   r\   r]   r^   r_   TFr`   ra   NFrb   rc   Nr6   r#   r#   r#   r$   r[      s                 r[   c                   @   s   e Zd ZdddZdS )	PCANTFautor_   c                 C   s.   || _ || _|| _|| _|| _|| _|| _d S r   )n_componentsr/   whiten
svd_solverr   iterated_powerr   )r"   rn   r/   ro   rp   r   rq   r   r#   r#   r$   r%      s    
zPCA.__init__)NTFrm   r_   rm   Nr6   r#   r#   r#   r$   rl      s          rl   c                   @   s   e Zd Zdd	d
ZdS )NMFNcd	frobeniusr   ra   r_   r   Fc                 C   sF   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
d S r   )rn   initr   	beta_lossr   r   r   alphar!   r   shuffle)r"   rn   ru   r   rv   r   r   r   rw   r!   r   rx   r#   r#   r$   r%      s    zNMF.__init__)NNrs   rt   r   ra   Nr_   r_   r   Fr6   r#   r#   r#   r$   rr      s              rr   c                   @   s"   e Zd ZejddddfddZdS )SimpleImputerZmeanNr   Tc                 C   s"   || _ || _|| _|| _|| _d S r   )missing_valuesstrategy
fill_valuer   r/   )r"   rz   r{   r|   r   r/   r#   r#   r$   r%      s
    zSimpleImputer.__init__)r)   r*   r+   rW   nanr%   r#   r#   r#   r$   ry      s   ry   c                 C   s*   t  }d}|dd  }| |ks&td S )NE  
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)r   )r   __repr__AssertionError)print_changed_only_falselrexpectedr#   r#   r$   
test_basic   s    r   c                  C   s   t dd} d}|  |kstt dddddd} d	}|d
d  }|  |ksPttdd}d}| |ksntttdd}d}| |ksttttdd
gd d S )Nc   r   zLogisticRegression(C=99)g?Fi  T)r   r   r   r   r   zk
LogisticRegression(C=99, class_weight=0.4, fit_intercept=False, tol=1234,
                   verbose=True)r   r   )rz   zSimpleImputer(missing_values=0)NaNzSimpleImputer()g?)Cs)	r   r   r   ry   floatreprr   rW   array)r   r   Zimputerr#   r#   r$   test_changed_only  s(    
    
r   c                 C   s6   t t tdd}d}|dd  }| |ks2td S )Ni  r   a  
Pipeline(memory=None,
         steps=[('standardscaler',
                 StandardScaler(copy=True, with_mean=True, with_std=True)),
                ('logisticregression',
                 LogisticRegression(C=999, class_weight=None, dual=False,
                                    fit_intercept=True, intercept_scaling=1,
                                    l1_ratio=None, max_iter=100,
                                    multi_class='warn', n_jobs=None,
                                    penalty='l2', random_state=None,
                                    solver='warn', tol=0.0001, verbose=0,
                                    warm_start=False))],
         verbose=False)r   )r   r,   r   r   r   )r   pipeliner   r#   r#   r$   test_pipeline"  s    r   c                 C   sF   t t t t t t t t }d}|dd  }| |ksBtd S )Na  
RFE(estimator=RFE(estimator=RFE(estimator=RFE(estimator=RFE(estimator=RFE(estimator=RFE(estimator=LogisticRegression(C=1.0,
                                                                                                                     class_weight=None,
                                                                                                                     dual=False,
                                                                                                                     fit_intercept=True,
                                                                                                                     intercept_scaling=1,
                                                                                                                     l1_ratio=None,
                                                                                                                     max_iter=100,
                                                                                                                     multi_class='warn',
                                                                                                                     n_jobs=None,
                                                                                                                     penalty='l2',
                                                                                                                     random_state=None,
                                                                                                                     solver='warn',
                                                                                                                     tol=0.0001,
                                                                                                                     verbose=0,
                                                                                                                     warm_start=False),
                                                                                        n_features_to_select=None,
                                                                                        step=1,
                                                                                        verbose=0),
                                                                          n_features_to_select=None,
                                                                          step=1,
                                                                          verbose=0),
                                                            n_features_to_select=None,
                                                            step=1, verbose=0),
                                              n_features_to_select=None, step=1,
                                              verbose=0),
                                n_features_to_select=None, step=1, verbose=0),
                  n_features_to_select=None, step=1, verbose=0),
    n_features_to_select=None, step=1, verbose=0)r   )r2   r   r   r   )r   Zrfer   r#   r#   r$   test_deeply_nested7  s    "r   c                 C   sb   dgddgddddgdd	gddddgd
g}t t |dd}d}|dd  }| |ks^td S )Nr\   r`   r   r   
   r     )rd   rf   r   Zlinear)rd   r      )r>   a  
GridSearchCV(cv=5, error_score='raise-deprecating',
             estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
                           decision_function_shape='ovr', degree=3,
                           gamma='auto_deprecated', kernel='rbf', max_iter=-1,
                           probability=False, random_state=None, shrinking=True,
                           tol=0.001, verbose=False),
             iid='warn', n_jobs=None,
             param_grid=[{'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001],
                          'kernel': ['rbf']},
                         {'C': [1, 10, 100, 1000], 'kernel': ['linear']}],
             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,
             scoring=None, verbose=0))r7   r[   r   r   )r   r:   gsr   r#   r#   r$   test_gridsearch\  s    r   c           	      C   s   t dddd}tdt fdt fg}dddg}dd	d
dg}tddt g||dttg||dg}t|dd|d}d}|dd  }||}t	
dd|}||kstd S )NTr   )compactindentindent_at_name
reduce_dimZclassify         r   r   r      )rq   )r   Zreduce_dim__n_componentsclassify__C)r   Zreduce_dim__kr   r]   )r>   r    r:   a	  
GridSearchCV(cv=3, error_score='raise-deprecating',
             estimator=Pipeline(memory=None,
                                steps=[('reduce_dim',
                                        PCA(copy=True, iterated_power='auto',
                                            n_components=None,
                                            random_state=None,
                                            svd_solver='auto', tol=0.0,
                                            whiten=False)),
                                       ('classify',
                                        SVC(C=1.0, cache_size=200,
                                            class_weight=None, coef0=0.0,
                                            decision_function_shape='ovr',
                                            degree=3, gamma='auto_deprecated',
                                            kernel='rbf', max_iter=-1,
                                            probability=False,
                                            random_state=None, shrinking=True,
                                            tol=0.001, verbose=False))]),
             iid='warn', n_jobs=1,
             param_grid=[{'classify__C': [1, 10, 100, 1000],
                          'reduce_dim': [PCA(copy=True, iterated_power=7,
                                             n_components=None,
                                             random_state=None,
                                             svd_solver='auto', tol=0.0,
                                             whiten=False),
                                         NMF(alpha=0.0, beta_loss='frobenius',
                                             init=None, l1_ratio=0.0,
                                             max_iter=200, n_components=None,
                                             random_state=None, shuffle=False,
                                             solver='cd', tol=0.0001,
                                             verbose=0)],
                          'reduce_dim__n_components': [2, 4, 8]},
                         {'classify__C': [1, 10, 100, 1000],
                          'reduce_dim': [SelectKBest(k=10,
                                                     score_func=<function chi2 at some_address>)],
                          'reduce_dim__k': [2, 4, 8]}],
             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,
             scoring=None, verbose=0)zfunction chi2 at 0x.*>zfunction chi2 at some_address>)r   rX   rl   r[   rr   r   r	   r7   pformatresubr   )	r   ppr   ZN_FEATURES_OPTIONSZ	C_OPTIONSr:   Z	gspipliner   repr_r#   r#   r$   test_gridsearch_pipelinev  s&    
'
r   c                 C   s  d}t ddd|d}dd t|D }t|d}d}|dd  }|||ksRtd	d t|d D }t|d}d
}|dd  }|||kstdtt|i}tt |}d}|dd  }|||kstdtt|d i}tt |}d}|dd  }|||kstd S )N   Tr   )r   r   r   n_max_elements_to_showc                 S   s   i | ]
}||qS r#   r#   .0ir#   r#   r$   
<dictcomp>  s      z/test_n_max_elements_to_show.<locals>.<dictcomp>)rT   a  
CountVectorizer(analyzer='word', binary=False, decode_error='strict',
                dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
                lowercase=True, max_df=1.0, max_features=None, min_df=1,
                ngram_range=(1, 1), preprocessor=None, stop_words=None,
                strip_accents=None, token_pattern='(?u)\\b\\w\\w+\\b',
                tokenizer=None,
                vocabulary={0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7,
                            8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14,
                            15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20,
                            21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26,
                            27: 27, 28: 28, 29: 29})c                 S   s   i | ]
}||qS r#   r#   r   r#   r#   r$   r     s      a  
CountVectorizer(analyzer='word', binary=False, decode_error='strict',
                dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
                lowercase=True, max_df=1.0, max_features=None, min_df=1,
                ngram_range=(1, 1), preprocessor=None, stop_words=None,
                strip_accents=None, token_pattern='(?u)\\b\\w\\w+\\b',
                tokenizer=None,
                vocabulary={0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7,
                            8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14,
                            15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20,
                            21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26,
                            27: 27, 28: 28, 29: 29, ...})r   a  
GridSearchCV(cv='warn', error_score='raise-deprecating',
             estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
                           decision_function_shape='ovr', degree=3,
                           gamma='auto_deprecated', kernel='rbf', max_iter=-1,
                           probability=False, random_state=None, shrinking=True,
                           tol=0.001, verbose=False),
             iid='warn', n_jobs=None,
             param_grid={'C': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                               15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
                               27, 28, 29]},
             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,
             scoring=None, verbose=0)a  
GridSearchCV(cv='warn', error_score='raise-deprecating',
             estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
                           decision_function_shape='ovr', degree=3,
                           gamma='auto_deprecated', kernel='rbf', max_iter=-1,
                           probability=False, random_state=None, shrinking=True,
                           tol=0.001, verbose=False),
             iid='warn', n_jobs=None,
             param_grid={'C': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                               15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
                               27, 28, 29, ...]},
             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,
             scoring=None, verbose=0))r   rangerB   r   r   listr7   r[   )r   r   r   rT   Z
vectorizerr   r:   r   r#   r#   r$   test_n_max_elements_to_show  s6    

r   c                 C   s  t  }d}|dd  }||jddks*td}|dd  }||jddksNt|jtdd}td| }|j|d|kstd	|kstd
}|dd  }||j|d dkstd}|dd  }||j|d dkstd}|dd  }||j|d dks
td S )Na  
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   in...
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)r      )Z
N_CHAR_MAXz+
Lo...
                   warm_start=False)r   inf z...a@  
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_i...
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)r   aD  
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter...,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)r~   r   )r   r   r   r   lenjoinsplit)r   r   r   Z	full_reprZ
n_nonblankr#   r#   r$   test_bruteforce_ellipsis  s(    r   c                   C   s   t  t  d S r   )r   pprintr   r#   r#   r#   r$   test_builtin_prettyprinter]  s    r   c               	   C   s`   G dd dt } | ddd d}d}|| ks2ttdd d	}|| ksRtW 5 Q R X d S )
Nc                       s0   e Zd Zd
ddZd fdd	Zdd	 Z  ZS )z'test_kwargs_in_init.<locals>.WithKWargs
willchange	unchangedc                 [   s"   || _ || _i | _| jf | d S r   )ab_other_params
set_params)r"   r   r   kwargsr#   r#   r$   r%   n  s    z0test_kwargs_in_init.<locals>.WithKWargs.__init__Tc                    s   t  j|d}|| j |S )N)deep)super
get_paramsupdater   )r"   r   params	__class__r#   r$   r   t  s    z2test_kwargs_in_init.<locals>.WithKWargs.get_paramsc                 [   s,   |  D ]\}}t| || || j|< q| S r   )itemssetattrr   )r"   r   keyvaluer#   r#   r$   r   y  s    z2test_kwargs_in_init.<locals>.WithKWargs.set_params)r   r   )T)r)   r*   r+   r%   r   r   __classcell__r#   r#   r   r$   
WithKWargsk  s   
r   Z	somethingZabcd)r   cdz+WithKWargs(a='something', c='abcd', d=None)FZprint_changed_onlyz:WithKWargs(a='something', b='unchanged', c='abcd', d=None))r   r   r   r
   )r   Zestr   r#   r#   r$   test_kwargs_in_inite  s    r   c               	      s   G  fdddt t  t     d} tdd t|   j}W 5 Q R X d _tdd t|   j}W 5 Q R X ||kstd S )Nc                       s6   e Zd ZdZd	ddZ fddZd
ddZ  ZS )z:test_complexity_print_changed_only.<locals>.DummyEstimatorr   Nc                 S   s
   || _ d S r   )r3   )r"   r3   r#   r#   r$   r%     s    zCtest_complexity_print_changed_only.<locals>.DummyEstimator.__init__c                    s     j d7  _ t  S )Nr   )nb_times_repr_calledr   r   )r"   )DummyEstimatorr   r#   r$   r     s    zCtest_complexity_print_changed_only.<locals>.DummyEstimator.__repr__c                 S   s   |S r   r#   r0   r#   r#   r$   r1     s    zDtest_complexity_print_changed_only.<locals>.DummyEstimator.transform)N)N)r)   r*   r+   r   r%   r   r1   r   r#   r   r   r$   r     s   
r   ZpassthroughFr   r   T)r   r   r   r
   r   r   r   )r3   Z nb_repr_print_changed_only_falseZnb_repr_print_changed_only_truer#   r   r$   "test_complexity_print_changed_only  s    r   )(r   r   r   ZnumpyrW   Zsklearn.utils._pprintr   Zsklearn.linear_modelr   Zsklearn.pipeliner   Zsklearn.baser   r   Zsklearn.feature_selectionr   r	   Zsklearnr
   r   r,   r2   r7   rB   rX   r[   rl   rr   ry   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   s:   '
("%B[J$