AlvaroMros commited on
Commit
371767b
·
1 Parent(s): eb615ca

Fix import

Browse files
.gitignore CHANGED
@@ -1,3 +1,4 @@
1
  *__pycache__/
2
  example_event.html
3
  web/
 
 
1
  *__pycache__/
2
  example_event.html
3
  web/
4
+ mlruns/
src/predict/main.py CHANGED
@@ -16,9 +16,9 @@ from .models import (
16
  MODELS_TO_RUN = [
17
  EloBaselineModel(),
18
  LogisticRegressionModel(),
19
- XGBoostModel(),
20
- SVCModel(),
21
- RandomForestModel(),
22
  BernoulliNBModel(),
23
  LGBMModel(),
24
  ]
@@ -58,7 +58,7 @@ def main():
58
  parser.add_argument(
59
  '--kfold',
60
  action='store_true',
61
- help='Run 3-fold CV instead of standard split.'
62
  )
63
  args = parser.parse_args()
64
 
 
16
  MODELS_TO_RUN = [
17
  EloBaselineModel(),
18
  LogisticRegressionModel(),
19
+ # XGBoostModel(),
20
+ # SVCModel(),
21
+ # RandomForestModel(),
22
  BernoulliNBModel(),
23
  LGBMModel(),
24
  ]
 
58
  parser.add_argument(
59
  '--kfold',
60
  action='store_true',
61
+ help='Run 10-fold CV instead of standard split.'
62
  )
63
  args = parser.parse_args()
64
 
src/predict/models.py CHANGED
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
2
  import sys
3
  import os
4
  import pandas as pd
5
- from typing import Dict, Any, Optional
6
  from sklearn.linear_model import LogisticRegression
7
  from sklearn.svm import SVC
8
  from sklearn.naive_bayes import BernoulliNB
@@ -88,7 +88,7 @@ class BaseMLModel(BaseModel):
88
  self.fighters_df = None
89
  self.fighter_histories = {}
90
 
91
- def train(self, train_fights: list[dict[str, any]]) -> None:
92
  """
93
  Trains the machine learning model. This involves loading fighter data,
94
  pre-calculating histories, and fitting the model on the preprocessed data.
 
2
  import sys
3
  import os
4
  import pandas as pd
5
+ from typing import Dict, Any, Optional, List
6
  from sklearn.linear_model import LogisticRegression
7
  from sklearn.svm import SVC
8
  from sklearn.naive_bayes import BernoulliNB
 
88
  self.fighters_df = None
89
  self.fighter_histories = {}
90
 
91
+ def train(self, train_fights: List[Dict[str, Any]]) -> None:
92
  """
93
  Trains the machine learning model. This involves loading fighter data,
94
  pre-calculating histories, and fitting the model on the preprocessed data.
src/predict/pipeline.py CHANGED
@@ -291,27 +291,17 @@ class PredictionPipeline:
291
  # Train and evaluate
292
  model.train(train_set)
293
  correct = 0
294
- total_fights = 0
295
  for fight in test_set:
296
- if fight['winner'] not in ["Draw", "NC", ""]:
297
- prediction = model.predict(fight)
298
- if prediction.get('winner') == fight['winner']:
299
- correct += 1
300
- total_fights += 1
301
 
302
- acc = correct / total_fights if total_fights > 0 else 0.0
303
  fold_results[model_name] = acc
304
 
305
- # Log metrics and register model to appear in MLflow Models tab
306
  mlflow.log_metric(f"accuracy_{model_name}", acc)
307
- mlflow.log_metric(f"total_fights_{model_name}", total_fights)
308
-
309
- # Register the model with MLflow to appear in Models tab
310
- mlflow.sklearn.log_model(
311
- model,
312
- f"model_{model_name}",
313
- registered_model_name=f"{model_name}_UFC_Model"
314
- )
315
 
316
  all_fold_metrics.append(fold_results)
317
 
 
291
  # Train and evaluate
292
  model.train(train_set)
293
  correct = 0
 
294
  for fight in test_set:
295
+ prediction = model.predict(fight)
296
+ if prediction.get('winner') == fight['winner']:
297
+ correct += 1
 
 
298
 
299
+ acc = correct / len(test_set) if test_set else 0.0
300
  fold_results[model_name] = acc
301
 
302
+ # Log metrics and model artifact
303
  mlflow.log_metric(f"accuracy_{model_name}", acc)
304
+ mlflow.sklearn.log_model(model, f"model_{model_name}")
 
 
 
 
 
 
 
305
 
306
  all_fold_metrics.append(fold_results)
307