+
    LCj                         R t ^ RIt^ RIHt ^ RIt^ RIt^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIt^ RIHtHtHt ]! ]4      t. ROtRtR R	 lt]R
8X  d
   ]! 4        R# R# )z
Train the XGBoost crop feasibility classifier.

Usage:
    python -m ml_pipeline.training.train_xgb_feasibility         --input data/processed/final_feature_matrix.csv         --output-dir data/models/v1
N)Path)classification_report)cross_val_scoretrain_test_split)LabelEncoder)check_minimum_samples
get_loggersave_training_metadatafeasibility_labelc                    V ^8  d   QhRR/# )   returnN )formats   "WC:\Crop_Prediction\Backend\crop-ai-system\ml_pipeline\training\train_xgb_feasibility.py__annotate__r   $   s     Z8 Z8d Z8    c                  6   \         P                  ! R R7      p V P                  RRR7       V P                  RRR7       V P                  4       p\        P
                  ! VP                  4      p\        \        \        .,           4      \        VP                  4      ,
          pV'       d   \        RV 24      hVP                  \        \        .,           R7      p\        \        V4      R^dR	7       V\        ,          P                  p\!        4       pVP#                  V\        ,          4      p\        P$                  ! V\        ,          4      P'                  4       p\(        P+                  R
V 24       VP-                  4       ^8  d(   \(        P/                  RVP-                  4        R24       \1        WFR^*VR7      w  rr\2        P4                  ! R^RRR^*RR7      pVP7                  WW3.RR7       VP9                  V	4      p\;        WVP<                  RR7      p\(        P+                  R\;        WVP<                  R7       24       \?        WV^RR7      p\(        P+                  RVPA                  4       R RVPC                  4       R 24       VPA                  4       R8  d)   \(        P/                  RVPA                  4       R  R!24       \E        VPF                  4      pVPI                  RRR"7       R#VR$VR%\        /pVR&,          p\J        PL                  ! VV4       \O        VRR'VR(\Q        VPA                  4       4      R)\Q        VPC                  4       4      /\        \        V4      \        V	4      R*7       \(        P+                  R+V 24       R,# )-z$Train XGBoost feasibility classifier)descriptionz--inputT)requiredz--output-dirz#Input is missing required columns: )subsetxgb_feasibility)minimumzClass distribution:
zSmallest class has only up    samples. Predictions for this class will be less reliable — collect more labeled examples for it if possible.g?)	test_sizerandom_statestratifyi,  g?g?mlogloss)n_estimators	max_depthlearning_rate	subsamplecolsample_bytreer   eval_metricF)eval_setverbose)target_namesoutput_dictz Test set classification report:
)r%   accuracy)cvscoringz5-fold CV accuracy: z.3fz +/- g333333?zCross-validated accuracy is z.1%u   , which is low. Review feature quality and label correctness before deploying this model to production — it may not provide reliable guidance.)parentsexist_okmodellabel_encoderfeature_colszxgb_feasibility.pklr   cv_accuracy_meancv_accuracy_std)
model_namemetricsr.   n_trainn_testzSaved model bundle to N))argparseArgumentParseradd_argument
parse_argspdread_csvinputsetFEATURE_COLUMNSTARGET_COLUMNcolumns
ValueErrordropnar   lenvaluesr   fit_transformSeriesvalue_countsloggerinfominwarningr   xgbXGBClassifierfitpredictr   classes_r   meanstdr   
output_dirmkdirjoblibdumpr	   float)parserargsdfmissing_colsXleyclass_countsX_trainX_testy_trainy_testr,   y_predreport	cv_scoresrR   bundleoutput_paths                      r   mainrh   $   s   $$1WXF
	D1
6D	TZZ	 B-89C

OKL>|nMNN	/]O;	<B #b'#4cB
?""A	B
M*+A99R./<<>L
KK'~67B&|'7'7'9&: ;8 9	
 (8	"q($GW E 
II"#   ]]6"F"6Y]^F
KK34I&gigrgr4s3tuv!:FI
KK&y~~'7&<E)--/RUAVWX~~#*9>>+;C*@ AQ R	
 doo&JTD1uor>?SF44K
KK$$#Vinn&6 7uY]]_5

 %G6{ KK(67r   __main__)rainfall_mmtemp_chumidityseason_indexrainfall_anomalyrainfall_ma3rainfall_lag1water_req_mm
min_temp_c
max_temp_cdrought_tolerantgrowth_days)__doc__r5   pathlibr   rT   xgboostrK   sklearn.metricsr   sklearn.model_selectionr   r   sklearn.preprocessingr   pandasr9   #ml_pipeline.training.training_utilsr   r   r	   __name__rG   r=   r>   rh   r   r   r   <module>r      s]        1 E .  i i	H	 $Z8z zF r   