Ë
    <�Djµ5  ã                   ó  — d Z ddlZddlmZmZ ddlmZmZmZ ddl	Z
ddlZddlmZ dej                   defd„Zdeddfd	„Zded
eddfd„Zdede
j0                  de
j0                  deddf
d„Zdededdfd„Zdeddfd„Z e
j8                  e
j:                  «      j<                  ZdZ dededededededdfd„Z!dedededededdfd„Z"deeef   dejF                  dedeeef   fd„Z$ G d „ d!ejJ                  jL                  «      Z'y)"zTests for updaters.é    N)ÚpartialÚupdate_wrapper)ÚAnyÚDictÚListÚmodelÚreturnc                 óŒ   — t        t        j                  | j                  «       j	                  «       «      d   d   d   «      }|S )z1Get base score from an XGBoost sklearn estimator.ÚlearnerÚlearner_model_paramÚ
base_score)ÚfloatÚjsonÚloadsÚget_boosterÚsave_config)r   r   s     ú[C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\xgboost/testing/updater.pyÚget_basescorer      sE   € äÜ�
‰
�5×$Ñ$Ó&×2Ñ2Ó4Ó5°iÑ@ÐAVÑWØñ	
ó€Jð
 Ðó    Útree_methodc                 óp  ‡ — ddl m}m}m} dt        j
                  dt        j
                  ddfˆ fd„} |dd	¬
«      \  }} |||«        |ddd	¬«      \  }} |||«       dt        j
                  dt        j
                  ddfˆ fd„} |dd	¬
«      \  }} |||«        |dddd	¬«      \  }} |||«       y)zTest for init estimation.r   )Úmake_classificationÚmake_multilabel_classificationÚmake_regressionÚXÚyr	   Nc                 ó’  •— t        j                  ‰dd¬«      }|j                  | || |fg¬«       t        |«      }|j	                  «       d   d   d   }t        j                  ‰ddd¬«      }|j                  | || |fg¬«       t        |«      }|j	                  «       d   d   d   }t        j                  ||«      rJ ‚||k  sJ ‚y )Né   ©r   Ú	max_depthÚn_estimators©Úeval_setÚvalidation_0Úrmser   ©r   r    r!   Úboost_from_average)ÚxgbÚXGBRegressorÚfitr   Úevals_resultÚnpÚisclose)r   r   ÚregÚbase_score_0Úscore_0Úbase_score_1Úscore_1r   s          €r   Úrun_regz&check_init_estimation.<locals>.run_reg   sÑ   ø€ Ü×Ñ¨;À!ÐRSÔTˆØ�‰��1  A ˜xˆÔ(Ü$ SÓ)ˆØ×"Ñ"Ó$ ^Ñ4°VÑ<¸QÑ?ˆä×ÑØ#¨q¸qÐUVô
ˆð 	�‰��1  A ˜xˆÔ(Ü$ SÓ)ˆØ×"Ñ"Ó$ ^Ñ4°VÑ<¸QÑ?ˆÜ—:‘:˜l¨LÔ9Ñ9Ø˜Ò Ñ Ð r   é   é   )Ú	n_samplesÚrandom_stateé   )r6   Ú	n_targetsr7   c                 ó’  •— t        j                  ‰dd¬«      }|j                  | || |fg¬«       t        |«      }|j	                  «       d   d   d   }t        j                  ‰ddd¬«      }|j                  | || |fg¬«       t        |«      }|j	                  «       d   d   d   }t        j                  ||«      rJ ‚||k  sJ ‚y )Nr   r   r"   r$   Úloglossr   r&   )r(   ÚXGBClassifierr*   r   r+   r,   r-   )r   r   Úclfr/   r0   r1   r2   r   s          €r   Úrun_clfz&check_init_estimation.<locals>.run_clf5   sÑ   ø€ Ü×Ñ¨KÀ1ÐSTÔUˆØ�‰��1  A ˜xˆÔ(Ü$ SÓ)ˆØ×"Ñ"Ó$ ^Ñ4°YÑ?ÀÑBˆä×ÑØ#¨q¸qÐUVô
ˆð 	�‰��1  A ˜xˆÔ(Ü$ SÓ)ˆØ×"Ñ"Ó$ ^Ñ4°YÑ?ÀÑBˆÜ—:‘:˜l¨LÔ9Ñ9Ø˜Ò Ñ Ð r   é   )r6   Ún_labelsÚ	n_classesr7   )Úsklearn.datasetsr   r   r   r,   Úndarray)r   r   r   r   r3   r   r   r>   s   `       r   Úcheck_init_estimationrD      sÄ   ø€ ÷ñ ð!”2—:‘:ð !¤"§*¡*ð !°õ !ñ   T¸Ô;�D€A€qÙˆAˆq„Má T°QÀRÔH�D€A€qÙˆAˆq„Mð!”2—:‘:ð !¤"§*¡*ð !°õ !ñ  ¨¸BÔ?�D€A€qÙˆAˆq„MÙ)Ø ¨a¸bô�D€A€qñ ˆAˆq…Mr   Úweightedc                 ó
  — ddl m} ddlm} ddlm} d}d}d}d}t        j                  j                  d«      }	 ||||	¬	«      \  }
}|r|	j                  |¬
«      }nd}t        j                  |
||¬«      }t        j                  ddg«      }i }t        j                  d| ||dœ|||dfg|¬«      }|j                  |d¬«      }t        j                  |d   d   «      sJ ‚|d   d   d   dk  sJ ‚t!        |j"                  «      D �cg c]#  } |t%        t'        ||||   ¬«      |«      «      ‘Œ% }}t        j(                  |j*                  «      }t!        |j*                  d   «      D ]Ç  }||   }t        j                  d| ||dœ|||dfg||   |¬«      }t        j                  |d   d   «      sJ ‚|d   d   d   dk  sJ ‚t        j,                  j/                  t        j                  |d   d   «      t        j                  |d   d   «      dd¬«       |j                  |«      |dd…|f<   ŒÉ t!        |j*                  d   «      D ]0  }t        j,                  j/                  |dd…|f   |dd…|f   «       Œ2 yc c}w )zTest for quantile loss.r   )r   )Úmean_pinball_loss)Ú_metric_decoratorr4   é   g        iÊ  )r6   Ú
n_featuresr7   )ÚsizeN©Úweightgš™™™™™¹?ç      à?zreg:quantileerror)Ú	objectiver   Úquantile_alphar   ÚTrain©Únum_boost_roundÚevalsr+   T)Ústrict_shapeÚquantileéÿÿÿÿg      4@)Úsample_weightÚalpha)rS   rT   Úcustom_metricr+   g      >@rG   g�íµ ÷Æ°>)ÚatolÚrtol)rB   r   Úsklearn.metricsrG   Úxgboost.sklearnrH   r,   ÚrandomÚRandomStater(   ÚQuantileDMatrixÚarrayÚtrainÚpredictÚtmÚnon_increasingÚrangerK   r   r   ÚemptyÚshapeÚtestingÚassert_allclose)r   rE   r   rG   rH   r6   rJ   r!   r   Úrngr   r   rM   ÚXyrY   r+   Úbooster_multiÚpredt_multiÚiÚmetricsÚpredtsÚaÚ	booster_is                          r   Úcheck_quantile_lossru   N   s¶  € å0Ý1å1à€IØ€JØ€Lð €JÜ
�)‰)×
Ñ
 Ó
%€CáØØØô�D€A€qñ
 Ø—‘ �Ó+‰àˆä	×	Ñ	˜Q ¨&Ô	1€Bä�H‰H�c˜3�ZÓ €EØ$&€LÜ—I‘Ià,Ø&Ø#Ø$ñ		
ð 	Ø$Ø�Gˆ}ˆoØ!ô€Mð  ×'Ñ'¨¸Ð'Ó>€Kä×Ñ˜\¨'Ñ2°:Ñ>Ô?Ñ?Ø˜Ñ  Ñ,¨RÑ0°4Ò7Ñ7ô �u—z‘zÓ"öð ñ 	ÜÜÐ)¸ÀuÈQÁxÔPØ!óõ	
ð€Gð ô �X‰X�k×'Ñ'Ó(€FÜ�5—;‘;˜q‘>Ó"ò -ˆØ�!‰Hˆä—I‘Ià0Ø*Ø"#Ø(ñ	ð Ø(Ø˜�=�/Ø! !™*Ø%ô
ˆ	ô × Ñ  ¨gÑ!6°zÑ!BÔCÑCØ˜GÑ$ ZÑ0°Ñ4°tÒ;Ñ;Ü
�
‰
×"Ñ"Ü�H‰H�\ 'Ñ*¨:Ñ6Ó7Ü�H‰H�\ 'Ñ*Ð+>Ñ?Ó@ØØð	 	#ô 	
ð !×(Ñ(¨Ó,ˆŠq�!ˆtŠð1-ô4 �5—;‘;˜q‘>Ó"ò DˆÜ
�
‰
×"Ñ" 6ª!¨Q¨$¡<°ºQÀ¸TÑ1BÕCñDùòKs   Ä	(J Ú	n_entriesÚindptrÚdataÚdtypesc                 ó¤  — ddl m} |j                  d   |d   k(  sJ ‚|j                  d   | k(  sJ ‚|j                  t        j
                  k(  sJ ‚t        d|j                  «      D ]g  }t        ||dz
     «      }t        ||   «      }t        |dz   |«      D ]4  }||   ||dz
     kD  sJ ‚ |||dz
     «      sŒ"||   ||dz
     dz   k(  rŒ4J ‚ Œi y)zCheck the cut values.r   ©Úis_categorical_dtyperW   r   N)	Úpandas.api.typesr|   ri   Údtyper,   Úuint64rg   rK   Úint)	rv   rw   rx   ry   r|   rp   ÚbegÚendÚjs	            r   Ú	check_cutr„   ¥   sÙ   € õ 6à�:‰:�a‰=˜F 2™JÒ&Ñ&Ø�:‰:�a‰=˜IÒ%Ñ%à�<‰<œ2Ÿ9™9Ò$Ñ$Ü�1�f—k‘kÓ"ò 2ˆÜ�&˜˜Q™‘-Ó ˆÜ�&˜‘)‹nˆÜ�s˜Q‘w Ó$ò 	2ˆAØ˜‘7˜T ! a¡%™[Ò(Ñ(Ù# F¨1¨q©5¡MÕ2Ø˜A‘w $ q¨1¡u¡+°¡/Ó1Ñ1ñ	2ñ2r   Úuse_cupyc                 óš  — ddl m} d}d}d}t        j                  g|z  }t	        j
                  |||¬«      \  }}}	t        j                  |||	|¬«      }
|
j                  «       \  }}t        |dz   |z  |||«       t        j                  |||	¬	«      }
t        j                  | |d
œ|
«       |
j                  «       \  }}t        |dz   |z  |||«       d}d}t	        j                  t	        j                  ||||«      ddiŽ}t        j                  |«      }t        j                  | |d
œ|
«       |
j                  «       \  }}t        |dz   |z  |||«       d}t	        j                  |||dd¬«      \  }}|r*ddl}ddl}|j#                  |«      }|j%                  |«      }t        j                  |||d¬«      }|j                  «       \  }}t        ||z  |||j&                  «       t        j                  ||d¬«      }t        j                  | |d
œ|«       |j                  «       \  }}t        ||z  |||j&                  «       t	        j                  |||ddd¬«      \  }}t)        |j&                  D �cg c]  } ||«      sŒd‘Œ c}«      }||z
  }||z  |dz   |z  z   }t        j                  |||d¬«      }|j                  «       \  }}t        ||||j&                  «       t        j                  ||d¬«      }t        j                  | |d
œ|«       |j                  «       \  }}t        ||||j&                  «       yc c}w )zCheck with optional cupy.r   r{   i   é   é   )r…   )rM   Úmax_binr   rL   )r   r‰   r8   é   Úcacheé    Fgš™™™™™é?)ÚsparsityNT)r‰   Úenable_categorical©rŽ   rN   )r�   Ú	cat_ratio)r}   r|   r,   Úfloat32re   r   r(   ra   Úget_quantile_cutr„   ÚDMatrixrc   ÚIteratorForTestÚmake_batchesÚmake_categoricalÚcudfÚcupyÚfrom_pandasrb   ry   Úlen)r   r…   r|   r6   rJ   r‰   ry   r   r   ÚwÚXywrw   rx   Ú	n_batchesÚn_samples_per_batchÚitrm   Ún_categoriesr—   Úcpr~   Ún_cat_featuresÚn_num_featuresrv   s                           r   Úcheck_get_quantile_cut_devicer¤   ¸   s  € å5à€IØ€JØ€GÜ�j‰jˆ\˜JÑ&€Fô × Ñ  ¨JÀÔJ�G€A€qˆ!ä×*Ñ*¨1¨a¸À7ÔK€CØ×'Ñ'Ó)�L€FˆDÜˆw˜‰{˜jÑ(¨&°$¸Ô?ä
�+‰+�a˜ 1Ô
%€CÜ‡I�I˜k°gÑ>ÀÔDØ×'Ñ'Ó)�L€FˆDÜˆw˜‰{˜jÑ(¨&°$¸Ô?à€IØÐÜ	×	Ñ	Ü	�‰Ð,¨j¸)ÀXÓ	Nð
àñ
€Bô —k‘k "“o€BÜ‡I�I˜k°gÑ>ÀÔDØ×'Ñ'Ó)�L€FˆDÜˆw˜‰{˜jÑ(¨&°$¸Ô?ð €LÜ×Ñ˜y¨*°lÀEÐTWÔX�D€A€qÙÛÛà×Ñ˜QÓˆØ�H‰H�Q‹Kˆä	×	Ñ	˜Q ¨7ÀtÔ	L€BØ×&Ñ&Ó(�L€FˆDÜˆl˜ZÑ'¨°°q·x±xÔ@ä	�‰�Q˜¨dÔ	3€BÜ‡I�I˜k°gÑ>ÀÔCØ×&Ñ&Ó(�L€FˆDÜˆl˜ZÑ'¨°°q·x±xÔ@ô ×ÑØ�:˜|¨U¸SÈCô�D€A€qô ¨¯©ÖQ Ñ5IÈ%Õ5Pš!ÒQÓR€NØ .Ñ0€NØ˜~Ñ-°¸1±ÀÑ0NÑN€Iä	×	Ñ	˜Q ¨7ÀtÔ	L€BØ×&Ñ&Ó(�L€FˆDÜˆi˜  q§x¡xÔ0ä	�‰�Q˜¨dÔ	3€BÜ‡I�I˜k°gÑ>ÀÔCØ×&Ñ&Ó(�L€FˆDÜˆi˜  q§x¡xÕ0ùò Rs   É;MÊ	Mc                 óD   — | dk(  }t        | d«       |rt        | d«       yy)zCheck the quantile cut getter.Úgpu_histFTN)r¤   )r   r…   s     r   Úcheck_get_quantile_cutr§   ý   s*   € ð ˜jÑ(€HÜ! +¨uÔ5ÙÜ% k°4Õ8ð r   r   ÚrowsÚcolsÚroundsÚcatsÚdevicec                 ó®  — t        j                  | ||d«      \  }}t        j                  | ||d«      \  }}	i }
i }|t        |dœ}t        j                  ||d¬«      }t        j
                  ||||dfg|
¬«       t        j                  ||d¬«      }t        j
                  ||||dfg|¬«       t        j                  j                  t        j                  |
d   d   «      t        j                  |d   d   «      d¬	«       t        j                  |d   d   «      sJ ‚i }t        |d
<   d|d<   t        j                  ||d¬«      }t        j
                  ||||dfg|¬«       |d   d   }|d   d   }t        ||«      D ]  \  }}||k\  rŒJ ‚ d|d<   i }t        j
                  ||d|dfg|¬«       t        j                  |d   d   «      sJ |«       ‚y)z0Test for one-hot encoding with categorical data.TF)r   Úmax_cat_to_onehotr¬   r�   rQ   rR   r%   gü©ñÒMbP?©r\   r®   r   Ú
reg_lambdag      ð?rŒ   N)re   r–   Ú
USE_ONEHOTr(   r“   rc   r,   rj   rk   rb   rf   ÚUSE_PARTÚzip)r¨   r©   rª   r«   r¬   r   ÚonehotÚlabelÚcatÚ_Úby_etl_resultsÚby_builtin_resultsÚ
parametersÚmÚby_groupingÚrmse_ohÚ
rmse_grouprs   Úbs                      r   Úcheck_categorical_oherÀ   
  s  € ô
 ×'Ñ'¨¨d°D¸$Ó?�M€FˆEÜ× Ñ   t¨T°5Ó9�F€Cˆà8:€NØ<>Ðð #ä'Øñ	"€Jô 	�‰�F˜E°eÔ<€AÜ‡I�IØØ	ØØ�7ˆ|ˆnØ#õô 	�‰�C˜°4Ô8€AÜ‡I�IØØ	ØØ�7ˆ|ˆnØ'õô ‡J�J×ÑÜ
�‰� Ñ(¨Ñ0Ó1Ü
�‰Ð# GÑ,¨VÑ4Ó5Øð ô ô
 ×ÑÐ/°Ñ8¸Ñ@ÔAÑAà57€Kä&.€JÐ"Ñ#Ø €Jˆ|ÑÜ�‰�C˜°4Ô8€AÜ‡I�IØØ	ØØ�7ˆ|ˆnØ õð ! Ñ)¨&Ñ1€GØ˜WÑ% fÑ-€Jä�G˜ZÓ(ò ‰ˆˆ1Ø�A‹v‰ðð  #€Jˆ|ÑØ€KÜ‡I�IØØ	ØØ�7ˆ|ˆnØ õô ×Ñ˜[¨Ñ1°&Ñ9Ô:ÐG¸KÔGÐ:r   c                 óÎ   ‡‡‡	— ||dœŠ	t        j                  | ||dd¬«      \  }Št        j                  |‰d¬«      Šdt        dd	fˆˆˆ	fd
„} |t
        «        |t        «       y	)z+Check categorical data with missing values.)r   r¬   FrN   )rJ   r    r´   r�   Tr�   r®   r	   Nc                 ó,  •— | ‰d<   i }t        j                  ‰‰d‰dfg|¬«      }t        j                  |d   d   «      sJ ‚|j	                  ‰«      }t        j
                  ‰|«      }t        j                  j                  ||d   d   d   d¬«       y )	Nr®   rˆ   rQ   rR   r%   rW   gñhãˆµøô>r¯   )	r(   rc   re   rf   rd   Úroot_mean_squarer,   rj   rk   )r®   r+   ÚboosterÚy_predtr%   rm   rµ   rº   s        €€€r   Úrunz&check_categorical_missing.<locals>.runb  sœ   ø€ à*;ˆ
Ð&Ñ'à(*ˆÜ—)‘)ØØØØ˜�=�/Ø%ô
ˆô × Ñ  ¨gÑ!6°vÑ!>Ô?Ñ?Ø—/‘/ "Ó%ˆä×"Ñ" 5¨'Ó2ˆÜ
�
‰
×"Ñ" 4¨°gÑ)>¸vÑ)FÀrÑ)JÐQUÐ"ÕVr   )re   r–   r(   r“   r€   r±   r²   )
r¨   r©   r«   r¬   r   r¶   rÆ   rm   rµ   rº   s
          @@@r   Úcheck_categorical_missingrÇ   X  sj   ú€ ð 2=ÈÑ!O€JÜ×$Ñ$Ø˜¨D¸Èô�J€Cˆô 
�‰�S˜%°DÔ	9€BðWœsð W t÷ Wñ& Œ
„Oñ Œ…Mr   ÚparamÚdmatÚ
num_roundsc                 ó"  — i }t        j                  | |||dfgd|¬«      }|j                  «       |j                  «       k(  sJ ‚|j	                  «       |k(  sJ ‚|j
                  |j
                  k(  sJ ‚|j                  |j                  k(  sJ ‚|S )z-Get training result from parameters and data.rc   F)rT   Úverbose_evalr+   )r(   rc   Únum_featuresÚnum_colÚnum_boosted_roundsÚfeature_namesÚfeature_types)rÈ   rÉ   rÊ   ÚresultrÄ   s        r   Útrain_resultrÓ   {  s“   € ð  €FÜ�i‰iØØØØ�gˆÐØØô€Gð ×ÑÓ! T§\¡\£^Ò3Ñ3Ø×%Ñ%Ó'¨:Ò5Ñ5Ø× Ñ  D×$6Ñ$6Ò6Ñ6Ø× Ñ  D×$6Ñ$6Ò6Ñ6à€Mr   c                   ó<   — e Zd ZdZdej
                  dededefd„Z	y)ÚResetStrategyz"Callback for testing multi-output.r   ÚepochÚ	evals_logr	   c                 ób   — |dz  dk(  r|j                  ddi«       y|j                  ddi«       y)Né   r   Úmulti_strategyÚmulti_output_treeÚone_output_per_treeF)Ú	set_param)Úselfr   rÖ   r×   s       r   Úafter_iterationzResetStrategy.after_iteration“  s=   € Ø�1‰9˜Š>Ø�O‰OÐ-Ð/BÐCÔDð ð �O‰OÐ-Ð/DÐEÔFØr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   ÚBoosterr€   ÚdictÚboolrß   © r   r   rÕ   rÕ   �  s+   „ Ù,ð S§[¡[ð ¸ð Èð ÐRVô r   rÕ   )(rã   r   Ú	functoolsr   r   Útypingr   r   r   Únumpyr,   Úxgboostr(   Úxgboost.testingrj   re   ÚXGBModelr   r   ÚstrrD   ræ   ru   r€   rC   r„   r¤   r§   ÚiinfoÚint32Úmaxr±   r²   rÀ   rÇ   r“   rÓ   ÚcallbackÚTrainingCallbackrÕ   rç   r   r   ú<module>rô      sÆ  ðÙ ã ß -ß "Ñ "ã ã Ý ð˜Ÿ™ð ¨%ó ð3 sð 3¨tó 3ðnTD Sð TD°Dð TD¸Tó TDðn2Øð2ØŸJ™Jð2Ø.0¯j©jð2ØBEð2à	ó2ð&B1¨sð B1¸dð B1Àtó B1ðJ9¨ð 9°ó 9ð ˆR�X‰X�b—h‘hÓ×#Ñ#€
Ø€ðKHØ
ðKHØðKHØ"%ðKHØ-0ðKHØ:=ðKHØLOðKHà	óKHð\ Ø
ð Øð Ø #ð Ø-0ð Ø?Bð à	ó ðFØ��S�‰>ðØ!$§¡ðØ:=ðà	ˆ#ˆsˆ(�^óô*�C—L‘L×1Ñ1õ r   