Spaces:
Sleeping
Sleeping
| 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() | |