import streamlit as st import sys import os sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../backend'))) from classification_strategy import perform_classification, make_prediction st.header("Prediction: Classification") if "data" in st.session_state: data = st.session_state.data with st.form("classification_form"): st.subheader("Classification Parameters") data_name = st.multiselect("Features", data.columns, key="classification_features") target_name = st.selectbox("Target", data.columns, key="classification_target") test_size = st.slider("Test Size", min_value=0.1, max_value=0.5, value=0.2, step=0.1, key="classification_test_size") submitted = st.form_submit_button('Train and Predict') if submitted and data_name and target_name: try: model, label_encoders, accuracy = perform_classification(data, data_name, target_name, test_size) st.session_state.classification_model = model st.session_state.classification_label_encoders = label_encoders st.session_state.classification_accuracy = accuracy st.session_state.classification_features_selected = data_name st.session_state.classification_target_selected = target_name except ValueError as e: st.error(e) if "classification_model" in st.session_state: st.subheader("Model Accuracy") st.write(f"Accuracy on test data: {st.session_state.classification_accuracy:.2f}") st.subheader("Enter values for prediction") input_values = [] for feature in st.session_state.classification_features_selected: if feature in st.session_state.classification_label_encoders: values = list(st.session_state.classification_label_encoders[feature].classes_) value = st.selectbox(f"Value for {feature}", values, key=f"classification_input_{feature}") else: value = st.number_input(f"Value for {feature}", value=0.0, key=f"classification_input_{feature}") input_values.append(value) prediction = make_prediction(st.session_state.classification_model, st.session_state.classification_label_encoders, st.session_state.classification_features_selected, st.session_state.classification_target_selected, input_values) st.write("Prediction:", prediction) else: st.error("File not loaded")