Skip to content

Commit 2a4d21e

Browse files
committed
Added the main utils.py
1 parent 17ae35f commit 2a4d21e

File tree

2 files changed

+89
-4
lines changed

2 files changed

+89
-4
lines changed

networksecurity/components/model_trainer.py

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,85 @@
55
from networksecurity.utils.ml_metric.classification_metric import get_classification_score
66
from networksecurity.entity.config_entity import ModelTrainerConfigEntity , DataTransformationConfigEntity
77
from networksecurity.entity.artifact_entity import DataTransformationArtifactEntity , ModelTrainerArtifactEntity
8-
from networksecurity.utils.main_utils import save_obj , load_obj , load_numpy_array_data
8+
from networksecurity.utils.main_utils import save_obj , load_obj , load_numpy_array_data , evaluate_models
99
from networksecurity.utils.model_metric.estimator import NetworkModel
10+
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
11+
from sklearn.model_selection import train_test_split
12+
from sklearn.linear_model import LogisticRegression
13+
from sklearn.ensemble import RandomForestClassifier , GradientBoostingClassifier , AdaBoostClassifier
14+
from sklearn.tree import DecisionTreeClassifier
15+
from sklear.neighbors import KNeighborsClassifier
16+
1017

1118
class ModelTrainer:
1219
def __init__(self, model_trainer_config: ModelTrainerConfigEntity,
13-
data_transformation_config: DataTransformationConfigEntity,
1420
data_transformation_artifact: DataTransformationArtifactEntity):
1521
try:
1622
self.model_trainer_config = model_trainer_config
17-
self.data_transformation_config = data_transformation_config
1823
self.data_transformation_artifact = data_transformation_artifact
1924
self.logger = Custom_Logger().get_logger()
2025
self.logger.info("Model Trainer initialized with configuration and artifacts.")
2126
except Exception as e:
2227
raise CustomException(e, sys) from e
2328

29+
def train_model(self,X_train , y_train , X_test , y_test) -> NetworkModel:
30+
try:
31+
self.logger.info("Starting model training process.")
32+
models = {
33+
'LogisticRegression': LogisticRegression(),
34+
'RandomForestClassifier': RandomForestClassifier(),
35+
'GradientBoostingClassifier': GradientBoostingClassifier(),
36+
'AdaBoostClassifier': AdaBoostClassifier(),
37+
'DecisionTreeClassifier': DecisionTreeClassifier(),
38+
'KNeighborsClassifier': KNeighborsClassifier()
39+
}
40+
41+
params={
42+
"Decision Tree": {
43+
'criterion':['gini', 'entropy', 'log_loss'],
44+
# 'splitter':['best','random'],
45+
# 'max_features':['sqrt','log2'],
46+
},
47+
"Random Forest":{
48+
# 'criterion':['gini', 'entropy', 'log_loss'],
49+
50+
# 'max_features':['sqrt','log2',None],
51+
'n_estimators': [8,16,32,128,256]
52+
},
53+
"Gradient Boosting":{
54+
# 'loss':['log_loss', 'exponential'],
55+
'learning_rate':[.1,.01,.05,.001],
56+
'subsample':[0.6,0.7,0.75,0.85,0.9],
57+
# 'criterion':['squared_error', 'friedman_mse'],
58+
# 'max_features':['auto','sqrt','log2'],
59+
'n_estimators': [8,16,32,64,128,256]
60+
},
61+
"Logistic Regression":{},
62+
"AdaBoost":{
63+
'learning_rate':[.1,.01,.001],
64+
'n_estimators': [8,16,32,64,128,256]
65+
}
66+
}
67+
68+
model_report:dict = evaluate_models(X_train=X_train, y_train=y_train, X_test=X_test, y_test=y_test, models=models, params=params)
69+
except Exception as e:
70+
raise CustomException(e, sys) from e
71+
2472
def initiate_model_trainer(self) -> ModelTrainerArtifactEntity:
2573
try:
26-
pass
74+
train_file_path = self.data_transformation_artifact.transformed_train_file_path
75+
test_file_path = self.data_transformation_artifact.transformed_test_file_path
76+
77+
# Load the transformed train and test data
78+
train_arr = load_numpy_array_data(file_path=train_file_path)
79+
test_arr = load_numpy_array_data(file_path=test_file_path)
80+
pass
81+
# Split the data into features and target variable
82+
X_train, y_train = train_arr[:, :-1], train_arr[:, -1]
83+
X_test, y_test = test_arr[:, :-1], test_arr[:, -1]
84+
self.logger.info("Data loaded and split into features and target variable.")
85+
86+
model = self.train_model(X_train, y_train)
87+
self.logger.info("Model trained successfully.")
2788
except Exception as e:
2889
raise CustomException(e, sys)

networksecurity/utils/main_utils.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from pandas import DataFrame
77
from networksecurity.exception.exception import CustomException
88
from networksecurity.logger.customlogger import Custom_Logger
9+
from sklearn.model_selection import GridSearchCV
10+
from sklearn.metrics import r2_score
911

1012
logging = Custom_Logger().get_logger()
1113
def read_yaml_file(file_path: str) -> dict:
@@ -86,5 +88,27 @@ def drop_columns(df: DataFrame, cols: list) -> DataFrame:
8688
result = df.drop(cols, axis=1)
8789
logging.info("Exited the drop columns of the method Utils")
8890
return result
91+
except Exception as e:
92+
raise CustomException(e, sys) from e
93+
94+
def evaluate_models(X_train, y_train,X_test,y_test,models,param):
95+
try:
96+
report = {}
97+
98+
for i in range(len(list(models))):
99+
models = list(models.values())[i]
100+
params=param[list(models.keys())[i]]
101+
gs = GridSearchCV(models,params,cv=3)
102+
gs.fit(X_train,y_train)
103+
models.set_params(**gs.best_params_)
104+
models.fit(X_train,y_train)
105+
#model.fit(X_train, y_train) # Train model
106+
y_train_pred = models.predict(X_train)
107+
y_test_pred = models.predict(X_test)
108+
train_model_score = r2_score(y_train, y_train_pred)
109+
test_model_score = r2_score(y_test, y_test_pred)
110+
report[list(models.keys())[i]] = test_model_score
111+
return report
112+
89113
except Exception as e:
90114
raise CustomException(e, sys) from e

0 commit comments

Comments
 (0)