C3ML / app.py
DocSrvNyk's picture
Update app.py
0aac411 verified
import gradio as gr
import joblib
import numpy as np
# Load the trained model
model_path = 'RDF_Model_Classify_Severity_CKD.s3a'
model = joblib.load(model_path)
# Define the prediction function
def predict_ckd_severity(age, c3, c4):
c3_c4_ratio = round(c3 / c4, 2)
features = np.array([[age, c3, c4, c3_c4_ratio]])
prediction = model.predict(features)[0]
probability = model.predict_proba(features)[0][prediction] * 100
if probability < 50:
adjusted_probability = (probability / 50) * 100
else:
adjusted_probability = ((probability - 50) / 50) * 100
if prediction == 1:
result = f"The CKD status is most likely to progress into Severe (1). The probability is {adjusted_probability:.2f}%."
else:
result = f"The CKD status is most likely to progress into Non-Severe (0). The probability is {adjusted_probability:.2f}%."
return c3_c4_ratio, result
# Create the Gradio interface
inputs = [
gr.Number(label="Age (in years)"),
gr.Number(label="C3"),
gr.Number(label="C4")
]
outputs = [
gr.Textbox(label="C3/C4 Ratio"),
gr.Textbox(label="Prediction")
]
gr.Interface(fn=predict_ckd_severity, inputs=inputs, outputs=outputs, title="CKD Severity Prediction").launch()