Loan_Classifier / app.py
esteele's picture
Update app.py
d80ace1 verified
import gradio as gr
import asyncio
import joblib
import pandas as pd
model = joblib.load("best_random_forest_model.joblib")
asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())
def keep_alive():
try:
predict_loan_status(10000, 10, 600, 250, 5000)
return "ok"
except Exception as e:
return "error:", str(e)
def predict_loan_status(
loan_original_amount,
credit_score_range_lower,
stated_monthly_income,
investors,
monthly_loan_payment,
):
input_dict = {
'LoanOriginalAmount': loan_original_amount,
'CreditScoreRangeLower': credit_score_range_lower,
'StatedMonthlyIncome': stated_monthly_income,
'Investors': investors,
'MonthlyLoanPayment': monthly_loan_payment,
}
user_input_df = pd.DataFrame(data=[[loan_original_amount,
credit_score_range_lower,
stated_monthly_income,
investors,
monthly_loan_payment]],
columns=[
'LoanOriginalAmount',
'CreditScoreRangeLower',
'StatedMonthlyIncome',
'Investors',
'MonthlyLoanPayment',
])
scaler = joblib.load('std_scaler.bin')
# Convert the dictionary to a 2D array
input_array = user_input_df.values
# print(user_input_df)
scaled_array = scaler.transform(input_array)
# print('scaled array', scaled_array)
prediction = model.predict(scaled_array)
# print('Prediction: ', prediction)
return prediction[0]
options = ['Current', 'Completed', 'ChargedOff']
inputs = [
gr.Slider(1000, 100000, label="Loan Original Amount"),
gr.Slider(100, 2000, step=1, label='Credit Score Range (Lower)'),
gr.Slider(1000, 100000, step=10, label="Stated Monthly Income"),
gr.Slider(0, 1000, step=1, label='Number of Investors'),
gr.Slider(20, 5000, step=5, label="Monthly Loan Payment")
]
outputs = gr.Label()
title = "Loan Status Classifier"
description = (
"Enter the details of the loan to check the status of the loan."
)
with gr.Blocks() as demo:
gr.Interface(
fn=predict_loan_status,
inputs=inputs,
outputs=outputs,
title=title,
description=description,
).render()
with gr.Row(visible=False):
ka_out = gr.Textbox(label="keep_alive_out")
ka_btn = gr.Button("keep_alive_btn")
ka_btn.click(fn=keep_alive,
inputs=None,
outputs=ka_out,
api_name="keep_alive"
)
demo.launch(share=True, ssr_mode=False)
# def greet(name):
# return "Hello " + name + "!!"
#
#
# iface = gr.Interface(fn=greet, inputs="text", outputs="text")
# iface.launch()