-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbaseline_model.py
More file actions
79 lines (63 loc) · 2.56 KB
/
Copy pathbaseline_model.py
File metadata and controls
79 lines (63 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"""
Baseline Model Module
Trains and evaluates a baseline Random Forest model.
"""
import numpy as np
import time
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
from data_loader import DataLoader
class BaselineModel:
"""Creates and evaluates a baseline Random Forest classifier."""
def __init__(self):
"""Initialize the baseline model."""
self.model = None
self.train_time = None
self.accuracy = None
def create_baseline_model(self):
"""Create a Random Forest classifier with default parameters."""
self.model = RandomForestClassifier(n_estimators=50, max_depth=3, random_state=42)
return self.model
def train(self, X_train, y_train):
"""Train the baseline model and record training time."""
if self.model is None:
self.create_baseline_model()
print("Training baseline model...")
start_time = time.time()
self.model.fit(X_train, y_train)
self.train_time = time.time() - start_time
print(f"Training completed in {self.train_time:.2f} seconds")
def evaluate(self, X_test, y_test):
"""Evaluate the model on test data."""
predictions = self.model.predict(X_test)
self.accuracy = accuracy_score(y_test, predictions)
print("\n" + "=" * 50)
print("Baseline Model Evaluation")
print("=" * 50)
print(f"Accuracy: {self.accuracy:.4f} ({self.accuracy*100:.2f}%)")
print(f"Training Time: {self.train_time:.2f} seconds")
print("\nClassification Report:")
print(classification_report(y_test, predictions,
target_names=['No Churn', 'Churn']))
print("=" * 50)
return self.accuracy
def save_results(self):
"""Save baseline results for later comparison."""
results = {
'accuracy': self.accuracy,
'train_time': self.train_time,
'model_params': self.model.get_params()
}
np.save('output/baseline_results.npy', results)
print("Baseline results saved to output/baseline_results.npy")
if __name__ == "__main__":
import os
os.makedirs('output', exist_ok=True)
loader = DataLoader()
X_train, X_test, y_train, y_test = loader.load_data()
loader.get_data_info()
baseline = BaselineModel()
baseline.create_baseline_model()
baseline.train(X_train, y_train)
baseline.evaluate(X_test, y_test)
baseline.save_results()