jhsas / app.py
ayush-goud's picture
Update app.py
993bbf7 verified
import pandas as pd
import streamlit as st
# Define or import label_encoders, scaler, and model
# Example:
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
# Assume label_encoders, scaler, and model are defined and fitted elsewhere
# Initialize label_encoders, scaler, and model
label_encoders = {}
scaler = StandardScaler()
model = RandomForestClassifier(n_estimators=100, random_state=42)
# Function to preprocess input data and predict disease risk
def predict_disease_risk(input_data):
input_df = pd.DataFrame({
'Age': [input_data['Age']],
'Gender': [input_data['Gender']],
'How many meals do you have a day?': [input_data['How many meals do you have a day?']],
'What would best describe your diet': [input_data['What would best describe your diet']],
'Choose all that apply: [I skip meals]': [input_data['Choose all that apply: [I skip meals]']],
'Choose all that apply: [I experience feelings of hunger during the day]': [input_data['Choose all that apply: [I experience feelings of hunger during the day]']],
'Choose all that apply: [I consult a nutritionist/dietician]': [input_data['Choose all that apply: [I consult a nutritionist/dietician]']],
'Choose all that apply: [I cook my own meals]': [input_data['Choose all that apply: [I cook my own meals]']],
'What would you consider to be the main meal of YOUR day?': [input_data['What would you consider to be the main meal of YOUR day?']],
'What does your diet mostly consist of and how is it prepared?': [input_data['What does your diet mostly consist of and how is it prepared?']],
})
# Apply label encoding
for column, le in label_encoders.items():
if column in input_df.columns:
input_df[column] = le.transform(input_df[column])
# Scale the input features
input_scaled = scaler.transform(input_df)
# Make prediction
prediction = model.predict(input_scaled)
return prediction[0]
# Streamlit GUI
st.title('Health Risk Prediction Based on Diet')
# User inputs
age = st.number_input('Age', min_value=1, max_value=120, value=30, step=1)
gender = st.selectbox('Gender', ['Male', 'Female'])
meals_per_day = st.number_input('Number of meals per day', min_value=1, max_value=10)
diet = st.selectbox('Diet', ['Pollotarian', 'Vegetarian', 'Pescatarian', 'Non-Vegetarian', 'Eggetarian'])
skip_meals = st.selectbox('Do you skip meals?', ['Never', 'Rarely', 'Sometimes', 'Often', 'Very frequently'])
hunger = st.selectbox('Do you experience feelings of hunger during the day?', ['Never', 'Rarely', 'Sometimes', 'Often', 'Very frequently'])
nutritionist = st.selectbox('Do you consult a nutritionist?', ['Never', 'Rarely', 'Sometimes', 'Often', 'Very frequently'])
cook_meals = st.selectbox('Do you cook your own meals?', ['Never', 'Rarely', 'Sometimes', 'Often', 'Very frequently'])
main_meal = st.selectbox('Main meal of the day', ['Breakfast', 'Lunch', 'Dinner', 'All'])
diet_description = st.selectbox('Diet description', ['Freshly home-cooked produce', 'Restaurant meals'])
# Collect all inputs in a dictionary
input_data = {
'Age': age,
'Gender': gender,
'How many meals do you have a day?': meals_per_day,
'What would best describe your diet': diet,
'Choose all that apply: [I skip meals]': skip_meals,
'Choose all that apply: [I experience feelings of hunger during the day]': hunger,
'Choose all that apply: [I consult a nutritionist/dietician]': nutritionist,
'Choose all that apply: [I cook my own meals]': cook_meals,
'What would you consider to be the main meal of YOUR day?': main_meal,
'What does your diet mostly consist of and how is it prepared?': diet_description,
}
# Prediction button
if st.button('Predict Disease Risk'):
prediction = predict_disease_risk(input_data)
st.write(f'Predicted Disease Risk: {prediction}')