Test25 / app.py
abdullah10's picture
Upload 11 files
0dbbdf1 verified
import pickle
import gradio as gr
# Load the saved models
def load_models():
try:
diabetes_model = pickle.load(open('Saved Models/diabetes_model.sav', 'rb'))
heart_disease_model = pickle.load(open('Saved Models/heart_disease_model.sav', 'rb'))
parkinsons_model = pickle.load(open('Saved Models/parkinsons_model.sav', 'rb'))
return diabetes_model, heart_disease_model, parkinsons_model
except Exception as e:
return None, None, None
# Function to make prediction
def make_prediction(model, input_data):
try:
prediction = model.predict([input_data])
return prediction[0]
except Exception as e:
return None
# Functions for each prediction
def predict_diabetes(Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age):
input_data = [Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age]
result = make_prediction(diabetes_model, input_data)
return "Diabetic" if result == 1 else "Not Diabetic"
def predict_heart_disease(age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal):
input_data = [age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal]
if input_data[1] == 'male':
input_data[1] = 1
elif input_data[1] == 'female':
input_data[1] = 0
else:
input_data[1] = None
result = make_prediction(heart_disease_model, input_data)
return "Has Heart Disease" if result == 1 else "No Heart Disease"
def predict_parkinsons(fo, fhi, flo, Jitter_percent, Jitter_Abs, RAP, PPQ, DDP, Shimmer, Shimmer_dB, APQ3, APQ5, APQ, DDA, NHR, HNR, RPDE, DFA, spread1, spread2, D2, PPE):
input_data = [fo, fhi, flo, Jitter_percent, Jitter_Abs, RAP, PPQ, DDP, Shimmer, Shimmer_dB, APQ3, APQ5, APQ, DDA, NHR, HNR, RPDE, DFA, spread1, spread2, D2, PPE]
result = make_prediction(parkinsons_model, input_data)
return "Has Parkinson's Disease" if result == 1 else "No Parkinson's Disease"
# Load models
diabetes_model, heart_disease_model, parkinsons_model = load_models()
if not diabetes_model or not heart_disease_model or not parkinsons_model:
print("Error loading models. Please check the model paths.")
# Define Gradio interfaces for each disease prediction
diabetes_interface = gr.Interface(
fn=predict_diabetes,
inputs=[
gr.Text(label="Number of Pregnancies"),
gr.Number(label="Glucose Level"),
gr.Number(label="Blood Pressure"),
gr.Number(label="Skin Thickness"),
gr.Number(label="Insulin Level"),
gr.Number(label="BMI"),
gr.Number(label="Diabetes Pedigree Function"),
gr.Number(label="Age"),
],
outputs="text",
title="Diabetes Prediction",
description="Predict if a person has diabetes based on medical test results."
)
heart_disease_interface = gr.Interface(
fn=predict_heart_disease,
inputs=[
gr.Number(label="Age"),
gr.Text(label="Sex (Male, Female)"),
gr.Number(label="Chest Pain types (0-3)"),
gr.Number(label="Resting Blood Pressure"),
gr.Number(label="Serum Cholestoral in mg/dl"),
gr.Number(label="Fasting Blood Sugar > 120 mg/dl (1=True, 0=False)"),
gr.Number(label="Resting Electrocardiographic results (0-2)"),
gr.Number(label="Maximum Heart Rate achieved"),
gr.Number(label="Exercise Induced Angina (1=Yes, 0=No)"),
gr.Number(label="ST depression induced by exercise"),
gr.Number(label="Slope of the peak exercise ST segment (0-2)"),
gr.Number(label="Major vessels colored by flourosopy (0-3)"),
gr.Number(label="Thalassemia (1=normal; 2=fixed defect; 3=reversible defect)"),
],
outputs="text",
title="Heart Disease Prediction",
description="Predict if a person has heart disease based on medical test results."
)
parkinsons_interface = gr.Interface(
fn=predict_parkinsons,
inputs=[
gr.Number(label="MDVP:Fo(Hz)"),
gr.Number(label="MDVP:Fhi(Hz)"),
gr.Number(label="MDVP:Flo(Hz)"),
gr.Number(label="MDVP:Jitter(%)"),
gr.Number(label="MDVP:Jitter(Abs)"),
gr.Number(label="MDVP:RAP"),
gr.Number(label="MDVP:PPQ"),
gr.Number(label="Jitter:DDP"),
gr.Number(label="MDVP:Shimmer"),
gr.Number(label="MDVP:Shimmer(dB)"),
gr.Number(label="Shimmer:APQ3"),
gr.Number(label="Shimmer:APQ5"),
gr.Number(label="MDVP:APQ"),
gr.Number(label="Shimmer:DDA"),
gr.Number(label="NHR"),
gr.Number(label="HNR"),
gr.Number(label="RPDE"),
gr.Number(label="DFA"),
gr.Number(label="spread1"),
gr.Number(label="spread2"),
gr.Number(label="D2"),
gr.Number(label="PPE"),
],
outputs="text",
title="Parkinson's Disease Prediction",
description="Predict if a person has Parkinson's disease based on voice measurements."
)
# Combine interfaces into a tabbed layout
gr.TabbedInterface(
[diabetes_interface, heart_disease_interface, parkinsons_interface],
["Diabetes Prediction", "Heart Disease Prediction", "Parkinson's Disease Prediction"]
).launch()