|
import gradio as gr |
|
import skops.io as sio |
|
import warnings |
|
from sklearn.exceptions import InconsistentVersionWarning |
|
|
|
|
|
warnings.filterwarnings("ignore", category=InconsistentVersionWarning) |
|
|
|
|
|
trusted_types = [ |
|
"sklearn.pipeline.Pipeline", |
|
"sklearn.preprocessing.OneHotEncoder", |
|
"sklearn.preprocessing.StandardScaler", |
|
"sklearn.compose.ColumnTransformer", |
|
"sklearn.preprocessing.OrdinalEncoder", |
|
"sklearn.impute.SimpleImputer", |
|
"sklearn.tree.DecisionTreeClassifier", |
|
"sklearn.ensemble.RandomForestClassifier", |
|
"numpy.dtype", |
|
] |
|
pipe = sio.load("./Model/drug_pipeline.skops", trusted=trusted_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 = [age, sex, blood_pressure, cholesterol, na_to_k_ratio] |
|
predicted_drug = pipe.predict([features])[0] |
|
|
|
label = f"Predicted Drug: {predicted_drug}" |
|
return label |
|
|
|
|
|
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 = "This app is a part of the **[Beginner's Guide to CI/CD for Machine Learning](https://www.datacamp.com/tutorial/ci-cd-for-machine-learning)**. It teaches how to 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() |
|
|