uservipin commited on
Commit
f273370
1 Parent(s): 6ca699d

Classification module testing

Browse files
__pycache__/classification.cpython-310.pyc CHANGED
Binary files a/__pycache__/classification.cpython-310.pyc and b/__pycache__/classification.cpython-310.pyc differ
 
app.py CHANGED
@@ -7,11 +7,12 @@ from sklearn.preprocessing import StandardScaler
7
  import warnings
8
  import streamlit as st
9
  from io import StringIO
10
-
 
11
  from classification import ClassificationModels
12
-
13
  warnings.filterwarnings("ignore")
14
  import uuid
 
15
 
16
 
17
  # data cleaning: https://bank-performance.streamlit.app/
@@ -59,237 +60,284 @@ def main():
59
  choice = st.sidebar.radio("Go to", page_options)
60
 
61
  if choice == "Classification":
62
- st.title("Classification")
63
- spectra = st.file_uploader("Upload file", type={"csv", "txt"})
64
-
65
- if spectra is not None:
66
- spectra_df = pd.read_csv(spectra)
67
-
68
- st.write(spectra_df.head(5))
69
- # st.write("Headers", spectra_df.columns.tolist())
70
- st.write("Total Rows", spectra_df.shape[0])
71
-
72
- option = st.text_input("Enter your text here:")
73
- if option:
74
- st.write("You have selected output column: ", option)
75
-
76
- y = spectra_df[option]
77
- X= spectra_df.drop(option, axis=1)
78
-
79
-
80
- # Define the columns with your content
81
- col1, col2 = st.columns([4,1], gap="small")
82
-
83
- # Add content to col1
84
- with col1:
85
- st.subheader("Train data excluding output")
86
- st.write(X.head(5))
87
-
88
- # Add content to col2
89
- with col2:
90
- st.subheader("Output")
91
- st.write(y.head(5))
92
-
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 = [
99
- "Naive Bayes Classifier",
100
- "Logistic Regression",
101
- "Decision Tree",
102
- "Random Forests",
103
- "SVM",
104
- "KNN",
105
- "K-Means Clustering"
106
- ]
107
-
108
- selected_models = st.multiselect("Select Models",list_of_classifier_models)
109
-
110
- # Execute further code based on selected models
111
- if selected_models:
112
- # Further code execution based on selected models
113
- st.write("Selected Models:", selected_models)
114
- # st.write("Selected Models type:", len(selected_models))
115
-
116
- # Toggle to add hyperparameters
117
- add_hyperparameters = st.toggle("Add Hyperparameters")
118
-
119
- models_hyperparameters = {
120
- "Naive Bayes Classifier": [],
121
- "Logistic Regression": ["C", "max_iter"],
122
- "Decision Tree": ["max_depth", "criterion"],
123
- "Random Forests": ["n_estimators", "max_depth", "criterion"],
124
- "SVM": ["C", "kernel"],
125
- "KNN": ["n_neighbors", "algorithm"],
126
- "K-Means Clustering": ["n_clusters", "init"]
127
- }
128
-
129
- # If hyperparameters should be added
130
- if add_hyperparameters:
131
- num_models = len(selected_models)
132
- max_items_per_row = 4
133
- num_rows = (num_models + max_items_per_row - 1) // max_items_per_row # Calculate number of rows
134
-
135
- #Dictionary to store selected hyperparameters for each model
136
-
137
- hyperparameters_values = {}
138
-
139
- for row in range(num_rows):
140
- cols = st.columns(min(num_models - row * max_items_per_row, max_items_per_row)) # Calculate number of columns for this row
141
- for i, col in enumerate(cols):
142
- model_index = row * max_items_per_row + i
143
- with col:
144
- if model_index < num_models:
145
-
146
- selected_model = selected_models[model_index]
147
- st.write(f"Selected Model: {selected_model}") # Display selected model name
148
-
149
- # initializing
150
- if selected_model not in hyperparameters_values:
151
- hyperparameters_values[selected_model] = {}
152
-
153
- # selected_model = st.selectbox(f"Select Model {row}-{i}", selected_models, index=model_index)
154
- selected_hyperparameters = models_hyperparameters[selected_models[model_index]]
155
-
156
-
157
- for hyperparameter in selected_hyperparameters:
158
- if hyperparameter == "max_depth":
159
- max_depth = st.slider(f"Max Depth {selected_model} {hyperparameter}", min_value=1, max_value=20, value=5)
160
- hyperparameters_values[selected_model][hyperparameter] = max_depth
161
- st.write("Selected Max Depth:", max_depth)
162
- elif hyperparameter == "criterion":
163
- criterion = st.selectbox(f"Criterion {selected_model} {hyperparameter}", ["gini", "entropy"])
164
- hyperparameters_values[selected_model][hyperparameter] = criterion
165
- st.write("Selected Criterion:", criterion)
166
- elif hyperparameter == "C":
167
- C = st.slider(f"C {selected_model} {hyperparameter}", min_value=0.01, max_value=10.0, value=1.0)
168
- hyperparameters_values[selected_model][hyperparameter] = C
169
- st.write("Selected C:", C)
170
- elif hyperparameter == "max_iter":
171
- max_iter = st.slider(f"Max Iterations {selected_model} {hyperparameter}", min_value=100, max_value=10000, step=100, value=1000)
172
- hyperparameters_values[selected_model][hyperparameter] = max_iter
173
- st.write("Selected Max Iterations:", max_iter)
174
- elif hyperparameter == "n_estimators":
175
- n_estimators = st.slider(f"Number of Estimators {selected_model} {hyperparameter}", min_value=1, max_value=100, value=10)
176
- hyperparameters_values[selected_model][hyperparameter] = n_estimators
177
- st.write("Selected Number of Estimators:", n_estimators)
178
- elif hyperparameter == "kernel":
179
- kernel = st.selectbox(f"Kernel {selected_model} {hyperparameter}", ["linear", "poly", "rbf", "sigmoid"])
180
- hyperparameters_values[selected_model][hyperparameter] = kernel
181
- st.write("Selected Kernel:", kernel)
182
- elif hyperparameter == "n_neighbors":
183
- n_neighbors = st.slider(f"Number of Neighbors {selected_model} {hyperparameter}", min_value=1, max_value=50, value=5)
184
- hyperparameters_values[selected_model][hyperparameter] = n_neighbors
185
- st.write("Selected Number of Neighbors:", n_neighbors)
186
- elif hyperparameter == "algorithm":
187
- algorithm = st.selectbox(f"Algorithm {selected_model} {hyperparameter}", ["auto", "ball_tree", "kd_tree", "brute"])
188
- hyperparameters_values[selected_model][hyperparameter] = algorithm
189
- st.write("Selected Algorithm:", algorithm)
190
- elif hyperparameter == "n_clusters":
191
- n_clusters = st.slider(f"Number of Clusters {selected_model} {hyperparameter}", min_value=2, max_value=20, value=5)
192
- hyperparameters_values[selected_model][hyperparameter] = n_clusters
193
- st.write("Selected Number of Clusters:", n_clusters)
194
- elif hyperparameter == "init":
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()
 
7
  import warnings
8
  import streamlit as st
9
  from io import StringIO
10
+ from sklearn.linear_model import LogisticRegression
11
+ from sklearn.tree import DecisionTreeClassifier
12
  from classification import ClassificationModels
 
13
  warnings.filterwarnings("ignore")
14
  import uuid
15
+ import time
16
 
17
 
18
  # data cleaning: https://bank-performance.streamlit.app/
 
60
  choice = st.sidebar.radio("Go to", page_options)
61
 
62
  if choice == "Classification":
63
+ train, test = st.tabs(['Train','Test'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
+ with train:
66
+ st.title("Classification / Train data")
67
+ spectra = st.file_uploader("Upload file", type={"csv", "txt"})
68
+
69
+ if spectra is not None:
70
+ spectra_df = pd.read_csv(spectra)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
+ st.write(spectra_df.head(5))
73
+ # st.write("Headers", spectra_df.columns.tolist())
74
+ st.write("Total Rows", spectra_df.shape[0])
 
75
 
76
+ option = st.text_input("Enter your text here:")
77
+ if option:
78
+ st.write("You have selected output column: ", option)
79
 
80
+ y = spectra_df[option]
81
+ X= spectra_df.drop(option, axis=1)
82
 
83
+ # Define the columns with your content
84
+ col1, col2 = st.columns([4,1], gap="small")
85
 
86
+ # Add content to col1
87
+ with col1:
88
+ st.subheader("Train data excluding output")
89
+ st.write(X.head(5))
90
 
91
+ # Add content to col2
92
+ with col2:
93
+ st.subheader("Output")
94
+ st.write(y.head(5))
95
 
96
+ list_of_classifier_models = [
97
+ "Naive Bayes Classifier",
98
+ "Logistic Regression",
99
+ "Decision Tree",
100
+ "Random Forests",
101
+ "SVM",
102
+ "KNN",
103
+ "K-Means Clustering"
104
+ ]
105
+
106
+ models_hyperparameters = {
107
+ "Naive Bayes Classifier": [],
108
+ "Logistic Regression": ["C", "max_iter"],
109
+ "Decision Tree": ["max_depth", "criterion"],
110
+ "Random Forests": ["n_estimators", "max_depth", "criterion"],
111
+ "SVM": ["C", "kernel"],
112
+ "KNN": ["n_neighbors", "algorithm"],
113
+ "K-Means Clustering": ["n_clusters", "init"]
114
+ }
115
+
116
+ selected_models = st.multiselect("Select Models",list_of_classifier_models)
117
+
118
+ # Execute further code based on selected models
119
+ if selected_models:
120
+ st.write("Selected Models:", selected_models)
121
+
122
+ # Toggle to add hyperparameters
123
+ add_hyperparameters = st.toggle("Add Hyperparameters")
124
+
125
+ # If hyperparameters should be added
126
+ if add_hyperparameters:
127
+ num_models = len(selected_models)
128
+ max_items_per_row = 4
129
+ num_rows = (num_models + max_items_per_row - 1) // max_items_per_row # Calculate number of rows
130
+
131
+ #Dictionary to store selected hyperparameters for each model
132
+ hyperparameters_values = {}
133
+
134
+ for row in range(num_rows):
135
+ cols = st.columns(min(num_models - row * max_items_per_row, max_items_per_row)) # Calculate number of columns for this row
136
+ for i, col in enumerate(cols):
137
+ model_index = row * max_items_per_row + i
138
+ with col:
139
+ if model_index < num_models:
140
+
141
+ selected_model = selected_models[model_index]
142
+ st.write(f"Selected Model: {selected_model}") # Display selected model name
143
+
144
+ # initializing
145
+ if selected_model not in hyperparameters_values:
146
+ hyperparameters_values[selected_model] = {}
147
+
148
+ # selected_model = st.selectbox(f"Select Model {row}-{i}", selected_models, index=model_index)
149
+ selected_hyperparameters = models_hyperparameters[selected_models[model_index]]
150
+
151
+ for hyperparameter in selected_hyperparameters:
152
+ if hyperparameter == "max_depth":
153
+ max_depth = st.slider(f"Max Depth {selected_model} {hyperparameter}", min_value=1, max_value=20, value=5)
154
+ hyperparameters_values[selected_model][hyperparameter] = max_depth
155
+ st.write("Selected Max Depth:", max_depth)
156
+ elif hyperparameter == "criterion":
157
+ criterion = st.selectbox(f"Criterion {selected_model} {hyperparameter}", ["gini", "entropy"])
158
+ hyperparameters_values[selected_model][hyperparameter] = criterion
159
+ st.write("Selected Criterion:", criterion)
160
+ elif hyperparameter == "C":
161
+ C = st.slider(f"C {selected_model} {hyperparameter}", min_value=0.01, max_value=10.0, value=1.0)
162
+ hyperparameters_values[selected_model][hyperparameter] = C
163
+ st.write("Selected C:", C)
164
+ elif hyperparameter == "max_iter":
165
+ max_iter = st.slider(f"Max Iterations {selected_model} {hyperparameter}", min_value=100, max_value=10000, step=100, value=1000)
166
+ hyperparameters_values[selected_model][hyperparameter] = max_iter
167
+ st.write("Selected Max Iterations:", max_iter)
168
+ elif hyperparameter == "n_estimators":
169
+ n_estimators = st.slider(f"Number of Estimators {selected_model} {hyperparameter}", min_value=1, max_value=100, value=10)
170
+ hyperparameters_values[selected_model][hyperparameter] = n_estimators
171
+ st.write("Selected Number of Estimators:", n_estimators)
172
+ elif hyperparameter == "kernel":
173
+ kernel = st.selectbox(f"Kernel {selected_model} {hyperparameter}", ["linear", "poly", "rbf", "sigmoid"])
174
+ hyperparameters_values[selected_model][hyperparameter] = kernel
175
+ st.write("Selected Kernel:", kernel)
176
+ elif hyperparameter == "n_neighbors":
177
+ n_neighbors = st.slider(f"Number of Neighbors {selected_model} {hyperparameter}", min_value=1, max_value=50, value=5)
178
+ hyperparameters_values[selected_model][hyperparameter] = n_neighbors
179
+ st.write("Selected Number of Neighbors:", n_neighbors)
180
+ elif hyperparameter == "algorithm":
181
+ algorithm = st.selectbox(f"Algorithm {selected_model} {hyperparameter}", ["auto", "ball_tree", "kd_tree", "brute"])
182
+ hyperparameters_values[selected_model][hyperparameter] = algorithm
183
+ st.write("Selected Algorithm:", algorithm)
184
+ elif hyperparameter == "n_clusters":
185
+ n_clusters = st.slider(f"Number of Clusters {selected_model} {hyperparameter}", min_value=2, max_value=20, value=5)
186
+ hyperparameters_values[selected_model][hyperparameter] = n_clusters
187
+ st.write("Selected Number of Clusters:", n_clusters)
188
+ elif hyperparameter == "init":
189
+ init = st.selectbox(f"Initialization Method {selected_model} {hyperparameter}", ["k-means++", "random"])
190
+ hyperparameters_values[selected_model][hyperparameter] = init
191
+ st.write("Selected Initialization Method:", init) # Add more hyperparameters as needed for each model
192
+ # st.write("Hyperparameters:", hyperparameters_values)
193
+
194
+
195
+ clf = ClassificationModels(X,y,hyperparameters_values)
196
+ # model_accuracy = {}
197
+ # Split the data
198
+ clf.split_data()
199
+
200
+ accuracy_dict= {}
201
+
202
+ for models in selected_models:
203
+
204
+ model_hyperparameters = hyperparameters_values.get(models, {}) # Get selected hyperparameters for this model
205
+
206
+ if models not in accuracy_dict:
207
+ accuracy_dict[models] = 0
208
+
209
+ # st.write("trained param",trained_models)
210
+ # for model_name in model_hyperparameters
211
+
212
+ if models == "Naive Bayes Classifier":
213
+ naive_bayes_model = clf.naive_bayes_classifier(model_hyperparameters)
214
+ naive_bayes_accuracy = clf.evaluate_model(naive_bayes_model)
215
+ # naive_bayes_classification_report = clf.evaluate_classification_report(naive_bayes_model)
216
+ st.write("Naive Bayes Accuracy:", naive_bayes_accuracy)
217
+ accuracy_dict[models] = naive_bayes_accuracy
218
+ # st.write("Naive Bayes Classification Report:", pd.DataFrame(naive_bayes_classification_report))
219
+ if models == "Logistic Regression":
220
+ # st.write("Logistic Regression Model:", model_hyperparameters)
221
+ logistic_regression_model = clf.logistic_regression(model_hyperparameters)
222
+ logistic_regression_accuracy = clf.evaluate_model(logistic_regression_model)
223
+ # logistic_regression_classification_report = clf.evaluate_classification_report(logistic_regression_model)
224
+ st.write("Logistic Regression Accuracy:", logistic_regression_accuracy)
225
+ accuracy_dict[models] = logistic_regression_accuracy
226
+ # st.write("Logistic Regression Classification Report:", pd.DataFrame(logistic_regression_classification_report))
227
+
228
+ if models == "Decision Tree":
229
+ decision_tree_model = clf.decision_tree(model_hyperparameters)
230
+ decision_tree_accuracy = clf.evaluate_model(decision_tree_model)
231
+ # decision_tree_classification_report = clf.evaluate_classification_report(decision_tree_model)
232
+ st.write("Decision Tree Accuracy:", decision_tree_accuracy)
233
+ accuracy_dict[models] = decision_tree_accuracy
234
+ # st.write("Decision Tree Classification Report:", pd.DataFrame(decision_tree_classification_report))
235
+
236
+ if models == "Random Forests":
237
+ random_forests_model = clf.random_forests(model_hyperparameters)
238
+ random_forests_accuracy = clf.evaluate_model(random_forests_model)
239
+ accuracy_dict[models] = random_forests_accuracy
240
+ # random_forest_classification_report = clf.evaluate_classification_report(random_forests_model)
241
+ st.write("Random Forests Accuracy:", random_forests_accuracy)
242
+ # st.write("Random Forests Classification Report:", pd.DataFrame(random_forest_classification_report))
243
+
244
+ if models == "SVM":
245
+ svm_model = clf.support_vector_machines(model_hyperparameters)
246
+ svm_accuracy = clf.evaluate_model(svm_model)
247
+ accuracy_dict[models] = svm_accuracy
248
+ # svm_classification_report = clf.evaluate_classification_report(svm_model)
249
+ st.write("Support Vector Machines Accuracy:", svm_accuracy)
250
+ # st.write("Support Vector Machines Classification Report:", pd.DataFrame(svm_classification_report))
251
+
252
+
253
+ if models == "KNN":
254
+ knn_model = clf.k_nearest_neighbour(model_hyperparameters)
255
+ knn_accuracy = clf.evaluate_model(knn_model)
256
+ accuracy_dict[models] = knn_accuracy
257
+ # knn_classification_report = clf.evaluate_classification_report(knn_model)
258
+ st.write("K-Nearest Neighbors Accuracy:", knn_accuracy)
259
+ # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
260
+
261
+ if models == "K- Means Clustering":
262
+ kmeans_model = clf.k_means_clustering(model_hyperparameters)
263
+ kmeans_accuracy = clf.evaluate_model(kmeans_model)
264
+ accuracy_dict[models] = kmeans_accuracy
265
+ # knn_classification_report = clf.evaluate_classification_report(knn_model)
266
+ st.write("K-Nearest Neighbors Accuracy:", kmeans_accuracy)
267
+ # st.write("K-Nearest Neighbors Classification Report:", pd.DataFrame(knn_classification_report))
268
+
269
+ st.write("Model Accuracy:", accuracy_dict)
270
+ max_key = ''
271
+ max_value = 0
272
+ for i in accuracy_dict:
273
+ if accuracy_dict[i] > max_value:
274
+ max_key = i
275
+ max_value = accuracy_dict[i]
276
+
277
+ st.write("Efficient Model:",max_key, accuracy_dict[max_key])
278
+ st.write("Go to test tab")
279
+
280
+
281
+ with test:
282
+ spectra_1 = st.file_uploader("Upload file test the model", type={"csv", "txt"})
283
+
284
+ if spectra_1 is not None:
285
+ spectra_df1 = pd.read_csv(spectra_1)
286
+ Actual = spectra_df1['Disease']
287
+ spectra_df1 = spectra_df1.drop(columns=['Disease'])
288
+ st.write(spectra_df1.head(5))
289
+
290
+
291
+ model_dict ={
292
+ "Naive Bayes Classifier":'GaussianNB()',
293
+ "Logistic Regression":'LogisticRegression()',
294
+ "Decision Tree":'DecisionTreeClassifier()',
295
+ "Random Forests":'RandomForestClassifier()',
296
+ "SVM":'SVC()',
297
+ "KNN":'KNeighborsClassifier()',
298
+ "K- Means Clustering":'KMeans()'
299
+ }
300
+
301
+ X= spectra_df1
302
+ if max_key == "Naive Bayes Classifier":
303
+ # naive_bayes_model = clf.naive_bayes_classifier(model_hyperparameters)
304
+ naive_bayes_model =naive_bayes_model.predict()
305
+ st.write("Naive Bayes Model:", naive_bayes_model)
306
+
307
+ if max_key == "Logistic Regression":
308
+ st.write("Logistic Regression Model Hyperparameter:", model_hyperparameters)
309
+ logistic_regression_model_ = logistic_regression_model.predict(X)
310
 
311
+ X['Predict'] = logistic_regression_model_
312
+ X['Actual'] = Actual
313
+ st.write("Output : ", X)
314
 
 
 
 
 
 
 
 
 
 
 
315
  logistic_regression_accuracy = clf.evaluate_model(logistic_regression_model)
316
  # logistic_regression_classification_report = clf.evaluate_classification_report(logistic_regression_model)
317
  st.write("Logistic Regression Accuracy:", logistic_regression_accuracy)
318
+ # accuracy_dict[models] = logistic_regression_accuracy
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
 
320
+ if max_key == "Decision Tree":
321
+ decision_tree_model_ = decision_tree_model.predict(X)
322
+ X['Predict'] = decision_tree_model_
323
+ X['Actual'] = Actual
324
+ st.write("Output : ", X)
325
+
326
+ if max_key == "Random Forests":
327
+ random_forests_model = random_forests_model.predict(X)
328
+ st.write("Random Forests Model:", random_forests_model)
329
+
330
+ if max_key == "SVM":
331
+ svm_model = svm_model.predict(X)
332
+ st.write("Support Vector Machines Model:", svm_model)
333
+
334
+ if max_key == "KNN":
335
+ knn_model = knn_model.predict(X)
336
+ st.write("K-Nearest Neighbors Model:", knn_model)
337
 
338
+ if max_key == "K- Means Clustering":
339
+ kmeans_model =kmeans_model.predict(X)
340
+ st.write("K-Means Clustering Model:", kmeans_model)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
 
342
  elif choice == "Regressor":
343
  regressor()
classification.py CHANGED
@@ -10,7 +10,7 @@ from sklearn.metrics import accuracy_score
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
@@ -21,7 +21,7 @@ class ClassificationModels:
21
  )
22
 
23
 
24
- def naive_bayes_classifier(self):
25
  model = GaussianNB()
26
  model.fit(self.X_train, self.y_train)
27
  return model
 
10
  from sklearn.metrics import classification_report
11
 
12
  class ClassificationModels:
13
+ def __init__(self, X, y= None,hyperparameters=None):
14
  self.X = X
15
  self.y = y
16
  self.hyperparameters = hyperparameters
 
21
  )
22
 
23
 
24
+ def naive_bayes_classifier(self, param = None):
25
  model = GaussianNB()
26
  model.fit(self.X_train, self.y_train)
27
  return model