`L iV ddlZddlZddlZddlZddlZddlmZddl m Z ddl Z ddl m Z m Z ddlmZmZmZmZmZmZmZmZddlmZddlmZddlmZddlmZdd lm Z dd l!m"Z"m#Z#dd l$m%Z%dd l&m'Z'dd l(m)Z)m*Z*ddl+m,Z,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3m4Z4ddl5m6Z6m7Z7GddeZ8GddeZ9GddeZ:GddeZ;GddeZ<Gdde;Z=Gdd e;e<Z>Gd!d"e>Z?Gd#d$eZ@Gd%d&eZAGd'd(ZBGd)d*eZCd+ZDd,ZEd-ZFd.ZGd/ZHd0ZId1ZJd2ZKd3ZLd4ZMd5ZNd6ZOd7ZPejjd8e)d9fe"e)d:d;de"e)d:d;de"e)d:d;de"e)d:d;dC>C#&C/2C;>Dzestimator, expected_resultTCrrgsvcsvc_cvFsvrsvr_cvc$t||k(sJyr$)r  estimatorexpected_results r)test_is_classifierrs  # 66 6r+c$t||k(sJyr$)r rs r)test_is_regressorr0  "o 55 5r+ n_clusterskmkm_cvc$t||k(sJyr$)r rs r)test_is_clustererrArr+c0tdtfg}tjt5|j ddddtjt5|j ddddy#1swY>xYw#1swYyxYw)NrT)svc__stupid_param)svm__stupid_param)rrrrrr)rs r)test_set_paramsrRs| UCEN# $C z "/ ./ z "/ .// ////sB$B B  BcGfddt}dddtd|fgt|ifD]}|jddy)Nc"eZdZfdZxZS)?test_set_params_passes_all_parameters..TestDecisionTreec4t|di||k(sJ|S)Nr0)rBr)r(kwargsrHexpected_kwargss r)rzJtest_set_params_passes_all_parameters..TestDecisionTree.set_paramsis& G  ( (_, ,,Kr+)r-r.r/rrJ)rHrs@r)TestDecisionTreerhs   r+rrr) max_depthmin_samples_leafr)estimator__max_depthestimator__min_samples_leaf)rrrr)rrrs @r)%test_set_params_passes_all_parametersrdsc1%&1=O; 0 2345%',N A1M Nr+ctti}|jtd|jj dk(sJy)NgE@)r estimator__C)rrrrrr)gscvs r)$test_set_params_updates_valid_paramsrws> .0" 5DOOce$O7 >>  t ## #r+z tree,datasetr)r random_state)rctjjd}|\}}|j|||j ddt |}|j ||}|j |||}d}||k7sJ|y)Nrrgr)size) sample_weightz5Unweighted and weighted scores are unexpectedly equal)rarandom RandomStatersrandintrscore) treedatasetrngrqrrrscore_unweightedscore_weightedrs r)test_score_sample_weightr s ))   "C DAqHHQNKK2CFK3Mzz!Q'ZZ1MZBN AC ~ -2s2 -r+c2Gddtt}tjd}t |}||d}t |}|j |j k(jjsJ|j|jk(sJy)Nc&eZdZdZddZddZdZy)3test_clone_pandas_dataframe..DummyEstimatora,This is a dummy class for generating numerical features This feature extractor extracts numerical features from pandas data frame. Parameters ---------- df: pandas data frame The pandas data frame parameter. Notes ----- Nc ||_||_yr$)df scalar_param)r(rrs r)r*z.DummyEstimator.__init__sDG ,D r+cyr$r0rps r)rsz7test_clone_pandas_dataframe..DummyEstimator.fit r+cyr$r0rus r) transformz=test_clone_pandas_dataframe..DummyEstimator.transformrr+rfr$)r-r.r/r`r*rsrr0r+r)DummyEstimatorrs  -  r+rrrg)r) rrraarangerr rvaluesallr)rr5recloned_es r)test_clone_pandas_dataframers~)=6 " A q Br*AQxH DDHKK  ' ' + + -- - >>X22 22 2r+cZGddt}tjddgddgddgg}tj |}|j }||}t |j |t|j|jtjddgddgd dgg}|j |t |j ||j|t |j |t|}||usJt |j |y ) z:Checks that clone works with `__sklearn_clone__` protocol.c*eZdZdZdZdZdZdZy),test_clone_protocol..FrozenEstimatorc||_yr$)fitted_estimator)r(r!s r)r*z5test_clone_protocol..FrozenEstimator.__init__s $4D !r+c.t|j|Sr$)rr!)r(rs r) __getattr__z8test_clone_protocol..FrozenEstimator.__getattr__s400$7 7r+c|Sr$r0rms r)__sklearn_clone__z>test_clone_protocol..FrozenEstimator.__sklearn_clone__Kr+c|Sr$r0r(argsrs r)rsz0test_clone_protocol..FrozenEstimator.fitr&r+c:|jj|i|Sr$)r!rr(s r) fit_transformz:test_clone_protocol..FrozenEstimator.fit_transforms 24((22DCFC Cr+N)r-r.r/r*r#r%rsr+r0r+r)FrozenEstimatorrs 5 8   Dr+r,rrrgN) rrarbrrs components_rrget_feature_names_outasarrayr+r )r,rqpca components frozen_pcaX_newclone_frozen_pcas r)test_clone_protocolr9sD-D 2r(RHr2h/0A %))A,CJ %JJ**J7z7793;T;T;VW JJQ!Q!Q0 1ENN5J**J7U#J**J7Z( z )) )$00*=r+c tj}tj|j|j }t j|}d|vsJtj5tjdt j|}ddd|j|j|j }j|j|j }||k(sJy#1swY]xYw)N_sklearn_versionerror) r load_irisrrsrtargetpickledumpswarningscatch_warnings simplefilterloadsr)irisr tree_pickle tree_restoredscore_of_originalscore_of_restoreds r)?test_pickle_version_warning_is_not_raised_with_matching_versionrJs    D ! # ' ' 4;; ?D,,t$K + -- -  "2g& [1 2  499dkk:%++DIIt{{C  1 11 122s 2+C99DceZdZdZy)TreeBadVersioncLt|jjdS)N something)_sklearn_version)dict__dict__itemsrms r) __getstate__zTreeBadVersion.__getstate__sDMM'')KHHr+Nr-r.r/rSr0r+r)rLrLsIr+rLzTrying to unpickle estimator {estimator} from version {old_version} when using version {current_version}. This might lead to breaking code or invalid results. Use at your own risk.c`tj}tj|j|j }t j|}tjddtj}tjt|5}t j|dddj dj"}t%|t&sJ|j(dk(sJ|j*dk(sJ|j,tjk(sJy#1swYvxYw)NrLrNr old_versioncurrent_versionrr)rr=rLrsrr>r?r@pickle_error_messageformatsklearn __version__rr UserWarningrDlistmessage isinstancerestimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rErtree_pickle_otherr_warning_records r)r?r@rYrZr[r\rrr]rD)rErtree_pickle_noversionr_s r)Dtest_pickle_version_warning_is_issued_when_no_version_info_in_picklerl"s    D ?  tyy$++ 6D"LL. &; ;; ;"))!++*G k 1, *+,,,s B>>Cctj}tj|j|j }t j|} tj}dt_tj5tjdt j|ddd|t_y#1swYxYw#t_wxYw)N notsklearnr<) rr=rhrsrr>r?r@r.rArBrCrD)rErrk module_backups r)Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorrp3s    D ?  tyy$++ 6D"LL. 1%00 #/   $ $ & 0  ! !' * LL. / 0 $1   0 0 $1  s$/C+C3CC C C ceZdZdZdZy)DontPickleAttributeMixincD|jj}d|d<|SN_attribute_not_pickled)rQr^)r(rs r)rSz%DontPickleAttributeMixin.__getstate__Ds$}}!!#)- %& r+cDd|d<|jj|y)NT _restored)rQupdate)r(states r) __setstate__z%DontPickleAttributeMixin.__setstate__Is!k U#r+N)r-r.r/rSrzr0r+r)rrrrCs  $r+rrceZdZddZy)MultiInheritanceEstimatorc ||_d|_yr$attribute_pickledrur(rs r)r*z"MultiInheritanceEstimator.__init__O!2&*#r+Nrr,r0r+r)r|r|Ns+r+r|ct}d|_tj|}tj|}|j dk(sJ|jJ|j sJyN$this attribute should not be pickledr)r|rur?r@rDrrwr serializedestimator_restoreds r)3test_pickling_when_getstate_is_overwritten_by_mixinrTsd)+I'MI$i(Jj1  / /1 44 4  4 4 << <  ' '' 'r+c` t}d}||_t|j}dt|_|j }|dddk(sJd|d<|j ||j dk(sJ|jsJ |t|_y#t_wxYw)Nrrnr)rurr0r)r|rurr.rSrzrrw)rtextold_modrs r)Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnr_s--/ 5+/ (y/,,%1Y"++- STUUUU*+ &'z***a///""""%,Y"WY"s BBB-c&eZdZddZfdZxZS)SingleInheritanceEstimatorc ||_d|_yr$r~rs r)r*z#SingleInheritanceEstimator.__init__srr+c.t|}d|d<|Srt)rBrS)r(ryrHs r)rSz'SingleInheritanceEstimator.__getstate__ws $&*.&' r+r)r-r.r/r*rSrJrKs@r)rrrs+r+rct}d|_tj|}tj|}|j dk(sJ|jJyr)rrur?r@rDrrs r)Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_classr}sU*,I'MI$i(Jj1  / /1 44 4  4 4 << >> >..0;;EEE E#  113>>HHH H)+O  + + - 8 8 B BB B8: " 3 3 5 @ @ J JJ Jr+cGddt}|}d}tjt|5|j dddy#1swYyxYw)NceZdZddZddZy).MyEstimatorcyr$r0r(params r)r*zEtest_raises_on_get_params_non_attribute..MyEstimator.__init__rr+Nc|Sr$r0rps r)rsz@test_raises_on_get_params_non_attribute..MyEstimator.fitr&r+rr$)r-r.r/r*rsr0r+r)r"rs   r+r"z-'MyEstimator' object has no attribute 'param'r)rrrAttributeErrorr)r"rrs r)'test_raises_on_get_params_non_attributersIm -C 9C ~S 1 s AAct}|j}d|vsJd|vsJtd5|j}d|vsJd|vsJ dddy#1swYyxYw)Nz text/plainz text/htmlrdisplay)r_repr_mimebundle_r)routputs r)test_repr_mimebundle_rs{ ! #D  # # %F 6 !! ! &   ')'')v%%%&((()))s AA#c t}|j}d|vsJtd5d}tjt |5|j}ddddddy#1swYxYw#1swYyxYw)Nz