CDK_predictor / app.py
pranit144's picture
Upload 9 files
46a9200 verified
from flask import Flask, render_template, request
import pandas as pd
import joblib
app = Flask(__name__)
# Load model pipeline
model = joblib.load("ckd_rf_model_pca.pkl")
scaler = joblib.load("ckd_scaler.pkl")
pca = joblib.load("ckd_pca.pkl")
# Feature list
features = [
'age', 'blood_pressure', 'specific_gravity', 'albumin', 'sugar',
'red_blood_cells', 'pus_cell', 'pus_cell_clumps', 'bacteria',
'blood_glucose_random', 'blood_urea', 'serum_creatinine', 'sodium',
'potassium', 'haemoglobin', 'packed_cell_volume', 'white_blood_cell_count',
'red_blood_cell_count', 'hypertension', 'diabetes_mellitus',
'coronary_artery_disease', 'appetite', 'peda_edema', 'aanemia'
]
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
input_data = {feature: float(request.form[feature]) for feature in features}
# Convert to DataFrame
input_df = pd.DataFrame([input_data])
# Preprocess
scaled = scaler.transform(input_df)
pca_input = pca.transform(scaled)
# Predict
prediction = model.predict(pca_input)[0]
prob = model.predict_proba(pca_input)[0][1]
if prediction == 1:
result = f"🟒 CKD Detected with {prob:.2%} confidence"
else:
result = f"🟑 No CKD Detected with {(1 - prob):.2%} confidence"
return render_template("index.html", result=result)
return render_template("index.html", result=None)
if __name__ == '__main__':
app.run(debug=True,port=5000)