Asmitha-28 commited on
Commit
663629a
·
verified ·
1 Parent(s): 74bb484

Upload src\train_sla.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. src//train_sla.py +55 -0
src//train_sla.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # src/train_sla.py
2
+ # Train XGBoost model for SLA Breach Prediction
3
+
4
+ import os
5
+ import pandas as pd
6
+ import xgboost as xgb
7
+ import logging
8
+
9
+ logging.basicConfig(level=logging.INFO)
10
+ logger = logging.getLogger(__name__)
11
+
12
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
13
+ DATA_DIR = os.path.join(BASE_DIR, 'data', 'processed')
14
+ MODEL_DIR = os.path.join(BASE_DIR, 'models', 'sla_predictor')
15
+ MODEL_PATH = os.path.join(MODEL_DIR, 'sla_xgb.json')
16
+
17
+ FEATURE_NAMES = [
18
+ 'text_complexity_score', 'agent_queue_depth', 'customer_tier',
19
+ 'hour_of_day', 'day_of_week', 'similar_ticket_avg_hrs',
20
+ 'sentiment_score', 'repeat_issue', 'escalated_before'
21
+ ]
22
+
23
+ def main():
24
+ data_path = os.path.join(DATA_DIR, 'sla_train.csv')
25
+ if not os.path.exists(data_path):
26
+ logger.error(f"SLA training data not found at {data_path}. Run prepare_kaggle_data.py first.")
27
+ return
28
+
29
+ logger.info("Loading SLA training data...")
30
+ df = pd.read_csv(data_path)
31
+
32
+ X = df[FEATURE_NAMES]
33
+ y = df['sla_breached']
34
+
35
+ logger.info("Training XGBoost SLA Predictor...")
36
+ dtrain = xgb.DMatrix(X, label=y, feature_names=FEATURE_NAMES)
37
+
38
+ params = {
39
+ 'objective': 'binary:logistic',
40
+ 'eval_metric': 'auc',
41
+ 'max_depth': 6,
42
+ 'eta': 0.1,
43
+ 'subsample': 0.8,
44
+ 'colsample_bytree': 0.8,
45
+ 'seed': 42
46
+ }
47
+
48
+ model = xgb.train(params, dtrain, num_boost_round=100)
49
+
50
+ os.makedirs(MODEL_DIR, exist_ok=True)
51
+ model.save_model(MODEL_PATH)
52
+ logger.info(f"SLA Model saved successfully to {MODEL_PATH}")
53
+
54
+ if __name__ == "__main__":
55
+ main()