File size: 2,981 Bytes
739086d
 
 
 
9e8a94b
 
 
 
 
 
 
739086d
074d034
 
 
 
 
739086d
9e8a94b
074d034
 
739086d
 
4448e82
074d034
 
 
 
739086d
074d034
 
 
739086d
 
 
 
 
 
 
 
 
 
074d034
739086d
 
074d034
 
 
 
 
 
 
739086d
 
 
 
9612fc5
f0b42e7
 
 
 
 
 
 
 
 
 
 
 
074d034
 
 
 
 
 
 
 
b87aae2
4a8e8a0
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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"
}

def load_model(model_name):
    model_path = models.get(model_name)
    if model_path:
        return pickle.load(open(model_path, 'rb'))
    return None

def diabetes_prediction(input_data, model):
    prediction = model.predict([input_data])
    return 'The person is diabetic' if prediction[0] else 'The person is not diabetic'

def main():
    st.title('MultiModel Diabetes Predictor')

    selected_model_name = st.selectbox("Choose Prediction Method (Default: Logistic Regression)", list(models.keys()))

    loaded_model = load_model(selected_model_name)
    
    if loaded_model is None:
        st.error("Model not found!")
        return
    
    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 = ''
    if st.button('Diabetes Test Result'):
        try:
            input_data = np.array([
                float(Pregnancies), float(Glucose), float(BloodPressure),
                float(SkinThickness), float(Insulin), float(BMI),
                float(DiabetesPedigreeFunction), float(Age)
            ])
            diagnosis = diabetes_prediction(input_data, loaded_model)
        except ValueError:
            diagnosis = "Invalid input. Please enter numeric values for all fields."

    st.success(diagnosis)

    st.markdown('### Demo - Test with Dummy Entries')
    
    default_values = {
        "Number of Pregnancies": 5,
        "Glucose Level": 130,
        "Blood Pressure Value": 80,
        "Skin Thickness Value": 30,
        "Insulin Level": 100,
        "BMI Value": 35,
        "Diabetes Pedigree Function Value": 0.5,
        "Age of the Person": 40
    }
    
    if st.button('Run Demo'):
        demo_input_data = np.array([
            default_values["Number of Pregnancies"], default_values["Glucose Level"],
            default_values["Blood Pressure Value"], default_values["Skin Thickness Value"],
            default_values["Insulin Level"], default_values["BMI Value"],
            default_values["Diabetes Pedigree Function Value"], default_values["Age of the Person"]
        ])
        demo_diagnosis = diabetes_prediction(demo_input_data, loaded_model)
        st.success(f'Demo Result: {demo_diagnosis} with inputs: {default_values}')

if __name__ == '__main__':
    main()