# Import necessary libraries import gradio as gr import pandas as pd import joblib from huggingface_hub import hf_hub_download # Function to download model and scaler from Hugging Face Hub def download_model(): # Download the model and scaler model_path = hf_hub_download(repo_id="rama0519/DiabeticLogistic123", filename="logistic_regression_model.joblib") scaler_path = hf_hub_download(repo_id="rama0519/DiabeticLogistic123", filename="scaler.joblib") # Load the model and scaler model = joblib.load(model_path) scaler = joblib.load(scaler_path) return model, scaler # Load model and scaler model, scaler = download_model() # Define reasonable ranges for each input parameter ranges = { 'Pregnancies': (0, 20), 'Glucose': (50, 250), 'BloodPressure': (40, 140), 'SkinThickness': (0, 100), 'Insulin': (0, 900), 'BMI': (10, 60), 'DiabetesPedigreeFunction': (0.0, 2.5), 'Age': (18, 100) } # Define the prediction function def predict_diabetes(pregnancies, glucose, blood_pressure, skin_thickness, insulin, bmi, diabetes_pedigree_function, age): data = pd.DataFrame({ 'Pregnancies': [pregnancies], 'Glucose': [glucose], 'BloodPressure': [blood_pressure], 'SkinThickness': [skin_thickness], 'Insulin': [insulin], 'BMI': [bmi], 'DiabetesPedigreeFunction': [diabetes_pedigree_function], 'Age': [age] }) data_scaled = scaler.transform(data) prediction = model.predict(data_scaled) # Convert prediction to "Diabetic" (1) or "Not Diabetic" (0) if prediction[0] == 1: prediction_text = "Diabetic" else: prediction_text = "Not Diabetic" return prediction_text # Create the Gradio interface interface = gr.Interface( fn=predict_diabetes, inputs=[ gr.Slider(label="Pregnancies", minimum=ranges['Pregnancies'][0], maximum=ranges['Pregnancies'][1]), gr.Slider(label="Glucose", minimum=ranges['Glucose'][0], maximum=ranges['Glucose'][1]), gr.Slider(label="BloodPressure", minimum=ranges['BloodPressure'][0], maximum=ranges['BloodPressure'][1]), gr.Slider(label="SkinThickness", minimum=ranges['SkinThickness'][0], maximum=ranges['SkinThickness'][1]), gr.Slider(label="Insulin", minimum=ranges['Insulin'][0], maximum=ranges['Insulin'][1]), gr.Slider(label="BMI", minimum=ranges['BMI'][0], maximum=ranges['BMI'][1]), gr.Slider(label="DiabetesPedigreeFunction", minimum=ranges['DiabetesPedigreeFunction'][0], maximum=ranges['DiabetesPedigreeFunction'][1]), gr.Slider(label="Age", minimum=ranges['Age'][0], maximum=ranges['Age'][1]) ], outputs=gr.Textbox(label="Prediction"), title="Diabetes Prediction", description="Enter the medical details to predict if the patient is diabetic or not." ) # Launch the Gradio interface if __name__ == "__main__": interface.launch()