
    ri5              	       n   d dl mZ d dlZd dl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 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
       Z  ee jB                  e jD                  d       \  Z#Z$Z%Z&dZ'e%jQ                         Z)de)e'd dddddZ*  ejV                  e*jX                        e)      j[                  e.      Z/de/e)dk(  <   d Z0ejb                  je                  d e        e       g      ejb                  je                  dddg      d               Z3d Z4d Z5d  Z6ejb                  je                  d e        ed!d"d #      g      ejb                  je                  d$e)e/g      d%               Z7d& Z8ejb                  je                  d' e9d(d)            d*        Z:d+ Z;d, Z<d- Z=ejb                  je                  d.d"d/g      d0        Z>d1 Z?d2 Z@d3 ZAd4 ZBejb                  j                  d5      ejb                  je                  d6g d7      d8               ZDy)9    )ceilN)assert_array_equal)clone)	load_iris
make_blobs)StackingClassifier)NotFittedError)LogisticRegression)accuracy_score)train_test_split)KNeighborsClassifier)SelfTrainingClassifier)SVC)SimpleEstimator)DecisionTreeClassifierrandom_state2   ABCz-1)r         r   c                      t        t               dd      } t        j                  t        d      5  | j                  t        t               d d d        | j                  dk(  sJ y # 1 sw Y   xY w)Nk_besti  )	criterionr   zk_best is larger thanmatchall_labeled)	r   r   pytestwarnsUserWarningfitX_trainy_train_missing_labelstermination_condition_sts    n/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/semi_supervised/tests/test_self_training.pytest_warns_k_bestr+   (   s^    	 4 6(SW	XB	k)@	A 0
w./0 $$5550 0s   A''A0	estimatorselection_crit	thresholdr   c                 >   t        |       } d}d}t        | |||      }|j                  t        t               |j                  t              }|j                  t              }t        | |||      }|j                  t        t               |j                  t              }|j                  t              }	t         t        j                  t        j                        |      |       t        ||	       |j                  |j                  k(  sJ t        dk7  }
t        |j                  dk(  |
       t        t        |
   |j                   |
          t        j"                  |j                        |j$                  cxk  r|k  sJ  J t        j"                  |j                        |j$                  cxk  r|k  sJ  J |j                  j&                  |j                   j&                  k(  sJ |j                  j&                  |j                   j&                  k(  sJ y )Ng      ?
   )max_iterr.   r   )r1   r   r.   r   r   )r   r   r$   r%   r&   predictX_testpredict_probay_train_missing_stringsr   np	vectorizemappinggetr'   labeled_iter_transduction_maxn_iter_shape)r,   r-   r.   r1   r)   predproba	st_stringpred_stringproba_stringlabeleds              r*   test_classificationrE   0   s    i I IH	H	^
B FF7*+::fDV$E&H)I MM'23##F+K**62L0r||GKK06Dul+$$	(H(HHHH$*Gr''1,g6-g68H8H8QR 66"""#rzz=X=====66)))*i.?.?K8KKKKK !!R%5%5%;%;;;;""((I,C,C,I,IIII    c                  B   t        t        d      ddd       } t        j                  t              }d|dd  t        j
                  d   }t        |dz
  dz        }| j                  t        |       | j                  |k(  sJ t        j                  | j                  dk(        dk(  sJ t        d|      D ])  }t        j                  | j                  |k(        dk(  r)J  t        j                  | j                  |k(        |dz
  dz  k(  sJ | j                  dk(  sJ y )	Nr   n_neighborsr   r0   )r   r   r1   r   r   r    )r   r   r6   copyy_trainr>   r   r$   r%   r=   sumr:   ranger'   )r)   y_train_only_one_label	n_samplesn_expected_iteris        r*   test_k_bestrR   _   s   	+	
B  WWW-!#12a IIMR/0OFF7*+::((( 66"""a'(A---1o& 3vvb&&!+,222366"""o569q=B:NNNN$$555rF   c                     t        dd      } | j                  t        t        d  t        t        d         t        |       }|j                  t        t               | j                  t              |j                  t              }}t        j                  ||      rJ t        | j                  t              t              }t        |j                  t              t              }||kD  sJ y )NscaleTgammaprobability)r   r$   r%   n_labeled_samplesrK   r   r&   r2   r3   r6   array_equalr   y_test)r,   r)   pred1pred2score_supervisedscore_self_trainings         r*   test_sanity_classificationr_   v   s    't4IMM'+,-w7H7I/JK			*BFF7*+$$V,bjj.@5E~~eU+++%i&7&7&?H(F);VD!1111rF   c                      t        t               dd       } | j                  t        t               | j
                  dk  sJ | j                  dk(  sJ y )Ng?)r.   r1   r0   r    )r   r   r$   r%   r&   r=   r'   r(   s    r*   test_none_iterra      sJ     
  4 6$QU	VBFF7*+::??$$555rF   rT   T)rV   rW   r   yc                 .   t        |       } t        | d      }|j                  t        |       | j                  t        d t         |d t               }t        |j                  t              |j                  t                     |j                  dk(  sJ y )Nr   r1   r1   )	r   r   r$   r%   rX   r   r2   r3   r'   )r,   rb   clf1clf2s       r*   test_zero_iterationsrg      s|     i I ")a8DHHWa==!3"34a8J9J6KLDt||F+T\\&-AB&&*444rF   c                      t               } | j                  t        t               t	        |       }t        j                  t        d      5  |j                  t               d d d        y # 1 sw Y   y xY w)Nz6This SelfTrainingClassifier instance is not fitted yetr   )	r   r$   r%   rK   r   r!   raisesr	   r2   knnr)   s     r*   test_prefitted_throws_errorrl      sY     
 CGGGW		$B	F
  	

7	  s   A**A3r1   r      c                 0   t        t               |       }|j                  t        t               t        |j                  |j                  dk(           }|t        k(  sJ t        j                  |j                        |j                  cxk  r| k  sJ  J y )Nrd   r   )r   r   r$   r%   r&   lenr:   rX   r6   r<   r=   )r1   r)   amount_iter_0s      r*   test_labeled_iterrq      s     
  4 6	JBFF7*+(()9)9Q)>?@M---- 66"""#rzz=X=====rF   c                     t               } | j                  t        t               t	        |       }t        j                  t        d      5  |j                  t        t               d d d        t        | j                  t              |j                  t                     t        j                  |j                  dk(        sJ |j                  dk(  sJ y # 1 sw Y   qxY w)Nzy contains no unlabeled samplesr   r   r    )r   r$   r%   rK   r   r!   r"   r#   r   r2   r3   r6   allr:   r'   rj   s     r*   test_no_unlabeledrt      s     
 CGGGW		$B	k)J	K !
w !s{{6*BJJv,>? 66"""a'((($$555! !s   CCc                      t        dd      } t        |       }dgdgdgdgg}g d}|j                  ||       |j                  dk(  sJ |j                  dk(  sJ y )	NrT   TrU   r   r   g      ?)r   r   r   r   	no_change)r   r   r$   r=   r'   )svcr)   X_train_easyy_train_easys       r*   test_early_stoppingrz      sg    
G
.C		$BC!qcC5)L!L FF<&::??$$333rF   c                     t        t                     } t        ddd      \  }}g d}t        j                  ||      }t        j                  t        d      5  | j                  ||       d d d        y # 1 sw Y   y xY w)N   r   g?)rO   r   cluster_std)onetwothreedtyper   )	r   r   r   r6   taker!   ri   
ValueErrorr$   )clfXrb   labels_multiclass	y_stringss        r*   test_strings_dtyper      sj    
 !5!7
8CDDAq/)1-I	z	1 9  s   A66A?verboseFc                     t        t               |      }|j                  t        t               | j                         }|rd|j                  v sJ y d|j                  vsJ y )N)r   	iteration)r   r   r$   r%   r&   
readouterrout)capsysr   r   captureds       r*   test_verboser      sV    
 !5!7
ICGGG+,  "Hhll***(,,...rF   c                    t        t        d      dddd       }t        j                  t              }d|dd  t        j
                  d   }t        |dz
  dz        }|j                  t        |       | j                         }d	}t        d|      D ]"  }|j                  |d      |j                  v r"J  |j                  ||dz
  dz        |j                  v sJ y )
Nr   rH   r   r0   T)r   r   r   r1   r   r   z)End of iteration {}, added {} new labels.)r   r   r6   rJ   rK   r>   r   r$   r%   r   rM   formatr   )r   r)   rN   rO   rP   r   msgrQ   s           r*   test_verbose_k_bestr      s    	+
B  WWW-!#12a IIMR/0OFF7*+  "H
5C1o& 1zz!R HLL0001 ::o	A';<LLLrF   c                     t        d      } t        | ddd      }t        dk7  }|j                  t        t               | |j
                  dk7  z  }| j                  t        |   t        |          | j                  t        |          }t        j                  |d      }t        |    t        j                  |      d	d     }t        t        j                  |         j                         }|j                         D ]  }||v rJ  y )
Nr   r   r   r   r0   )r   r1   r   r   )axisi)r
   r   r&   r$   r%   r;   r4   r6   r<   argsortwheretolist)	estr)   	has_label	got_labelr?   	max_probamost_confident_estadded_by_strows	            r*   test_k_best_selects_bestr     s    
!
,C	x!B	OB&",IFF7*+
b.."45IGGGI 6y ABWiZ01Dt!$I ),RZZ	-B34-HI"((9-.557K!((* "k!!!"rF   c                  "   t        dt        d      fdt        d      fgt        d      d      } t        | d      sJ t        |       }|j	                  t
        t               |j                  t               t        dt        d	      fdt        d	      fgt        d	      d      } t        | d      rJ t        |       }t        j                  t              5  |j	                  t
        t               d d d        y # 1 sw Y   y xY w)
Nsvc_1T)rW   svc_2r   )
estimatorsfinal_estimatorcvr4   r,   F)r   r   hasattrr   r$   r%   r&   r4   r3   r!   ri   AttributeError)r,   r   s     r*   test_estimator_meta_estimatorr      s     #cd+,cd+,
 -I 9o...
 9
5CGGG+,f"ce,-ce,-
 .I y/222
 9
5C	~	& 1/01 1 1s   !DDc                  D   t        dd      } t        |       }t        j                  t        d      5  |j                  t        t               ddd       t        t                     }d}d	}t        j                  t        |      5 }|j                  t        t              j                  t               ddd       t        j                  j                  t              sJ |t        |j                  j                        v sJ y# 1 sw Y   xY w# 1 sw Y   _xY w)
a>  Check that we raise the proper AttributeErrors when the `estimator`
    does not implement the `predict_proba` method, which is called from within
    `fit`, or `decision_function`, which is decorated with `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    FrT   )rW   rV   z has no attribute 'predict_proba'r   Nr   zBThis 'SelfTrainingClassifier' has no attribute 'decision_function'zD'DecisionTreeClassifier' object has no attribute 'decision_function')r   r   r!   ri   r   r$   r%   r&   r   decision_function
isinstancevalue	__cause__str)r,   self_training	outer_msg	inner_msg	exec_infos        r*   ,test_self_training_estimator_attribute_errorr   D  s     W5I*95M	~-O	P ;'#9:;
 +5K5MNMTIVI	~Y	7 V9'#9:LLWUVioo//@@@IOO556666; ;V Vs   D

.D
DDz2ignore:y contains no unlabeled samples:UserWarningmethod)r   predict_log_probar4   r2   c                    t        t                     }t        j                  t        d      5  |j                  dgdggddgdgd       ddd       t        t                     }t        j                  t        d      5  d|_         t        ||       dggdgd       ddd       y# 1 sw Y   axY w# 1 sw Y   yxY w)	zTest that the right error message is raised when metadata is passed while
    not supported when `enable_metadata_routing=False`.r   z1is only supported if enable_metadata_routing=Truer   r   a)sample_weightpropNT)r   r   r!   ri   r   r$   fitted_params_getattr)r   r   s     r*   *test_routing_passed_metadata_not_supportedr   e  s     !?+<
=C	M
 A 	!qc
QF1#C@A
 !?+<
=C	M
 A "VqcU1#C@A AA AA As   B- B9-B69C)Emathr   numpyr6   r!   numpy.testingr   sklearn.baser   sklearn.datasetsr   r   sklearn.ensembler   sklearn.exceptionsr	   sklearn.linear_modelr
   sklearn.metricsr   sklearn.model_selectionr   sklearn.neighborsr   sklearn.semi_supervisedr   sklearn.svmr   sklearn.tests.test_pipeliner   sklearn.treer   irisdatatargetr%   r3   rK   rZ   rX   rJ   r&   r8   r7   r9   astypeobjectr5   r+   markparametrizerE   rR   r_   ra   rg   rl   rM   rq   rt   rz   r   r   r   r   r   r   filterwarningsr    rF   r*   <module>r      s]      ,  2 / - 3 * 4 2 :  7 / {#3IIt{{$  &    -/ () *cct
,3,",,w{{34JKRR
  9; ."4 56 /12 )K+BC'J D	
'JT6.26 SwDqQR 57NOP5 Q	
5"
 U1a[1
> 2
>6	4 T5M2	/ 3	/M2"(!1H7B PQTA RArF   