sree4411 commited on
Commit
8c5bde9
Β·
verified Β·
1 Parent(s): d9f32b3

Create 5_model training /deployment

Browse files
Files changed (1) hide show
  1. pages/5_model training /deployment +132 -0
pages/5_model training /deployment ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from sklearn.model_selection import train_test_split
4
+ from sklearn.preprocessing import StandardScaler
5
+ from sklearn.linear_model import LinearRegression, LogisticRegression
6
+ from sklearn.neighbors import KNeighborsClassifier
7
+ from sklearn.tree import DecisionTreeClassifier
8
+ from sklearn.ensemble import RandomForestClassifier
9
+ from sklearn.metrics import accuracy_score, classification_report, mean_squared_error
10
+
11
+ st.set_page_config(page_title="Zero to Hero - ML Model Trainer", layout="wide")
12
+ st.title("πŸ“Š Machine Learning: Model Building, Training, and Deployment")
13
+
14
+ # Sidebar Navigation
15
+ st.sidebar.title("Navigation")
16
+ section = st.sidebar.selectbox("Choose Step", [
17
+ "Upload Dataset",
18
+ "Model Selection",
19
+ "Model Training",
20
+ "Model Evaluation",
21
+ "Model Deployment"
22
+ ])
23
+
24
+ # Session state
25
+ if 'df' not in st.session_state:
26
+ st.session_state.df = None
27
+ if 'model' not in st.session_state:
28
+ st.session_state.model = None
29
+
30
+ # Upload dataset
31
+ if section == "Upload Dataset":
32
+ st.header("πŸ“ Upload Your Dataset")
33
+ uploaded_file = st.file_uploader("Upload CSV File", type=["csv"])
34
+ if uploaded_file:
35
+ df = pd.read_csv(uploaded_file)
36
+ st.session_state.df = df
37
+ st.dataframe(df.head())
38
+
39
+ # Model selection
40
+ elif section == "Model Selection":
41
+ st.header("🧠 Choose Your ML Algorithm")
42
+ if st.session_state.df is not None:
43
+ df = st.session_state.df
44
+ st.write("Select the target column (what you want to predict):")
45
+ target = st.selectbox("Target", df.columns)
46
+ features = df.drop(columns=[target])
47
+ X = features
48
+ y = df[target]
49
+
50
+ task_type = st.radio("What type of problem is it?", ["Regression", "Classification"])
51
+
52
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
53
+ scaler = StandardScaler()
54
+ X_train = scaler.fit_transform(X_train)
55
+ X_test = scaler.transform(X_test)
56
+
57
+ if task_type == "Regression":
58
+ model_option = st.selectbox("Select Algorithm", ["Linear Regression"])
59
+ if model_option == "Linear Regression":
60
+ model = LinearRegression()
61
+
62
+ else:
63
+ model_option = st.selectbox("Select Algorithm", [
64
+ "Logistic Regression",
65
+ "K-Nearest Neighbors",
66
+ "Decision Tree",
67
+ "Random Forest"
68
+ ])
69
+
70
+ if model_option == "Logistic Regression":
71
+ model = LogisticRegression()
72
+ elif model_option == "K-Nearest Neighbors":
73
+ model = KNeighborsClassifier()
74
+ elif model_option == "Decision Tree":
75
+ model = DecisionTreeClassifier()
76
+ elif model_option == "Random Forest":
77
+ model = RandomForestClassifier()
78
+
79
+ st.session_state.model = model
80
+ st.session_state.X_train = X_train
81
+ st.session_state.X_test = X_test
82
+ st.session_state.y_train = y_train
83
+ st.session_state.y_test = y_test
84
+ st.success(f"{model_option} selected and data split for training/testing.")
85
+
86
+ else:
87
+ st.warning("Please upload a dataset first.")
88
+
89
+ # Model training
90
+ elif section == "Model Training":
91
+ st.header("πŸ‹οΈ Model Training")
92
+ if st.session_state.model is not None:
93
+ model = st.session_state.model
94
+ model.fit(st.session_state.X_train, st.session_state.y_train)
95
+ st.session_state.trained_model = model
96
+ st.success("Model trained successfully!")
97
+ else:
98
+ st.warning("Please select a model first.")
99
+
100
+ # Evaluation
101
+ elif section == "Model Evaluation":
102
+ st.header("πŸ“ˆ Model Evaluation")
103
+ if 'trained_model' in st.session_state:
104
+ model = st.session_state.trained_model
105
+ y_pred = model.predict(st.session_state.X_test)
106
+ if isinstance(model, LinearRegression):
107
+ mse = mean_squared_error(st.session_state.y_test, y_pred)
108
+ st.write(f"Mean Squared Error: {mse:.4f}")
109
+ else:
110
+ acc = accuracy_score(st.session_state.y_test, y_pred)
111
+ st.write(f"Accuracy: {acc*100:.2f}%")
112
+ st.text("Classification Report:")
113
+ st.text(classification_report(st.session_state.y_test, y_pred))
114
+ else:
115
+ st.warning("Train a model first.")
116
+
117
+ # Deployment
118
+ elif section == "Model Deployment":
119
+ st.header("πŸš€ Deployment & Inference")
120
+ if 'trained_model' in st.session_state:
121
+ st.write("Upload a new CSV file with same features to test the model on new data:")
122
+ new_file = st.file_uploader("Upload New Data", type=["csv"], key="new_data")
123
+ if new_file:
124
+ new_df = pd.read_csv(new_file)
125
+ st.write("New Input Data:")
126
+ st.dataframe(new_df.head())
127
+ scaled_input = StandardScaler().fit_transform(new_df)
128
+ predictions = st.session_state.trained_model.predict(scaled_input)
129
+ st.write("Predictions:")
130
+ st.write(predictions)
131
+ else:
132
+ st.warning("Please train and evaluate a model before deploying.")