Spaces:
Runtime error
Runtime error
| import subprocess | |
| import random | |
| from typing import Any | |
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| import pandas as pd | |
| OUTPUT_DATA_PATH = "data/processed/app_dataset.csv" | |
| PREDICTIONS_PATH = "models/predictions/app_predictions.csv" | |
| UNIQUE_VALUES_PATH = "models/other/unique_column_values.pkl" | |
| MODEL_PATH = "models/final_model.pkl" | |
| def predict(*args: tuple) -> Any: | |
| app_df = pd.DataFrame(data=[args], columns=columns, index=[0]) | |
| app_df.to_csv(OUTPUT_DATA_PATH, index=False) | |
| model = joblib.load(MODEL_PATH) | |
| predictions = model.predict_proba(app_df) | |
| print(predictions) | |
| if predictions[0][0] < 0.99: | |
| message = "Client is considered bad. Issuance of credit is not recommended." | |
| else: | |
| message = "Client is considered good. Issuance of credit is allowed." | |
| return round(predictions[0][0], 3), message | |
| columns = ( | |
| "YEARS_BIRTH", | |
| "CODE_GENDER", | |
| "AMT_INCOME_TOTAL", | |
| "NAME_INCOME_TYPE", | |
| "YEARS_EMPLOYED", | |
| "OCCUPATION_TYPE", | |
| "NAME_EDUCATION_TYPE", | |
| "CNT_FAM_MEMBERS", | |
| "CNT_CHILDREN", | |
| "NAME_FAMILY_STATUS", | |
| "FLAG_OWN_CAR", | |
| "FLAG_OWN_REALTY", | |
| "NAME_HOUSING_TYPE", | |
| "FLAG_PHONE", | |
| "FLAG_WORK_PHONE", | |
| "FLAG_EMAIL", | |
| ) | |
| unique_values = joblib.load(UNIQUE_VALUES_PATH) | |
| with gr.Blocks() as demo: | |
| with gr.Row(): | |
| with gr.Column(): | |
| age = gr.Slider(label="Age", minimum=18, maximum=90, step=1, randomize=True) | |
| sex = gr.Dropdown( | |
| label="Sex", | |
| choices=unique_values["CODE_GENDER"], | |
| value=lambda: random.choice(unique_values["CODE_GENDER"]), | |
| ) | |
| annual_income = gr.Slider( | |
| label="Annual income", | |
| minimum=0, | |
| maximum=1000000, | |
| step=10000, | |
| randomize=True, | |
| ) | |
| income_type = gr.Dropdown( | |
| label="Income type", | |
| choices=unique_values["NAME_INCOME_TYPE"], | |
| value=lambda: random.choice(unique_values["NAME_INCOME_TYPE"]), | |
| ) | |
| work_experience = gr.Slider( | |
| label="Work experience at current position", | |
| minimum=0, | |
| maximum=75, | |
| step=1, | |
| randomize=True, | |
| ) | |
| occupation_type = gr.Dropdown( | |
| label="Occupation type", | |
| choices=unique_values["OCCUPATION_TYPE"], | |
| value=lambda: random.choice(unique_values["OCCUPATION_TYPE"]), | |
| ) | |
| education_type = gr.Dropdown( | |
| label="Education type", | |
| choices=unique_values["NAME_EDUCATION_TYPE"], | |
| value=lambda: random.choice(unique_values["NAME_EDUCATION_TYPE"]), | |
| ) | |
| amount_of_family_members = gr.Slider( | |
| label="Amount of family members", | |
| minimum=0, | |
| maximum=12, | |
| step=1, | |
| randomize=True, | |
| ) | |
| amount_of_children = gr.Slider( | |
| label="Amount of children", | |
| minimum=0, | |
| maximum=10, | |
| step=1, | |
| randomize=True, | |
| ) | |
| with gr.Column(): | |
| family_status = gr.Dropdown( | |
| label="Family status", | |
| choices=unique_values["NAME_FAMILY_STATUS"], | |
| value=lambda: random.choice(unique_values["NAME_FAMILY_STATUS"]), | |
| ) | |
| flag_own_car = gr.Dropdown( | |
| label="Having a car", | |
| choices=unique_values["FLAG_OWN_REALTY"], | |
| value=lambda: random.choice(unique_values["FLAG_OWN_REALTY"]), | |
| ) | |
| flag_own_realty = gr.Dropdown( | |
| label="Having a realty", | |
| choices=unique_values["FLAG_OWN_REALTY"], | |
| value=lambda: random.choice(unique_values["FLAG_OWN_REALTY"]), | |
| ) | |
| housing_type = gr.Dropdown( | |
| label="Housing type", | |
| choices=unique_values["NAME_HOUSING_TYPE"], | |
| value=lambda: random.choice(unique_values["NAME_HOUSING_TYPE"]), | |
| ) | |
| flag_phone = gr.Dropdown( | |
| label="Having a phone", | |
| choices=unique_values["FLAG_PHONE"], | |
| value=lambda: random.choice(unique_values["FLAG_PHONE"]), | |
| ) | |
| flag_work_phone = gr.Dropdown( | |
| label="Having a work phone", | |
| choices=unique_values["FLAG_WORK_PHONE"], | |
| value=lambda: random.choice(unique_values["FLAG_WORK_PHONE"]), | |
| ) | |
| flag_email = gr.Dropdown( | |
| label="Having an email", | |
| choices=unique_values["FLAG_EMAIL"], | |
| value=lambda: random.choice(unique_values["FLAG_EMAIL"]), | |
| ) | |
| with gr.Column(): | |
| label_1 = gr.Label(label="Client rating") | |
| label_2 = gr.Textbox(label="Client verdict (client is considered bad if client rating < 0.99)") | |
| with gr.Row(): | |
| predict_btn = gr.Button(value="Predict") | |
| predict_btn.click( | |
| predict, | |
| inputs=[ | |
| age, | |
| sex, | |
| annual_income, | |
| income_type, | |
| work_experience, | |
| occupation_type, | |
| education_type, | |
| amount_of_family_members, | |
| amount_of_children, | |
| family_status, | |
| flag_own_car, | |
| flag_own_realty, | |
| housing_type, | |
| flag_phone, | |
| flag_work_phone, | |
| flag_email, | |
| ], | |
| outputs=[label_1, label_2], | |
| ) | |
| demo.launch() | |