|
import streamlit as st |
|
import pandas as pd |
|
from sklearn.model_selection import train_test_split |
|
from sklearn.linear_model import LogisticRegression |
|
from sklearn.metrics import accuracy_score |
|
|
|
def run(): |
|
st.title("4. Modeling") |
|
st.write("## Overview") |
|
st.write("Building and training machine learning models to make predictions.") |
|
|
|
st.write("## Key Concepts & Explanations") |
|
st.markdown(""" |
|
- **Model Selection**: Choose the model based on the problem (e.g., Classification, Regression). |
|
- **Training Data**: The subset used to train the model. |
|
- **Test Data**: The subset used to evaluate the modelβs performance. |
|
""") |
|
|
|
file = st.file_uploader("Upload a dataset for modeling", type=["csv"]) |
|
if file: |
|
df = pd.read_csv(file) |
|
target = st.selectbox("Select the target variable", df.columns) |
|
features = st.multiselect("Select the feature columns", df.columns) |
|
|
|
if target and features: |
|
X = df[features] |
|
y = df[target] |
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) |
|
|
|
model = LogisticRegression() |
|
model.fit(X_train, y_train) |
|
y_pred = model.predict(X_test) |
|
accuracy = accuracy_score(y_test, y_pred) |
|
|
|
st.write(f"Accuracy: {accuracy * 100:.2f}%") |
|
|
|
st.write("## Quiz: Conceptual Questions") |
|
q1 = st.radio("What is overfitting?", ["Model too simple", "Model too complex", "Data too large"]) |
|
if q1 == "Model too complex": |
|
st.success("β
Correct!") |
|
else: |
|
st.error("β Incorrect.") |
|
|
|
st.write("## Code-Based Quiz") |
|
code_input = st.text_area("Write a function to split data into train and test sets", value="def split_data(df, target):\n X = df.drop(columns=[target])\n y = df[target]\n return train_test_split(X, y, test_size=0.2, random_state=42)") |
|
if "train_test_split" in code_input: |
|
st.success("β
Correct!") |
|
else: |
|
st.error("β Try again.") |
|
|
|
st.write("## Learning Resources") |
|
st.markdown(""" |
|
- π [Introduction to Machine Learning with Python](https://www.oreilly.com/library/view/introduction-to-machine/9781449369880/) |
|
""") |
|
|