zaid002's picture
Update src/predict.py
9c21fda verified
import joblib
import pandas as pd
import numpy as np
def load_model(path):
return joblib.load(path)
def predict_single(model, sample_dict):
"""
sample_dict: dict mapping column name -> value for the input features (do NOT include target)
"""
X = pd.DataFrame([sample_dict])
proba = None
try:
proba = model.predict_proba(X)
except Exception:
pass
pred = model.predict(X)
return {"prediction": pred[0], "probability": proba.tolist() if proba is not None else None}
if __name__ == "__main__":
# Example usage with Kidney Disease model
model_path_kidney = "/content/models/kidney_model.pkl" # Path to the saved kidney model
model_kidney = load_model(model_path_kidney)
# Sample data for Kidney Disease prediction
# Include all columns from the merged dataset, fill with relevant values or None/np.nan
sample_kidney = {
'Age': None,
'Gender': None,
'Total_Bilirubin': None,
'Direct_Bilirubin': None,
'Alkaline_Phosphotase': None,
'Alamine_Aminotransferase': None,
'Aspartate_Aminotransferase': None,
'Total_Protiens': None,
'Albumin': None,
'Albumin_and_Globulin_Ratio': None,
'Dataset': None, # Target column for liver, set to None
'id': None, # ID column, set to None
'age': 48.0, # Example kidney feature
'bp': 80.0, # Example kidney feature
'sg': 1.020, # Example kidney feature
'al': 1.0, # Example kidney feature
'su': 0.0, # Example kidney feature
'rbc': 'NaN', # Example kidney feature (categorical)
'pc': 'normal', # Example kidney feature (categorical)
'pcc': 'notpresent', # Example kidney feature (categorical)
'ba': 'notpresent', # Example kidney feature (categorical)
'bgr': 121.0, # Example kidney feature
'bu': 36.0, # Example kidney feature
'sc': 1.2, # Example kidney feature
'sod': np.nan, # Example kidney feature (missing value)
'pot': np.nan, # Example kidney feature (missing value)
'hemo': 15.4, # Example kidney feature
'pcv': 44.0, # Example kidney feature
'wc': 7800.0, # Example kidney feature
'rc': 5.2, # Example kidney feature
'htn': 'yes', # Example kidney feature (categorical)
'dm': 'yes', # Example kidney feature (categorical)
'cad': 'no', # Example kidney feature (categorical)
'appet': 'good', # Example kidney feature (categorical)
'pe': 'no', # Example kidney feature (categorical)
'ane': 'no', # Example kidney feature (categorical)
'classification': None, # Target column for kidney, set to None
'name': None, # Name column for parkinsons, set to None
"MDVP:Fo(Hz)": None, # Parkinsons feature, set to None
"MDVP:Fhi(Hz)": None, # Parkinsons feature, set to None
"MDVP:Flo(Hz)": None, # Parkinsons feature, set to None
"MDVP:Jitter(%)": None,
"MDVP:Jitter(Abs)": None,
"MDVP:RAP": None,
"MDVP:PPQ": None,
"Jitter:DDP": None,
"MDVP:Shimmer": None,
"MDVP:Shimmer(dB)": None,
"Shimmer:APQ3": None,
"Shimmer:APQ5": None,
"MDVP:APQ": None,
"Shimmer:DDA": None,
"NHR": None,
"HNR": None,
"status": None, # Target column for parkinsons, set to None
"RPDE": None,
"DFA": None,
"spread1": None,
"spread2": None,
"D2": None,
"PPE": None
}
res_kidney = predict_single(model_kidney, sample_kidney)
print("Kidney Disease Prediction:", res_kidney)
# Example usage with Liver Patient model
model_path_liver = "/content/models/liver_model.pkl"
model_liver = load_model(model_path_liver)
# Sample data for Liver Patient prediction
# Include all columns from the merged dataset, fill with relevant values or None/np.nan
sample_liver = {
'Age': 65.0, # Example liver feature
'Gender': 'Female', # Example liver feature (categorical)
'Total_Bilirubin': 0.7, # Example liver feature
'Direct_Bilirubin': 0.1, # Example liver feature
'Alkaline_Phosphotase': 187.0, # Example liver feature
'Alamine_Aminotransferase': 16.0, # Example liver feature
'Aspartate_Aminotransferase': 18.0, # Example liver feature
'Total_Protiens': 6.8, # Example liver feature
'Albumin': 3.3, # Example liver feature
'Albumin_and_Globulin_Ratio': 0.90, # Example liver feature
'Dataset': None, # Target column for liver, set to None
'id': None, # ID column, set to None
'age': None, # Kidney feature, set to None
'bp': None, # Kidney feature, set to None
'sg': None, # Kidney feature, set to None
'al': None, # Kidney feature, set to None
'su': None, # Kidney feature, set to None
'rbc': None, # Kidney feature, set to None
'pc': None, # Kidney feature, set to None
'pcc': None, # Kidney feature, set to None
'ba': None, # Kidney feature, set to None
'bgr': None, # Kidney feature, set to None
'bu': None, # Kidney feature, set to None
'sc': None, # Kidney feature, set to None
'sod': None, # Kidney feature, set to None
'pot': None, # Kidney feature, set to None
'hemo': None, # Kidney feature, set to None
'pcv': None, # Kidney feature, set to None
'wc': None, # Kidney feature, set to None
'rc': None, # Kidney feature, set to None
'htn': None, # Kidney feature, set to None
'dm': None, # Kidney feature, set to None
'cad': None, # Kidney feature, set to None
'appet': None, # Kidney feature, set to None
'pe': None, # Kidney feature, set to None
'ane': None, # Kidney feature, set to None
'classification': None, # Target column for kidney, set to None
'name': None, # Name column for parkinsons, set to None
"MDVP:Fo(Hz)": None, # Parkinsons feature, set to None
"MDVP:Fhi(Hz)": None, # Parkinsons feature, set to None
"MDVP:Flo(Hz)": None, # Parkinsons feature, set to None
"MDVP:Jitter(%)": None,
"MDVP:Jitter(Abs)": None,
"MDVP:RAP": None,
"MDVP:PPQ": None,
"Jitter:DDP": None,
"MDVP:Shimmer": None,
"MDVP:Shimmer(dB)": None,
"Shimmer:APQ3": None,
"Shimmer:APQ5": None,
"MDVP:APQ": None,
"Shimmer:DDA": None,
"NHR": None,
"HNR": None,
"status": None, # Target column for parkinsons, set to None
"RPDE": None,
"DFA": None,
"spread1": None,
"spread2": None,
"D2": None,
"PPE": None
}
res_liver = predict_single(model_liver, sample_liver)
print("Liver Patient Prediction:", res_liver)