File size: 2,450 Bytes
3e12407
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dcf3ceb
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
import gradio as gr
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Load dataset (Pima Indians Diabetes dataset)
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
columns = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome']
data = pd.read_csv(url, names=columns)

# Split data into features and target
X = data.drop('Outcome', axis=1)
y = data['Outcome']

# Train-Test Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create and train RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# Check model accuracy
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Model Accuracy: {accuracy * 100:.2f}%")

# Function for prediction with debugging
def predict_diabetes(Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age):
    input_data = [[Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age]]
    prediction = model.predict(input_data)
    return "Diabetic" if prediction[0] == 1 else "Not Diabetic"

# Create Gradio interface
with gr.Blocks() as demo:
    gr.Markdown("# Diabetes Prediction App")
    
    with gr.Row():
        pregnancies = gr.Number(label="Pregnancies", value=0, precision=0)
        glucose = gr.Number(label="Glucose", value=120)
        blood_pressure = gr.Number(label="Blood Pressure", value=70)
        skin_thickness = gr.Number(label="Skin Thickness", value=20)
    
    with gr.Row():
        insulin = gr.Number(label="Insulin", value=80)
        bmi = gr.Number(label="BMI", value=30.0)
        pedigree = gr.Number(label="Diabetes Pedigree Function", value=0.5)
        age = gr.Number(label="Age", value=30, precision=0)
    
    predict_button = gr.Button("Predict")
    output = gr.Textbox(label="Prediction", placeholder="Prediction will appear here.")

    # Connect button to prediction function
    predict_button.click(
        fn=predict_diabetes, 
        inputs=[pregnancies, glucose, blood_pressure, skin_thickness, insulin, bmi, pedigree, age], 
        outputs=output
    )

# Launch the Gradio app
demo.launch(share = True)