|
import gradio as gr |
|
import joblib |
|
import numpy as np |
|
|
|
|
|
model_path = 'RDF_Model_Classify_Severity_CKD.s3a' |
|
model = joblib.load(model_path) |
|
|
|
|
|
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 |
|
|
|
|
|
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() |
|
|