rizmyabdulla's picture
Update app.py
c2ac1f0
import gradio as gr
import pandas as pd
import numpy as np
from sklearn.preprocessing import MultiLabelBinarizer
from keras.models import load_model
# Load the trained model
model = load_model('model.h5')
# Load the dataset
data = pd.read_csv('dataset.csv')
# Preprocess the dataset
mlb = MultiLabelBinarizer()
symptoms = [s.lower().split(',') for s in data['Symptoms']]
X = mlb.fit_transform(symptoms)
disease = pd.get_dummies(data['Disease'])
disease_list = list(disease.columns)
# Evaluate the model on the testing set
X_test = np.expand_dims(X, axis=2)
Y_test = disease.values
loss, accuracy = model.evaluate(X_test, Y_test, verbose=0)
# Define the prediction function
def predict_disease(symptoms):
# Preprocess the user input
user_symptoms = [symptom.strip().replace(' ', '_').lower() for symptom in symptoms.split(',')]
user_X = mlb.transform([user_symptoms])
# Make the prediction
prediction = model.predict(np.expand_dims(user_X, axis=2))
predicted_disease = disease_list[np.argmax(prediction)]
predicted_antibiotics = data.loc[data['Disease'] == predicted_disease, 'Antibiotics'].values[0]
# Return the prediction and accuracy
return f"Disease: {predicted_disease}\nAntibiotics: {predicted_antibiotics}\n\nModel accuracy on testing set: {accuracy:.3f}"
# Define the Gradio interface
inputs = gr.inputs.Textbox(label="Symptoms")
outputs = gr.outputs.Textbox(label="Prediction")
gradio_interface = gr.Interface(predict_disease, inputs, outputs, title="Disease Prediction App")
# Launch the Gradio interface
gradio_interface.launch()