kmrmanish's picture
Update app.py
9e8a94b
raw
history blame
2.46 kB
# -*- coding: utf-8 -*-
"""
Diabetes Prediction Web App
"""
import numpy as np
import pickle
import streamlit as st
# Dictionary to hold different model names and their corresponding file paths
models = {
"Logistic Regression": "LogisticRegression_model.pkl",
"Decision Tree Classifier": "DecisionTreeClassifier_model.pkl",
"Random Forest Classifier": "RandomForestClassifier_model.pkl",
"SVC": "SVC_model.pkl"
}
# Load the default model (Logistic Regression in this case)
selected_model = "Logistic Regression"
loaded_model = pickle.load(open(models[selected_model], 'rb'))
# Function for making predictions
def diabetes_prediction(input_data, model):
# Load the selected model
loaded_model = pickle.load(open(models[model], 'rb'))
# Convert input_data to numpy array
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1, -1)
prediction = loaded_model.predict(input_data_reshaped)
if prediction[0] == 0:
return 'The person is not diabetic'
else:
return 'The person is diabetic'
# Main function for the Streamlit app
def main():
st.title('Diabetes Prediction Web App')
# Dropdown for model selection
selected_model = st.selectbox("Select Model", list(models.keys()))
# Input fields for user data
Pregnancies = st.text_input('Number of Pregnancies')
Glucose = st.text_input('Glucose Level')
BloodPressure = st.text_input('Blood Pressure Value')
SkinThickness = st.text_input('Skin Thickness Value')
Insulin = st.text_input('Insulin Level')
BMI = st.text_input('BMI Value')
DiabetesPedigreeFunction = st.text_input('Diabetes Pedigree Function Value')
Age = st.text_input('Age of the Person')
diagnosis = ''
# Prediction button
if st.button('Diabetes Test Result'):
try:
input_data = [
float(Pregnancies),
float(Glucose),
float(BloodPressure),
float(SkinThickness),
float(Insulin),
float(BMI),
float(DiabetesPedigreeFunction),
float(Age)
]
diagnosis = diabetes_prediction(input_data, selected_model)
except ValueError as e:
diagnosis = "Invalid input. Please enter numeric values for all fields."
st.success(diagnosis)
if __name__ == '__main__':
main()