samarth-kamble's picture
Update app.py
315359d verified
raw
history blame
1.67 kB
import gradio as gr
import joblib
# Load models using joblib
knn_model = joblib.load("knn_model.joblib")
rf_model = joblib.load("rf_model.joblib")
svm_model = joblib.load("svm_model.joblib")
model_map = {
"KNN": knn_model,
"Random Forest": rf_model,
"SVM": svm_model
}
# Prediction function
def predict(model_name, sex, pregnant, on_thyroxine, TT4, T3, T4U, FTI, TSH):
try:
model = model_map[model_name]
sex = int(sex)
pregnant = int(pregnant)
on_thyroxine = int(on_thyroxine)
TT4 = float(TT4)
T3 = float(T3)
T4U = float(T4U)
FTI = float(FTI)
TSH = float(TSH)
prediction = model.predict([[sex, pregnant, on_thyroxine, TT4, T3, T4U, FTI, TSH]])
label_map = {0: "Hyperthyroid", 1: "Hypothyroid", 2: "Negative"}
return f"Prediction using {model_name}: {label_map.get(prediction[0], 'Unknown')}"
except Exception as e:
return f"Error: {str(e)}"
# Gradio UI
demo = gr.Interface(
fn=predict,
inputs=[
gr.Dropdown(["SVM", "KNN", "Random Forest"], label="Select Model"),
gr.Radio([0, 1], label="Sex (0: Female, 1: Male)"),
gr.Radio([0, 1], label="Pregnant (0: No, 1: Yes)"),
gr.Radio([0, 1], label="On Thyroxine (0: No, 1: Yes)"),
gr.Number(label="TT4"),
gr.Number(label="T3"),
gr.Number(label="T4U"),
gr.Number(label="FTI"),
gr.Number(label="TSH"),
],
outputs="text",
title="Hyperthyroid Prediction (Multi-Model)",
description="Select a model and input medical features to predict thyroid condition."
)
if __name__ == "__main__":
demo.launch()