import streamlit as st import numpy as np import pandas as pd import pickle # Load the model and scaler model = pickle.load(open('Obezite.pkl', 'rb')) scaler = pickle.load(open('scaler.pkl', 'rb')) st.title("Obesity Prediction") # Input fields gender = st.selectbox("Gender", ("Male", "Female")) age = st.number_input("Age", min_value=0) height = st.number_input("Height (m)", min_value=0.0) weight = st.number_input("Weight (kg)", min_value=0.0) cholesterol = st.number_input("Cholesterol Level", min_value=0) blood_pressure = st.number_input("Blood Pressure", min_value=0) smoking = st.selectbox("Smoking Status", ("Non-Smoker", "Smoker")) alcohol_consumption = st.selectbox("Alcohol Consumption", ("No", "Yes")) physical_activity = st.selectbox("Physical Activity Level", ("Low", "Moderate", "High")) diet_quality = st.selectbox("Diet Quality", ("Poor", "Average", "Good")) family_history_with_overweight = st.selectbox("Family History of Obesity", ("No", "Yes")) FAVC = st.selectbox("Frequency of Eating Fatty Foods", ("No", "Yes")) FCVC = st.number_input("Frequency of Vegetables Consumption", min_value=0) NCP = st.number_input("Number of Main Meals", min_value=1) CAEC = st.selectbox("Consumption of Food Between Meals", ("No", "Yes")) CH2O = st.number_input("Water Consumption (L)", min_value=0.0) SCC = st.number_input("Consumption of Sugar-Sweetened Beverages", min_value=0) FAF = st.number_input("Physical Activity Level (1-5)", min_value=1, max_value=5) TUE = st.number_input("Time Spent on Physical Activity", min_value=0) CALC = st.selectbox("Caloric Intake", ("Low", "Moderate", "High")) MTRANS = st.selectbox("Transportation Type", ("Walking", "Public Transport", "Private Vehicle")) # Prepare input data for prediction input_data = pd.DataFrame({ 'Gender': [gender], 'Age': [age], 'Height': [height], 'Weight': [weight], 'family_history_with_overweight': [1 if family_history_with_overweight == "Yes" else 0], 'FAVC': [1 if FAVC == "Yes" else 0], 'FCVC': [FCVC], 'NCP': [NCP], 'CAEC': [1 if CAEC == "Yes" else 0], 'SMOKE': [1 if smoking == "Smoker" else 0], 'CH2O': [CH2O], 'SCC': [SCC], 'FAF': [FAF], 'TUE': [TUE], 'CALC': [CALC], 'MTRANS': [MTRANS], }) # Convert categorical variables into dummy/indicator variables input_data = pd.get_dummies(input_data, drop_first=True) # Ensure the same features are present as in the scaler input_data = input_data.reindex(columns=scaler.get_feature_names_out(), fill_value=0) # Prediction button if st.button('Predict'): input_scaled = scaler.transform(input_data) # Scale the input data prediction = model.predict(input_scaled) # Get the prediction predicted_class = np.argmax(prediction, axis=1) # Get the predicted class st.write(f"Predicted class: {predicted_class[0]}")