Benny-Tang commited on
Commit
efe4f7e
·
verified ·
1 Parent(s): db1e50f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -11
app.py CHANGED
@@ -1,12 +1,9 @@
1
  import gradio as gr
2
  import pandas as pd
3
  import numpy as np
4
- from itertools import combinations
5
  from sklearn.ensemble import GradientBoostingClassifier
6
  from sklearn.model_selection import train_test_split
7
  from sklearn.metrics import roc_auc_score
8
- import joblib
9
- import os
10
 
11
  from utils import generate_features, pick_top15, generate_system15_csv
12
 
@@ -15,23 +12,30 @@ def train_and_predict(file_obj):
15
  # Load dataset
16
  df = pd.read_csv(file_obj.name, header=None)
17
  # Columns: [draw_id?, draw_date, n1..n6, bonus, ...]
18
- # Align to schema: we only keep date, n1..n6, bonus
19
  df = df.iloc[:, :8]
20
  df.columns = ["draw_date", "n1", "n2", "n3", "n4", "n5", "n6", "bonus"]
21
 
22
- # Melt numbers into long format for training
23
  features, labels = generate_features(df)
24
 
25
- # Split into train/test
26
- X_train, X_test, y_train, y_test = train_test_split(
27
- features, labels, test_size=0.2, random_state=42, stratify=labels
28
- )
29
 
30
- # Train a simple gradient boosting model
 
 
 
 
 
 
 
 
 
31
  model = GradientBoostingClassifier(n_estimators=200, max_depth=3, random_state=42)
32
  model.fit(X_train, y_train)
33
 
34
- # Evaluate
35
  if len(np.unique(y_test)) > 1:
36
  auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
37
  else:
@@ -69,3 +73,4 @@ if __name__ == "__main__":
69
 
70
 
71
 
 
 
1
  import gradio as gr
2
  import pandas as pd
3
  import numpy as np
 
4
  from sklearn.ensemble import GradientBoostingClassifier
5
  from sklearn.model_selection import train_test_split
6
  from sklearn.metrics import roc_auc_score
 
 
7
 
8
  from utils import generate_features, pick_top15, generate_system15_csv
9
 
 
12
  # Load dataset
13
  df = pd.read_csv(file_obj.name, header=None)
14
  # Columns: [draw_id?, draw_date, n1..n6, bonus, ...]
 
15
  df = df.iloc[:, :8]
16
  df.columns = ["draw_date", "n1", "n2", "n3", "n4", "n5", "n6", "bonus"]
17
 
18
+ # Generate features
19
  features, labels = generate_features(df)
20
 
21
+ # Make sure we have at least 2 classes
22
+ if len(np.unique(labels)) < 2:
23
+ return "❌ Not enough class variety in labels to train the model.", None
 
24
 
25
+ # Train/test split with fallback
26
+ try:
27
+ X_train, X_test, y_train, y_test = train_test_split(
28
+ features, labels, test_size=0.2, random_state=42, stratify=labels
29
+ )
30
+ except ValueError:
31
+ X_train, y_train = features, labels
32
+ X_test, y_test = features, labels
33
+
34
+ # Train model
35
  model = GradientBoostingClassifier(n_estimators=200, max_depth=3, random_state=42)
36
  model.fit(X_train, y_train)
37
 
38
+ # Evaluate if possible
39
  if len(np.unique(y_test)) > 1:
40
  auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
41
  else:
 
73
 
74
 
75
 
76
+