# -*- 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()