ICE / app.py
ravi86's picture
Update app.py
a51e5f6 verified
import gradio as gr
import joblib
import numpy as np
# Load the pre-trained model
model = joblib.load("model_loan_predector.pkl")
# Define prediction function
def predict_loan(gender, married, education, self_employed, applicant_income, coapplicant_income,
loan_amount, loan_term, credit_history, property_area):
# Encode inputs manually (simulate label encoding)
input_data = np.array([[
1 if gender == "Male" else 0,
1 if married == "Yes" else 0,
1 if education == "Graduate" else 0,
1 if self_employed == "Yes" else 0,
float(applicant_income),
float(coapplicant_income),
float(loan_amount),
float(loan_term),
int(credit_history),
{"Rural": 0, "Semiurban": 1, "Urban": 2}[property_area]
]])
# Predict
prediction = model.predict(input_data)[0]
prob = model.predict_proba(input_data)[0][1]
# Risk Level
if prob > 0.8:
risk = "Low Risk"
elif prob > 0.5:
risk = "Medium Risk"
else:
risk = "High Risk"
result = f"✅ Approved" if prediction == 1 else "❌ Not Approved"
return {
"Loan Status": result,
"Approval Probability": f"{prob:.2%}",
"Risk Category": risk
}
# Gradio Interface
iface = gr.Interface(
fn=predict_loan,
inputs=[
gr.Radio(["Male", "Female"], label="Gender"),
gr.Radio(["Yes", "No"], label="Married"),
gr.Radio(["Graduate", "Not Graduate"], label="Education"),
gr.Radio(["Yes", "No"], label="Self Employed"),
gr.Number(label="Applicant Income"),
gr.Number(label="Coapplicant Income"),
gr.Number(label="Loan Amount (in ₹1000s)"),
gr.Number(label="Loan Term (in Days)"),
gr.Radio(["1", "0"], label="Credit History (1 = Good, 0 = Bad)"),
gr.Radio(["Rural", "Semiurban", "Urban"], label="Property Area")
],
outputs=[
gr.Text(label="Loan Status"),
gr.Text(label="Approval Probability"),
gr.Text(label="Risk Category")
],
title="❄️ ICE — Intelligent Credit Evaluator",
description="Enter applicant details to predict loan approval status with confidence score and risk level."
)
iface.launch()