File size: 2,377 Bytes
dd24b10
 
 
 
 
6d31974
 
 
dd24b10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88bab49
dd24b10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388073a
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
import gradio as gr
import pandas as pd
import joblib

# Load scaler, encoder, and model
scaler = joblib.load(r'toolkit/scaler.joblib')
model = joblib.load(r'toolkit/model_final.joblib')
encoder = joblib.load(r'toolkit/encoder.joblib')

# Prediction function
def predict(Gender, Urea, Cr, HbA1c, Chol, TG, HDL, LDL, VLDL, BMI):
    # Create a DataFrame
    input_df = pd.DataFrame({
        'Gender': [Gender],
        'Urea': [float(Urea)],
        'Cr': [float(Cr)],
        'HbA1c': [float(HbA1c)],
        'Chol': [float(Chol)],
        'TG': [float(TG)],
        'HDL': [float(HDL)],
        'LDL': [float(LDL)],
        'VLDL': [float(VLDL)],
        'BMI': [float(BMI)],
    })

    # Transform gender using the encoder
    input_df['Gender'] = encoder.transform(input_df['Gender'])
    # Apply scaler if necessary (uncomment if scaling is required)
    # input_df = scaler.transform(input_df)

    # Make prediction
    prediction = model.predict(input_df)

    # Prediction label mapping
    prediction_label = {0: "No Diabetes", 1: "Prediabetic", 2: "Diabetic"}
    return prediction_label[int(prediction[0])]

# Gradio app
with gr.Blocks(theme=gr.themes.Monochrome()) as app:
    gr.Image("imgdiabe.JPG", label="Diabetes Prediction App")
    gr.Markdown("# Diabetes Prediction App")
    gr.Markdown(
        "This app predicts a patient's diabetes status based on their health parameters. "
        "Please provide the following inputs:"
    )
    
    with gr.Row():
        with gr.Column():
            Gender = gr.Radio(['M', 'F'], label="Gender")
            Urea = gr.Slider(0, 100, step=1, label="Urea (mg/dL)")
            Cr = gr.Number(label="Creatinine (mg/dL)")
            HbA1c = gr.Number(label="HbA1c (%)")
            Chol = gr.Number(label="Cholesterol (mg/dL)")
        with gr.Column():
            TG = gr.Number(label="Triglycerides (mg/dL)")
            HDL = gr.Slider(0, 100, step=1, label="HDL Cholesterol (mg/dL)")
            LDL = gr.Number(label="LDL Cholesterol (mg/dL)")
            VLDL = gr.Number(label="VLDL (mg/dL)")
            BMI = gr.Number(label="Body Mass Index (BMI)")
    
    predict_btn = gr.Button("Predict")
    output = gr.Label(label="Prediction Result")

    predict_btn.click(
        fn=predict,
        inputs=[Gender, Urea, Cr, HbA1c, Chol, TG, HDL, LDL, VLDL, BMI],
        outputs=output
    )

app.launch()