import gradio as gr import pandas as pd import numpy as np from tensorflow.keras.models import load_model import pickle from PIL import Image # Load models diabetes_model = pickle.load(open("modelv4.pkl", "rb")) pneumonia_model = load_model("cnn_model (1).h5") breast_cancer_model = pickle.load(open("model.pkl", "rb")) def predict_diabetes(file): df = pd.read_csv(file) prediction = diabetes_model.predict(df) result = ["Positive" if p > 0.5 else "Negative" for p in prediction] return result def predict_pneumonia(image): img = Image.open(image).convert('RGB') img = img.resize((150, 150)) img = np.array(img) / 255.0 img = img.reshape(1, 150, 150, 3) prediction = pneumonia_model.predict(img)[0][0] return "Positive" if prediction > 0.5 else "Negative" def predict_breast_cancer(file): df = pd.read_csv(file) prediction = breast_cancer_model.predict(df) result = ["Positive" if p > 0.5 else "Negative" for p in prediction] return result # Gradio Interface diabetes_interface = gr.Interface( fn=predict_diabetes, inputs=gr.File(label="Upload CSV File for Diabetes"), outputs=gr.Label(label="Diabetes Prediction"), ) pneumonia_interface = gr.Interface( fn=predict_pneumonia, inputs=gr.Image(type="file", label="Upload Chest X-ray Image"), outputs=gr.Label(label="Pneumonia Prediction"), ) breast_cancer_interface = gr.Interface( fn=predict_breast_cancer, inputs=gr.File(label="Upload CSV File for Breast Cancer"), outputs=gr.Label(label="Breast Cancer Prediction"), ) app = gr.TabbedInterface( [diabetes_interface, pneumonia_interface, breast_cancer_interface], ["Diabetes", "Pneumonia", "Breast Cancer"], ) if __name__ == "__main__": app.launch()