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()