DrugClassification / drug_app.py
milotix's picture
Sync app files
f5b11a7 verified
import gradio as gr
import numpy as np
import skops.io as sio
# Get the list of ALL types found in the file
all_untrusted_types = sio.get_untrusted_types(file="./model/drug_pipeline.skops")
# Print and review the list (e.g., ['numpy.dtype', 'sklearn.pipeline.Pipeline', ...])
# print(all_untrusted_types)
# Load the model, passing the complete list as the trusted argument
pipe = sio.load(
"./model/drug_pipeline.skops",
trusted=all_untrusted_types
)
def predict_drug(age, sex, blood_pressure, cholesterol, na_to_k_ratio):
"""Predict drugs based on patient features.
Args:
age (int): Age of patient
sex (str): Sex of patient
blood_pressure (str): Blood pressure level
cholesterol (str): Cholesterol level
na_to_k_ratio (float): Ratio of sodium to potassium in blood
Returns:
str: Predicted drug label
"""
features = np.array(
[[age, sex, blood_pressure, cholesterol, na_to_k_ratio]],
dtype=object,
)
try:
probabilities = pipe.predict_proba(features)[0]
return {
str(label): float(prob)
for label, prob in zip(pipe.classes_, probabilities)
}
except Exception:
predicted_drug = pipe.predict(features)[0]
return str(predicted_drug)
inputs = [
gr.Slider(15, 74, step=1, label="Age"),
gr.Radio(["M", "F"], label="Sex"),
gr.Radio(["HIGH", "LOW", "NORMAL"], label="Blood Pressure"),
gr.Radio(["HIGH", "NORMAL"], label="Cholesterol"),
gr.Slider(6.2, 38.2, step=0.1, label="Na_to_K"),
]
outputs = gr.Label(num_top_classes=5)
examples = [
[30, "M", "HIGH", "NORMAL", 15.4],
[35, "F", "LOW", "NORMAL", 8],
[50, "M", "HIGH", "HIGH", 34],
]
title = "Drug Classification"
description = "Enter the details to correctly identify Drug type?"
article = "Automate training, evaluation, and deployment of models to Hugging Face using GitHub Actions."
gr.Interface(
fn=predict_drug,
inputs=inputs,
outputs=outputs,
examples=examples,
title=title,
description=description,
article=article,
# theme=gr.themes.Soft(),
).launch()