
    Pi5              	          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 j!        e j"        d           \  Z#Z$Z%Z&dZ'e%(                                Z)de)e'd<   dddddZ*  ej+        e*j,                  e)          -                    e.          Z/de/e)dk    <   d Z0ej1        2                    d e             e            g          ej1        2                    dddg          d                         Z3d Z4d Z5d  Z6ej1        2                    d e             ed!d"d #          g          ej1        2                    d$e)e/g          d%                         Z7d& Z8ej1        2                    d' e9d(d)                    d*             Z:d+ Z;d, Z<d- Z=ej1        2                    d.d"d/g          d0             Z>d1 Z?d2 Z@d3 ZAd4 ZBej1        C                    d5          ej1        2                    d6g d7          d8                         ZDdS )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  |                     t          t                     d d d            n# 1 swxY w Y   | j        dk    sJ d S )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    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/semi_supervised/tests/test_self_training.pytest_warns_k_bestr+   (   s    	 4 6 6(SW	X	X	XB	k)@	A	A	A 0 0
w.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 $555555s   !A''A+.A+	estimatorselection_crit	thresholdr   c                 .   t          |           } d}d}t          | |||          }|                    t          t                     |                    t                    }|                    t                    }t          | |||          }|                    t          t                     |                    t                    }|                    t                    }	t           t          j        t          j                  |          |           t          ||	           |j        |j        k    sJ t          dk    }
t          |j        dk    |
           t          t          |
         |j        |
                    t          j        |j                  |j        cxk    r|k    sn J t          j        |j                  |j        cxk    r|k    sn J |j        j        |j        j        k    sJ |j        j        |j        j        k    sJ d S )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33##F++K**622L0r|GK0066DDDul+++$	(HHHHH$*Gr'1,g666-g68H8QRRR 6""##rz====X======6))**i.?KKKK8KKKKKK !R%5%;;;;;"(I,C,IIIIIII    c                  D   t          t          d          ddd           } t          j        t                    }d|dd <   t          j        d         }t          |dz
  dz            }|                     t          |           | j	        |k    sJ t          j
        | j        dk              dk    sJ t          d|          D ]%}t          j
        | j        |k              dk    sJ &t          j
        | j        |k              |dz
  dz  k    sJ | j        dk    sJ d S )	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   _   sB   	+++	
 
 
B  WW--!#122a IIMR/00OFF7*+++:(((( 6""a'((A----1o&& 3 3vb&!+,,222226""o5669q=B:NNNNN$555555rF   c                  T   t          dd          } |                     t          t          d          t          t          d                     t          |           }|                    t          t                     |                     t                    |                    t                    }}t          j
        ||          rJ t          |                     t                    t                    }t          |                    t                    t                    }||k    sJ d S )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444IMM'+,,-w7H7I7I/JKKK			*	*BFF7*+++$$V,,bjj.@.@5E~eU+++++%i&7&7&?&?HH(F););VDD!1111111rF   c                      t          t                      dd           } |                     t          t                     | j        dk     sJ | j        dk    sJ d S )Ng?)r.   r1   r0   r    )r   r   r$   r%   r&   r=   r'   r(   s    r*   test_none_iterra      s^     
  4 6 6$QU	V	V	VBFF7*+++:????$555555rF   rT   T)rV   rW   r   yc                    t          |           } t          | d          }|                    t          |           |                     t          d t                   |d t                             }t          |                    t                    |                    t                               |j        dk    sJ d S )Nr   r1   r1   )	r   r   r$   r%   rX   r   r2   r3   r'   )r,   rb   clf1clf2s       r*   test_zero_iterationsrg      s     i  I ")a888DHHWa==!3"3!34a8J9J8J6KLLDt||F++T\\&-A-ABBB&*444444rF   c                     t                      } |                     t          t                     t	          |           }t          j        t          d          5  |                    t                     d d d            d S # 1 swxY w Y   d S )Nz6This SelfTrainingClassifier instance is not fitted yetr   )	r   r$   r%   rK   r   r!   raisesr	   r2   knnr)   s     r*   test_prefitted_throws_errorrl      s     
 
 CGGGW		$	$B	F
 
 
   	

7	                 s   BBBr1   r      c                 :   t          t                      |           }|                    t          t                     t          |j        |j        dk                       }|t          k    sJ t          j	        |j                  |j
        cxk    r| k    sn J d S )Nrd   r   )r   r   r$   r%   r&   lenr:   rX   r6   r<   r=   )r1   r)   amount_iter_0s      r*   test_labeled_iterrq      s     
  4 6 6	J	J	JBFF7*+++()9Q)>?@@M----- 6""##rz====X========rF   c                     t                      } |                     t          t                     t	          |           }t          j        t          d          5  |                    t          t                     d d d            n# 1 swxY w Y   t          | 	                    t                    |	                    t                               t          j        |j        dk              sJ |j        dk    sJ d S )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	K	K ! !
w   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s{{6**BJJv,>,>??? 6""a'((((($555555s   !BB
B
c                      t          dd          } t          |           }dgdgdgdgg}g d}|                    ||           |j        dk    sJ |j        dk    sJ d S )	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      s    
G
.
.
.C		$	$BC!qcC5)L!>>L FF<&&&:????$333333rF   c                  ,   t          t                                } t          ddd          \  }}g d}t          j        ||          }t          j        t          d          5  |                     ||           d d d            d S # 1 swxY w Y   d S )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      s    
 !5!7!7
8
8CDDDDAq///)1--I	z	1	1	1  9                 s   %B		BBverboseFc                     t          t                      |          }|                    t          t                     |                                 }|rd|j        v sJ d S d|j        vsJ d S )N)r   	iteration)r   r   r$   r%   r&   
readouterrout)capsysr   r   captureds       r*   test_verboser      s{    
 !5!7!7
I
I
ICGGG+,,,  ""H /hl******(,......rF   c                    t          t          d          dddd           }t          j        t                    }d|dd <   t          j        d         }t          |dz
  dz            }|                    t          |           | 	                                }d	}t          d|          D ]!}|                    |d          |j        v sJ "|                    ||dz
  dz            |j        v sJ d S )
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  WW--!#122a IIMR/00OFF7*+++  ""H
5C1o&& 1 1zz!R  HL00000::o	A';<<LLLLLLrF   c                  ~   t          d          } t          | ddd          }t          dk    }|                    t          t                     | |j        dk    z  }|                     t          |         t          |                    |                     t          |                    }t          j        |d          }t          |          t          j	        |          d	d                   }t          t          j
        |                                                   }|                                D ]}||v sJ 	d S )
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	O	O	OB&",IFF7*+++
b."45IGGGI 6y ABBBWiZ011Dt!$$$I ),RZ	-B-B344-HI"(9--.5577K!((** " "k!!!!!" "rF   c                     t          dt          d          fdt          d          fgt          d          d          } t          | d          sJ t          |           }|                    t
          t                     |                    t                     t          dt          d	          fdt          d	          fgt          d	          d          } t          | d          rJ t          |           }t          j
        t                    5  |                    t
          t                     d d d            d S # 1 swxY w Y   d S )
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
5
5
5CGGG+,,,f"ce,,,-ce,,,-
 ...  I y/22222
 9
5
5
5C	~	&	& 1 1/0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   !E

EEc                  ~   t          dd          } t          |           }t          j        t          d          5  |                    t          t                     ddd           n# 1 swxY w Y   t          t                                }d}d	}t          j        t          |          5 }|                    t          t                    	                    t                     ddd           n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  v sJ dS )
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555I*955M	~-O	P	P	P ; ;'#9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 +5K5M5MNNNMTIVI	~Y	7	7	7 V9'#9::LLWUUUV V V V V V V V V V V V V V Vio/@@@@@IO566666666s#   !A))A-0A-/9C44C8;C8z2ignore:y contains no unlabeled samples:UserWarningmethod)r   predict_log_probar4   r2   c                    t          t                                }t          j        t          d          5  |                    dgdggddgdgd           ddd           n# 1 swxY w Y   t          t                                }t          j        t          d          5  d|_         t          ||           dggdgd           ddd           dS # 1 swxY w Y   dS )	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 A 	!qc
QF1#C@@@A A A A A A A A A A A A A A A
 !?+<+<
=
=
=C	M
 
 
 A A "VqcU1#C@@@@A A A A A A A A A A A A A A A A A As#   !A%%A),A)''CC"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      sQ              , , , , , ,       2 2 2 2 2 2 2 2 / / / / / / - - - - - - 3 3 3 3 3 3 * * * * * * 4 4 4 4 4 4 2 2 2 2 2 2 : : : : : :       7 7 7 7 7 7 / / / / / / y{{#3#3It{$ $ $  &    -/ ()) *cct
,
,3,",w{334JKKRR
   9; ."4 56 6 6 //112  )K+BCC'J 'J DC	 
'JT6 6 6.2 2 26 6 6 SSwDqQQQR  57NOPP5 5 QP	 
5"
 
 
 UU1a[[11
> 
> 21
>6 6 6	4 	4 	4   T5M22	/ 	/ 32	/M M M2" " "(!1 !1 !1H7 7 7B PQQTTT A A  RQA A ArF   