Spaces:
Runtime error
Runtime error
# app.py | |
import streamlit as st | |
import pandas as pd | |
import joblib | |
# Load the trained model and encoders | |
loaded_model = joblib.load('loan_prediction_model.joblib') | |
label_encoder_education = joblib.load('label_encoder_education.joblib') | |
# Title of the Streamlit app | |
st.title("IntuiPy Loan Default Prediction App") | |
st.write("Enter the details below to predict whether a loan will default or not.") | |
# Function to make predictions based on user input | |
def predict_loan_default(user_input): | |
# Encode categorical features | |
user_input['education'] = label_encoder_education.transform([user_input['education']])[0] | |
# Create DataFrame for prediction | |
user_input_df = pd.DataFrame([user_input]) | |
# Make prediction | |
prediction = loaded_model.predict(user_input_df) | |
return prediction[0] # Return the predicted class | |
# Input fields for the user to provide data | |
age = st.number_input("Age", min_value=18, max_value=100, value=30) | |
education = st.selectbox("Highest Education (1 for Secondary, 2 for Undergrad)", options=label_encoder_education.classes_) | |
loan_amount = st.number_input("Requested Loan Amount", min_value=0, value=5000) | |
asset_cost = st.number_input("Asset Cost", min_value=0, value=6000) | |
no_of_loans = st.number_input("Loans collected to date", min_value=0, value=2) | |
no_of_curr_loans = st.number_input("Number of Current Loans", min_value=0, value=1) | |
last_delinq_none = st.selectbox("Previously failed to make required payments on time ?(1 for True, 0 for False)", options=[1, 0]) | |
# Prepare the input for prediction | |
user_input = { | |
'age': age, | |
'education': education, | |
#'proof_submitted': proof_submitted, | |
'loan_amount': loan_amount, | |
'asset_cost': asset_cost, | |
'no_of_loans': no_of_loans, | |
'no_of_curr_loans': no_of_curr_loans, | |
'last_delinq_none': last_delinq_none | |
} | |
# Predict button | |
if st.button("Predict Loan Default"): | |
prediction = predict_loan_default(user_input) | |
result = "There is a likelihood of default. We regret to inform you that we cannot grant your loan" if prediction == 1 else "We are pleased to inform you that you will not default. We will be sending #" +str(loan_amount) +"" | |
st.write(f" {result}") | |