uservipin commited on
Commit
6e7eaef
1 Parent(s): 8ef07dc

restructuring code

Browse files
Files changed (2) hide show
  1. app.py +59 -26
  2. classification.py +13 -10
app.py CHANGED
@@ -93,13 +93,6 @@ def main():
93
  # st.write("X",X.head(5) )
94
  # st.write("y", y.head(5))
95
 
96
-
97
- clf = ClassificationModels(X,y)
98
-
99
- # Split the data
100
- clf.split_data()
101
- # select model to perform classification
102
-
103
  # Add a multiple selection dropdown
104
 
105
  list_of_classifier_models = [
@@ -202,60 +195,101 @@ def main():
202
  init = st.selectbox(f"Initialization Method {selected_model} {hyperparameter}", ["k-means++", "random"])
203
  hyperparameters_values[selected_model][hyperparameter] = init
204
  st.write("Selected Initialization Method:", init) # Add more hyperparameters as needed for each model
205
- st.write("Hyperparameters:", hyperparameters_values)
 
 
 
 
 
 
 
 
 
206
 
207
  for models in selected_models:
 
 
 
 
 
 
 
 
 
 
 
208
  if models == "Naive Bayes Classifier":
209
- naive_bayes_model = clf.naive_bayes_classifier()
210
  naive_bayes_accuracy = clf.evaluate_model(naive_bayes_model)
211
- naive_bayes_classification_report = clf.evaluate_classification_report(naive_bayes_model)
212
  st.write("Naive Bayes Accuracy:", naive_bayes_accuracy)
 
213
  # st.write("Naive Bayes Classification Report:", pd.DataFrame(naive_bayes_classification_report))
214
  if models == "Logistic Regression":
215
-
216
- logistic_regression_model = clf.logistic_regression()
217
  logistic_regression_accuracy = clf.evaluate_model(logistic_regression_model)
218
- logistic_regression_classification_report = clf.evaluate_classification_report(logistic_regression_model)
219
  st.write("Logistic Regression Accuracy:", logistic_regression_accuracy)
 
220
  # st.write("Logistic Regression Classification Report:", pd.DataFrame(logistic_regression_classification_report))
221
 
222
  if models == "Decision Tree":
223
- decision_tree_model = clf.decision_tree()
224
  decision_tree_accuracy = clf.evaluate_model(decision_tree_model)
225
- decision_tree_classification_report = clf.evaluate_classification_report(decision_tree_model)
226
  st.write("Decision Tree Accuracy:", decision_tree_accuracy)
 
227
  # st.write("Decision Tree Classification Report:", pd.DataFrame(decision_tree_classification_report))
228
 
229
  if models == "Random Forests":
230
- random_forests_model = clf.random_forests()
231
  random_forests_accuracy = clf.evaluate_model(random_forests_model)
232
- random_forest_classification_report = clf.evaluate_classification_report(random_forests_model)
 
233
  st.write("Random Forests Accuracy:", random_forests_accuracy)
234
  # st.write("Random Forests Classification Report:", pd.DataFrame(random_forest_classification_report))
235
 
236
  if models == "SVM":
237
- svm_model = clf.support_vector_machines()
238
  svm_accuracy = clf.evaluate_model(svm_model)
239
- svm_classification_report = clf.evaluate_classification_report(svm_model)
 
240
  st.write("Support Vector Machines Accuracy:", svm_accuracy)
241
  # st.write("Support Vector Machines Classification Report:", pd.DataFrame(svm_classification_report))
242
 
243
 
244
  if models == "KNN":
245
- knn_model = clf.k_nearest_neighbour()
246
  knn_accuracy = clf.evaluate_model(knn_model)
247
- knn_classification_report = clf.evaluate_classification_report(knn_model)
 
248
  st.write("K-Nearest Neighbors Accuracy:", knn_accuracy)
249
  # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
250
 
251
  if models == "K- Means Clustering":
252
- knn_model = clf.k_means_clustering()
253
- knn_accuracy = clf.evaluate_model(knn_model)
254
- knn_classification_report = clf.evaluate_classification_report(knn_model)
255
- st.write("K-Nearest Neighbors Accuracy:", knn_accuracy)
 
256
  # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
257
 
258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
 
260
  elif choice == "Regressor":
261
  regressor()
@@ -276,4 +310,3 @@ def main():
276
 
277
  if __name__ == "__main__":
278
  main()
279
-
 
93
  # st.write("X",X.head(5) )
94
  # st.write("y", y.head(5))
95
 
 
 
 
 
 
 
 
96
  # Add a multiple selection dropdown
97
 
98
  list_of_classifier_models = [
 
195
  init = st.selectbox(f"Initialization Method {selected_model} {hyperparameter}", ["k-means++", "random"])
196
  hyperparameters_values[selected_model][hyperparameter] = init
197
  st.write("Selected Initialization Method:", init) # Add more hyperparameters as needed for each model
198
+ # st.write("Hyperparameters:", hyperparameters_values)
199
+
200
+
201
+ clf = ClassificationModels(X,y,hyperparameters_values)
202
+ # model_accuracy = {}
203
+ # Split the data
204
+ clf.split_data()
205
+
206
+
207
+ accuracy_dict= {}
208
 
209
  for models in selected_models:
210
+
211
+ model_hyperparameters = hyperparameters_values.get(models, {}) # Get selected hyperparameters for this model
212
+
213
+ if models not in accuracy_dict:
214
+ accuracy_dict[models] = 0
215
+
216
+ # st.write("trained param",trained_models)
217
+ # for model_name in model_hyperparameters
218
+
219
+
220
+
221
  if models == "Naive Bayes Classifier":
222
+ naive_bayes_model = clf.naive_bayes_classifier(model_hyperparameters)
223
  naive_bayes_accuracy = clf.evaluate_model(naive_bayes_model)
224
+ # naive_bayes_classification_report = clf.evaluate_classification_report(naive_bayes_model)
225
  st.write("Naive Bayes Accuracy:", naive_bayes_accuracy)
226
+ accuracy_dict[models] = naive_bayes_accuracy
227
  # st.write("Naive Bayes Classification Report:", pd.DataFrame(naive_bayes_classification_report))
228
  if models == "Logistic Regression":
229
+ # st.write("Logistic Regression Model:", model_hyperparameters)
230
+ logistic_regression_model = clf.logistic_regression(model_hyperparameters)
231
  logistic_regression_accuracy = clf.evaluate_model(logistic_regression_model)
232
+ # logistic_regression_classification_report = clf.evaluate_classification_report(logistic_regression_model)
233
  st.write("Logistic Regression Accuracy:", logistic_regression_accuracy)
234
+ accuracy_dict[models] = logistic_regression_accuracy
235
  # st.write("Logistic Regression Classification Report:", pd.DataFrame(logistic_regression_classification_report))
236
 
237
  if models == "Decision Tree":
238
+ decision_tree_model = clf.decision_tree(model_hyperparameters)
239
  decision_tree_accuracy = clf.evaluate_model(decision_tree_model)
240
+ # decision_tree_classification_report = clf.evaluate_classification_report(decision_tree_model)
241
  st.write("Decision Tree Accuracy:", decision_tree_accuracy)
242
+ accuracy_dict[models] = decision_tree_accuracy
243
  # st.write("Decision Tree Classification Report:", pd.DataFrame(decision_tree_classification_report))
244
 
245
  if models == "Random Forests":
246
+ random_forests_model = clf.random_forests(model_hyperparameters)
247
  random_forests_accuracy = clf.evaluate_model(random_forests_model)
248
+ accuracy_dict[models] = random_forests_accuracy
249
+ # random_forest_classification_report = clf.evaluate_classification_report(random_forests_model)
250
  st.write("Random Forests Accuracy:", random_forests_accuracy)
251
  # st.write("Random Forests Classification Report:", pd.DataFrame(random_forest_classification_report))
252
 
253
  if models == "SVM":
254
+ svm_model = clf.support_vector_machines(model_hyperparameters)
255
  svm_accuracy = clf.evaluate_model(svm_model)
256
+ accuracy_dict[models] = svm_accuracy
257
+ # svm_classification_report = clf.evaluate_classification_report(svm_model)
258
  st.write("Support Vector Machines Accuracy:", svm_accuracy)
259
  # st.write("Support Vector Machines Classification Report:", pd.DataFrame(svm_classification_report))
260
 
261
 
262
  if models == "KNN":
263
+ knn_model = clf.k_nearest_neighbour(model_hyperparameters)
264
  knn_accuracy = clf.evaluate_model(knn_model)
265
+ accuracy_dict[models] = knn_accuracy
266
+ # knn_classification_report = clf.evaluate_classification_report(knn_model)
267
  st.write("K-Nearest Neighbors Accuracy:", knn_accuracy)
268
  # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
269
 
270
  if models == "K- Means Clustering":
271
+ kmeans_model = clf.k_means_clustering(model_hyperparameters)
272
+ kmeans_accuracy = clf.evaluate_model(kmeans_model)
273
+ accuracy_dict[models] = kmeans_accuracy
274
+ # knn_classification_report = clf.evaluate_classification_report(knn_model)
275
+ st.write("K-Nearest Neighbors Accuracy:", kmeans_accuracy)
276
  # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
277
 
278
 
279
+ st.write("Model Accuracy:", accuracy_dict)
280
+ max_key = ''
281
+ max_value = 0
282
+ for i in accuracy_dict:
283
+ if accuracy_dict[i] > max_value:
284
+ max_key = i
285
+ max_value = accuracy_dict[i]
286
+
287
+ st.write("Efficient Model:",max_key, accuracy_dict[max_key])
288
+
289
+ ## add test model button and redirect to test page
290
+ if st.button("Test Model", type= 'primary'):
291
+ st.write("Redirecting to test page...")
292
+ # st.experimental_rerun()
293
 
294
  elif choice == "Regressor":
295
  regressor()
 
310
 
311
  if __name__ == "__main__":
312
  main()
 
classification.py CHANGED
@@ -10,9 +10,10 @@ from sklearn.metrics import accuracy_score
10
  from sklearn.metrics import classification_report
11
 
12
  class ClassificationModels:
13
- def __init__(self, X, y):
14
  self.X = X
15
  self.y = y
 
16
 
17
  def split_data(self, test_size=0.2, random_state=42):
18
  self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(
@@ -27,42 +28,44 @@ class ClassificationModels:
27
 
28
  def logistic_regression(self, params=None):
29
  model = LogisticRegression()
30
- if params:
31
  model = GridSearchCV(model, params, cv=5)
32
  model.fit(self.X_train, self.y_train)
33
  return model
34
 
35
  def decision_tree(self, params=None):
36
  model = DecisionTreeClassifier()
37
- if params:
38
- model = GridSearchCV(model, params, cv=5)
39
  model.fit(self.X_train, self.y_train)
40
  return model
41
 
42
  def random_forests(self, params=None):
43
  model = RandomForestClassifier()
44
- if params:
45
- model = GridSearchCV(model, params, cv=5)
46
  model.fit(self.X_train, self.y_train)
47
  return model
48
 
49
  def support_vector_machines(self, params=None):
50
  model = SVC()
51
- if params:
52
- model = GridSearchCV(model, params, cv=5)
53
  model.fit(self.X_train, self.y_train)
54
  return model
55
 
56
  def k_nearest_neighbour(self, params=None):
57
  model = KNeighborsClassifier()
58
- if params:
59
- model = GridSearchCV(model, params, cv=5)
 
60
  model.fit(self.X_train, self.y_train)
61
  return model
62
 
63
 
64
  def k_means_clustering(self, n_clusters):
65
  model = KMeans(n_clusters=n_clusters)
 
66
  model.fit(self.X_train)
67
  return model
68
 
 
10
  from sklearn.metrics import classification_report
11
 
12
  class ClassificationModels:
13
+ def __init__(self, X, y,hyperparameters=None):
14
  self.X = X
15
  self.y = y
16
+ self.hyperparameters = hyperparameters
17
 
18
  def split_data(self, test_size=0.2, random_state=42):
19
  self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(
 
28
 
29
  def logistic_regression(self, params=None):
30
  model = LogisticRegression()
31
+ if self.hyperparameters and 'logistic_regression' in self.hyperparameters:
32
  model = GridSearchCV(model, params, cv=5)
33
  model.fit(self.X_train, self.y_train)
34
  return model
35
 
36
  def decision_tree(self, params=None):
37
  model = DecisionTreeClassifier()
38
+ if self.hyperparameters and 'decision_tree' in self.hyperparameters:
39
+ model = GridSearchCV(model, params =self.hyperparameters['decision_tree'], cv=5)
40
  model.fit(self.X_train, self.y_train)
41
  return model
42
 
43
  def random_forests(self, params=None):
44
  model = RandomForestClassifier()
45
+ if self.hyperparameters and 'random_forests' in self.hyperparameters:
46
+ model = GridSearchCV(model, params= self.hyperparameters['random_forests'], cv=5)
47
  model.fit(self.X_train, self.y_train)
48
  return model
49
 
50
  def support_vector_machines(self, params=None):
51
  model = SVC()
52
+ if self.hyperparameters and 'support_vector_machines' in self.hyperparameters:
53
+ model = GridSearchCV(model, params= self.hyperparameters['support_vector_machines'], cv=5)
54
  model.fit(self.X_train, self.y_train)
55
  return model
56
 
57
  def k_nearest_neighbour(self, params=None):
58
  model = KNeighborsClassifier()
59
+ if self.hyperparameters and 'k_nearest_neighbour' in self.hyperparameters:
60
+ st.write(self.hyperparameters['k_nearest_neighbour'])
61
+ model = GridSearchCV(model, params = self.hyperparameters['k_nearest_neighbour'], cv=5)
62
  model.fit(self.X_train, self.y_train)
63
  return model
64
 
65
 
66
  def k_means_clustering(self, n_clusters):
67
  model = KMeans(n_clusters=n_clusters)
68
+
69
  model.fit(self.X_train)
70
  return model
71