Spaces:
Sleeping
Sleeping
Upload 7 files
Browse files- app.py +419 -0
- cat_cols.json +1 -0
- cat_num_cols.json +1 -0
- columns_to_drop.json +1 -0
- normal_dist.json +1 -0
- pipeline.pkl +3 -0
- skewed_dist.json +1 -0
app.py
ADDED
@@ -0,0 +1,419 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pandas as pd
|
2 |
+
import streamlit as st
|
3 |
+
import pickle
|
4 |
+
import json
|
5 |
+
|
6 |
+
# load the combined pipeline
|
7 |
+
with open('pipeline.pkl', 'rb') as file:
|
8 |
+
pipeline = pickle.load(file)
|
9 |
+
|
10 |
+
# load the list of numeric columns
|
11 |
+
with open('normal_dist.json', 'r') as file:
|
12 |
+
normal_dist = json.load(file)
|
13 |
+
|
14 |
+
with open('skewed_dist.json', 'r') as file:
|
15 |
+
skewed_dist = json.load(file)
|
16 |
+
|
17 |
+
# load the list of categorical columns (object type)
|
18 |
+
with open('cat_cols.json', 'r') as file:
|
19 |
+
cat_cols = json.load(file)
|
20 |
+
|
21 |
+
# load the list of categorical columns (number type)
|
22 |
+
with open('cat_num_cols.json', 'r') as file:
|
23 |
+
cat_num_cols = json.load(file)
|
24 |
+
|
25 |
+
with open('columns_to_drop.json', 'r') as file:
|
26 |
+
columns_to_drop = json.load(file)
|
27 |
+
|
28 |
+
def run():
|
29 |
+
# membuat title
|
30 |
+
st.title('Credit Default Prediction')
|
31 |
+
st.subheader('Predicting Credit Default')
|
32 |
+
st.markdown('---')
|
33 |
+
st.write("# Debtor Information")
|
34 |
+
# Buat form
|
35 |
+
with st.form(key='form_credit'):
|
36 |
+
st.write("#### Client's Personal Information")
|
37 |
+
SK_ID_CURR = st.number_input('Client ID', min_value=0, max_value=9999999, value=0)
|
38 |
+
NAME_CONTRACT_TYPE = st.selectbox('Contract Type', ('Cash loans', 'Revolving loans'))
|
39 |
+
CODE_GENDER = st.radio('Clients gender', ('F', 'M'))
|
40 |
+
FLAG_OWN_CAR = st.radio('Flag if the client owns a car', ('N', 'Y'))
|
41 |
+
FLAG_OWN_REALTY= st.radio('Flag if client owns a house or flat', ('N', 'Y'))
|
42 |
+
CNT_CHILDREN= st.number_input("Client's Children Count", min_value=0, max_value=20, value=0)
|
43 |
+
|
44 |
+
st.markdown('---')
|
45 |
+
st.write("#### Client's Financial Information")
|
46 |
+
|
47 |
+
AMT_INCOME_TOTAL= st.number_input('Client Income', min_value=0, max_value=9999999, value=30000)
|
48 |
+
AMT_CREDIT=st.number_input('Client Credit Amount', min_value=0, max_value=9999999, value=30000)
|
49 |
+
AMT_ANNUITY=st.number_input('Client Annuity', min_value=0, max_value=9999999, value=3000)
|
50 |
+
AMT_GOODS_PRICE=st.number_input('price of the goods for which the loan is given', min_value=0, max_value=9999999, value=50000)
|
51 |
+
NAME_TYPE_SUITE=st.selectbox('Who was accompanying client when they were applying for the loan', ('Unaccompanied', 'Family', 'Spouse, partner', 'Group of people', 'Other_B', 'Children', 'Other_A'))
|
52 |
+
NAME_INCOME_TYPE=st.selectbox('Clients income type', ('Working', 'State servant', 'Pensioner', 'Commercial associate', 'Businessman', 'Student', 'Unemployed'))
|
53 |
+
NAME_EDUCATION_TYPE=st.selectbox('Level of highest education the client achieved', ('Higher education', 'Secondary / secondary special', 'Incomplete higher', 'Lower secondary', 'Academic degree'))
|
54 |
+
NAME_FAMILY_STATUS=st.selectbox('Family status of the client', ('Married', 'Single / not married', 'Civil marriage', 'Widow', 'Separated'))
|
55 |
+
NAME_HOUSING_TYPE=st.selectbox('What is the housing situation of the client', ('House / apartment', 'With parents', 'Rented apartment', 'Municipal apartment', 'Office apartment', 'Co-op apartment'))
|
56 |
+
REGION_POPULATION_RELATIVE=st.slider('Normalized population of region where client lives', min_value=0.000000, max_value=0.080000, value=0.0200, step=0.000001)
|
57 |
+
|
58 |
+
st.markdown('---')
|
59 |
+
|
60 |
+
DAYS_BIRTH_= st.number_input('How many days before the client was born', min_value=7000, max_value=30000, value=15000)
|
61 |
+
DAYS_BIRTH = -1 * DAYS_BIRTH_
|
62 |
+
DAYS_EMPLOYED_= st.number_input('How many days before the application the person started current employment', min_value=0, max_value=30000, value=5000)
|
63 |
+
DAYS_EMPLOYED = -1* DAYS_EMPLOYED_
|
64 |
+
DAYS_REGISTRATION_= st.number_input('How many days before the application did client change his registration', min_value=0, max_value=30000, value=5000)
|
65 |
+
DAYS_REGISTRATION = -1* DAYS_REGISTRATION_
|
66 |
+
DAYS_ID_PUBLISH_ = st.number_input('How many days before the application did client change the identity document with which he applied for the loan', min_value=0, max_value=30000, value=5000)
|
67 |
+
DAYS_ID_PUBLISH = -1* DAYS_ID_PUBLISH_
|
68 |
+
|
69 |
+
st.markdown('---')
|
70 |
+
OWN_CAR_AGE=st.number_input('Age of client\'s car', min_value=0, max_value=100, value=0)
|
71 |
+
|
72 |
+
st.markdown('---')
|
73 |
+
FLAG_MOBIL_=st.radio('Did client provide mobile phone', ('Yes', 'No'), index=0)
|
74 |
+
if FLAG_MOBIL_ == 'No':
|
75 |
+
FLAG_MOBIL = 0
|
76 |
+
else:
|
77 |
+
FLAG_MOBIL = 1
|
78 |
+
FLAG_EMP_PHONE_=st.radio('Did client provide emp phone', ('Yes', 'No'), index=0)
|
79 |
+
if FLAG_EMP_PHONE_ == 'No':
|
80 |
+
FLAG_EMP_PHONE = 0
|
81 |
+
else:
|
82 |
+
FLAG_EMP_PHONE = 1
|
83 |
+
FLAG_WORK_PHONE_=st.radio('Did client provide work phone', ('Yes', 'No'), index=0)
|
84 |
+
if FLAG_WORK_PHONE_ == 'No':
|
85 |
+
FLAG_WORK_PHONE = 0
|
86 |
+
else:
|
87 |
+
FLAG_WORK_PHONE = 1
|
88 |
+
FLAG_CONT_MOBILE_=st.radio('Was mobile phone reachable', ('Yes', 'No'), index=0)
|
89 |
+
if FLAG_CONT_MOBILE_ == 'No':
|
90 |
+
FLAG_CONT_MOBILE = 0
|
91 |
+
else:
|
92 |
+
FLAG_CONT_MOBILE = 1
|
93 |
+
FLAG_PHONE_=st.radio('Did client provide home phone', ('Yes', 'No'), index=0)
|
94 |
+
if FLAG_PHONE_ == 'No':
|
95 |
+
FLAG_PHONE = 0
|
96 |
+
else:
|
97 |
+
FLAG_PHONE = 1
|
98 |
+
FLAG_EMAIL_=st.radio('Did client provide email', ('Yes', 'No'), index=0)
|
99 |
+
if FLAG_EMAIL_ == 'No':
|
100 |
+
FLAG_EMAIL = 0
|
101 |
+
else:
|
102 |
+
FLAG_EMAIL = 1
|
103 |
+
st.markdown('---')
|
104 |
+
OCCUPATION_TYPE= st.selectbox('What kind of occupation does the client have', ('Low-skill Laborers', 'Drivers', 'Sales staff',
|
105 |
+
'High skill tech staff', 'Core staff', 'Laborers',
|
106 |
+
'Managers', 'Accountants', 'Medicine staff',
|
107 |
+
'Security staff', 'Private service staff', 'Secretaries',
|
108 |
+
'Cleaning staff', 'Cooking staff', 'HR staff',
|
109 |
+
'Waiters/barmen staff', 'Realty agents', 'IT staff'))
|
110 |
+
CNT_FAM_MEMBERS= st.number_input("How many family members does client have", min_value=0, max_value=20, value=0)
|
111 |
+
REGION_RATING_CLIENT= st.radio('Our rating of the region where client lives', (1, 2, 3), index=0)
|
112 |
+
REGION_RATING_CLIENT_W_CITY= st.radio('Our rating of the region where client lives with taking city into account', (1, 2, 3), index=0)
|
113 |
+
st.markdown('---')
|
114 |
+
WEEKDAY_APPR_PROCESS_START= st.radio('Day of the week when the client apply for the loan', ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'))
|
115 |
+
HOUR_APPR_PROCESS_START= st.number_input('Hour when client apply for the loan', min_value=0, max_value=24, value=0, step=1, help="Input rounded value.")
|
116 |
+
|
117 |
+
st.markdown('---')
|
118 |
+
st.write("#### Client's Address in Region")
|
119 |
+
|
120 |
+
REG_REGION_NOT_LIVE_REGION_=st.radio('Permanent address does not match contact address', ('No', 'Yes'))
|
121 |
+
if REG_REGION_NOT_LIVE_REGION_ == 'No':
|
122 |
+
REG_REGION_NOT_LIVE_REGION = 0
|
123 |
+
else:
|
124 |
+
REG_REGION_NOT_LIVE_REGION = 1
|
125 |
+
REG_REGION_NOT_WORK_REGION_=st.radio('Permanent address does not match work address', ('No', 'Yes'))
|
126 |
+
if REG_REGION_NOT_WORK_REGION_ == 'No':
|
127 |
+
REG_REGION_NOT_WORK_REGION = 0
|
128 |
+
else:
|
129 |
+
REG_REGION_NOT_WORK_REGION = 1
|
130 |
+
LIVE_REGION_NOT_WORK_REGION= st.radio('Contact address does not match work address', ('No', 'Yes'))
|
131 |
+
if LIVE_REGION_NOT_WORK_REGION == 'No':
|
132 |
+
LIVE_REGION_NOT_WORK_REGION = 0
|
133 |
+
else:
|
134 |
+
LIVE_REGION_NOT_WORK_REGION = 1
|
135 |
+
st.markdown('---')
|
136 |
+
st.write("#### Client's Address in City")
|
137 |
+
|
138 |
+
REG_CITY_NOT_LIVE_CITY= st.radio('Contact address (city) does not match contact address', ('No', 'Yes'))
|
139 |
+
if REG_CITY_NOT_LIVE_CITY == 'No':
|
140 |
+
REG_CITY_NOT_LIVE_CITY = 0
|
141 |
+
else:
|
142 |
+
REG_CITY_NOT_LIVE_CITY = 1
|
143 |
+
REG_CITY_NOT_WORK_CITY= st.radio('Permanent address (city) does not match work address', ('No', 'Yes'))
|
144 |
+
if REG_CITY_NOT_WORK_CITY == 'No':
|
145 |
+
REG_CITY_NOT_WORK_CITY = 0
|
146 |
+
else:
|
147 |
+
REG_CITY_NOT_WORK_CITY = 1
|
148 |
+
LIVE_CITY_NOT_WORK_CITY= st.radio('Contact address (city) does not match work address', ('No', 'Yes'))
|
149 |
+
if LIVE_CITY_NOT_WORK_CITY == 'No':
|
150 |
+
LIVE_CITY_NOT_WORK_CITY = 0
|
151 |
+
else:
|
152 |
+
LIVE_CITY_NOT_WORK_CITY = 1
|
153 |
+
ORGANIZATION_TYPE= st.selectbox('Type of organization where client works', ('Kindergarten', 'Self-employed', 'Transport: type 3',
|
154 |
+
'Business Entity Type 3', 'Government', 'Industry: type 9',
|
155 |
+
'School', 'Trade: type 2', 'XNA', 'Services', 'Bank',
|
156 |
+
'Industry: type 3', 'Other', 'Trade: type 6', 'Industry: type 12',
|
157 |
+
'Trade: type 7', 'Postal', 'Medicine', 'Housing',
|
158 |
+
'Business Entity Type 2', 'Construction', 'Military',
|
159 |
+
'Industry: type 4', 'Trade: type 3', 'Legal Services', 'Security',
|
160 |
+
'Industry: type 11', 'University', 'Business Entity Type 1',
|
161 |
+
'Agriculture', 'Security Ministries', 'Transport: type 2',
|
162 |
+
'Industry: type 7', 'Transport: type 4', 'Telecom', 'Emergency',
|
163 |
+
'Police', 'Industry: type 1', 'Transport: type 1', 'Electricity',
|
164 |
+
'Industry: type 5', 'Hotel', 'Restaurant', 'Advertising', 'Mobile',
|
165 |
+
'Trade: type 1', 'Industry: type 8', 'Realtor', 'Cleaning',
|
166 |
+
'Industry: type 2', 'Trade: type 4', 'Industry: type 6', 'Culture',
|
167 |
+
'Insurance', 'Religion', 'Industry: type 13', 'Industry: type 10',
|
168 |
+
'Trade: type 5'))
|
169 |
+
|
170 |
+
st.markdown('---')
|
171 |
+
st.write("#### Credit Score")
|
172 |
+
EXT_SOURCE_1= st.slider('Credit Score from Source 1', min_value=0.0, max_value=20.0, value=0.1, step=1.0, help="Input rounded value.")
|
173 |
+
EXT_SOURCE_2= st.slider('Credit Score from Source 2', min_value=0.0, max_value=20.0, value=0.1, step=1.0, help="Input rounded value.")
|
174 |
+
EXT_SOURCE_3= st.slider('Credit Score from Source 3', min_value=0.0, max_value=20.0, value=0.1, step=1.0, help="Input rounded value.")
|
175 |
+
st.markdown('---')
|
176 |
+
|
177 |
+
st.write("#### Client's social surroundings")
|
178 |
+
OBS_30_CNT_SOCIAL_CIRCLE= st.number_input('Observation 30 days past due',min_value=0, max_value=50, value=0, step=1, help="Input rounded value.")
|
179 |
+
DEF_30_CNT_SOCIAL_CIRCLE= st.number_input('Number of default 30 days past due', min_value=0, max_value=50, value=0, step=1, help="Input rounded value.")
|
180 |
+
OBS_60_CNT_SOCIAL_CIRCLE= st.number_input('Observation 60 days past due', min_value=0, max_value=50, value=0, step=1, help="Input rounded value.")
|
181 |
+
DEF_60_CNT_SOCIAL_CIRCLE= st.number_input('Number of default 60 days past due', min_value=0, max_value=50, value=0, step=1, help="Input rounded value.")
|
182 |
+
|
183 |
+
DAYS_LAST_PHONE_CHANGE_ = st.number_input('How many days before application did client change phone', min_value=0, max_value=10000, value=1000)
|
184 |
+
DAYS_LAST_PHONE_CHANGE = -1 * DAYS_LAST_PHONE_CHANGE_
|
185 |
+
|
186 |
+
st.markdown('---')
|
187 |
+
|
188 |
+
st.write("#### Client's Document")
|
189 |
+
flag_document_2= st.radio('Did client provide Identification?', ('No', 'Yes'))
|
190 |
+
if flag_document_2 == 'No':
|
191 |
+
FLAG_DOCUMENT_2 = 0
|
192 |
+
else:
|
193 |
+
FLAG_DOCUMENT_2 = 1
|
194 |
+
FLAG_DOCUMENT_3_= st.radio('Did client provide proof of address?', ('No', 'Yes'))
|
195 |
+
if FLAG_DOCUMENT_3_ == 'No':
|
196 |
+
FLAG_DOCUMENT_3 = 0
|
197 |
+
else:
|
198 |
+
FLAG_DOCUMENT_3 = 1
|
199 |
+
FLAG_DOCUMENT_4_= st.radio('Did client provide bank statement?', ('No', 'Yes'))
|
200 |
+
if FLAG_DOCUMENT_4_ == 'No':
|
201 |
+
FLAG_DOCUMENT_4 = 0
|
202 |
+
else:
|
203 |
+
FLAG_DOCUMENT_4 = 1
|
204 |
+
FLAG_DOCUMENT_5_= st.radio('Did client provide employment certificate?', ('No', 'Yes'))
|
205 |
+
if FLAG_DOCUMENT_5_ == 'No':
|
206 |
+
FLAG_DOCUMENT_5 = 0
|
207 |
+
else:
|
208 |
+
FLAG_DOCUMENT_5 = 1
|
209 |
+
FLAG_DOCUMENT_6_= st.radio('Did client provide other document (code = 6)?', ('No', 'Yes'))
|
210 |
+
if FLAG_DOCUMENT_6_ == 'No':
|
211 |
+
FLAG_DOCUMENT_6 = 0
|
212 |
+
else:
|
213 |
+
FLAG_DOCUMENT_6 = 1
|
214 |
+
FLAG_DOCUMENT_7_= st.radio('Did client provide library card?', ('No', 'Yes'))
|
215 |
+
if FLAG_DOCUMENT_7_ == 'No':
|
216 |
+
FLAG_DOCUMENT_7 = 0
|
217 |
+
else:
|
218 |
+
FLAG_DOCUMENT_7 = 1
|
219 |
+
FLAG_DOCUMENT_8_= st.radio('Did client provide car registration?', ('No', 'Yes'))
|
220 |
+
if FLAG_DOCUMENT_8_ == 'No':
|
221 |
+
FLAG_DOCUMENT_8 = 0
|
222 |
+
else:
|
223 |
+
FLAG_DOCUMENT_8 = 1
|
224 |
+
FLAG_DOCUMENT_9_= st.radio('Did client provide passport?', ('No', 'Yes'))
|
225 |
+
if FLAG_DOCUMENT_9_ == 'No':
|
226 |
+
FLAG_DOCUMENT_9 = 0
|
227 |
+
else:
|
228 |
+
FLAG_DOCUMENT_9 = 1
|
229 |
+
|
230 |
+
FLAG_DOCUMENT_10_= st.radio("Did client provide driver's license?", ('No', 'Yes'))
|
231 |
+
if FLAG_DOCUMENT_10_ == 'No':
|
232 |
+
FLAG_DOCUMENT_10 = 0
|
233 |
+
else:
|
234 |
+
FLAG_DOCUMENT_10 = 1
|
235 |
+
|
236 |
+
FLAG_DOCUMENT_11_= st.radio('Did client provide other document (code = 11)?', ('No', 'Yes'))
|
237 |
+
if FLAG_DOCUMENT_11_ == 'No':
|
238 |
+
FLAG_DOCUMENT_11 = 0
|
239 |
+
else:
|
240 |
+
FLAG_DOCUMENT_11 = 1
|
241 |
+
|
242 |
+
FLAG_DOCUMENT_12_= st.radio('Did client provide other document (code = 12)?', ('No', 'Yes'))
|
243 |
+
if FLAG_DOCUMENT_12_ == 'No':
|
244 |
+
FLAG_DOCUMENT_12 = 0
|
245 |
+
else:
|
246 |
+
FLAG_DOCUMENT_12 = 1
|
247 |
+
|
248 |
+
FLAG_DOCUMENT_13_= st.radio('Did client provide other document (code = 13)?', ('No', 'Yes'))
|
249 |
+
if FLAG_DOCUMENT_13_ == 'No':
|
250 |
+
FLAG_DOCUMENT_13 = 0
|
251 |
+
else:
|
252 |
+
FLAG_DOCUMENT_13 = 1
|
253 |
+
|
254 |
+
FLAG_DOCUMENT_14_= st.radio('Did client provide other document (code = 14)?', ('No', 'Yes'))
|
255 |
+
if FLAG_DOCUMENT_14_ == 'No':
|
256 |
+
FLAG_DOCUMENT_14 = 0
|
257 |
+
else:
|
258 |
+
FLAG_DOCUMENT_14 = 1
|
259 |
+
|
260 |
+
FLAG_DOCUMENT_15_= st.radio('Did client provide other document (code = 15)', ('No', 'Yes'))
|
261 |
+
if FLAG_DOCUMENT_15_ == 'No':
|
262 |
+
FLAG_DOCUMENT_15 = 0
|
263 |
+
else:
|
264 |
+
FLAG_DOCUMENT_15 = 1
|
265 |
+
|
266 |
+
FLAG_DOCUMENT_16_= st.radio('Did client provide other document (code = 16)?', ('No', 'Yes'))
|
267 |
+
if FLAG_DOCUMENT_16_ == 'No':
|
268 |
+
FLAG_DOCUMENT_16 = 0
|
269 |
+
else:
|
270 |
+
FLAG_DOCUMENT_16 = 1
|
271 |
+
|
272 |
+
FLAG_DOCUMENT_17_= st.radio('Did client provide other document (code = 17)?', ('No', 'Yes'))
|
273 |
+
if FLAG_DOCUMENT_17_ == 'No':
|
274 |
+
FLAG_DOCUMENT_17 = 0
|
275 |
+
else:
|
276 |
+
FLAG_DOCUMENT_17 = 1
|
277 |
+
|
278 |
+
FLAG_DOCUMENT_18_= st.radio('Did client provide other document (code = 18)?', ('No', 'Yes'))
|
279 |
+
if FLAG_DOCUMENT_18_ == 'No':
|
280 |
+
FLAG_DOCUMENT_18 = 0
|
281 |
+
else:
|
282 |
+
FLAG_DOCUMENT_18 = 1
|
283 |
+
|
284 |
+
FLAG_DOCUMENT_19_= st.radio('Did client provide other document (code = 19)?', ('No', 'Yes'))
|
285 |
+
if FLAG_DOCUMENT_19_ == 'No':
|
286 |
+
FLAG_DOCUMENT_19 = 0
|
287 |
+
else:
|
288 |
+
FLAG_DOCUMENT_19 = 1
|
289 |
+
|
290 |
+
FLAG_DOCUMENT_20_= st.radio('Did client provide other document (code = 20)?', ('No', 'Yes'))
|
291 |
+
if FLAG_DOCUMENT_20_ == 'No':
|
292 |
+
FLAG_DOCUMENT_20 = 0
|
293 |
+
else:
|
294 |
+
FLAG_DOCUMENT_20 = 1
|
295 |
+
|
296 |
+
FLAG_DOCUMENT_21_= st.radio('Did client provide other document (code = 21)?', ('No', 'Yes'))
|
297 |
+
if FLAG_DOCUMENT_21_ == 'No':
|
298 |
+
FLAG_DOCUMENT_21 = 0
|
299 |
+
else:
|
300 |
+
FLAG_DOCUMENT_21 = 1
|
301 |
+
|
302 |
+
st.markdown('---')
|
303 |
+
|
304 |
+
st.write("#### Number of Enquiries")
|
305 |
+
|
306 |
+
AMT_REQ_CREDIT_BUREAU_HOUR= st.slider('One hour before application', min_value=0, max_value=24, value=0, step=1, help="Input rounded value.")
|
307 |
+
AMT_REQ_CREDIT_BUREAU_DAY= st.slider('One day before application', min_value=0, max_value=31, value=0, step=1, help="Input rounded value.")
|
308 |
+
AMT_REQ_CREDIT_BUREAU_WEEK= st.slider('One week before application', min_value=0, max_value=10, value=0, step=1, help="Input rounded value.")
|
309 |
+
AMT_REQ_CREDIT_BUREAU_MON= st.slider('One month before application', min_value=0, max_value=24, value=0, step=1, help="Input rounded value.")
|
310 |
+
AMT_REQ_CREDIT_BUREAU_QRT= st.slider('Three months before application', min_value=0, max_value=12, value=0, step=1, help="Input rounded value.")
|
311 |
+
AMT_REQ_CREDIT_BUREAU_YEAR= st.slider('One year before application', min_value=0, max_value=30, value=0, step=1, help="Input rounded value.")
|
312 |
+
|
313 |
+
st.markdown('---')
|
314 |
+
AGE = st.number_input('AGE', min_value=18, max_value=100, value=0)
|
315 |
+
YEAR_EMPLOYED = st.number_input('YEAR_EMPLOYED', min_value=1000, max_value=2024, value=0)
|
316 |
+
YEAR_REGISTRATION = st.number_input('YEAR_REGISTRATION', min_value=1000, max_value=2024, value=0)
|
317 |
+
|
318 |
+
st.markdown('---')
|
319 |
+
submitted = st.form_submit_button('Predict')
|
320 |
+
|
321 |
+
# dataframe
|
322 |
+
st.write("# Debtor Summary")
|
323 |
+
data_inf = {
|
324 |
+
"SK_ID_CURR":SK_ID_CURR,
|
325 |
+
"NAME_CONTRACT_TYPE":NAME_CONTRACT_TYPE,
|
326 |
+
"CODE_GENDER":CODE_GENDER,
|
327 |
+
"FLAG_OWN_CAR":FLAG_OWN_CAR,
|
328 |
+
"FLAG_OWN_REALTY":FLAG_OWN_REALTY,
|
329 |
+
"CNT_CHILDREN":CNT_CHILDREN,
|
330 |
+
"AMT_INCOME_TOTAL":AMT_INCOME_TOTAL,
|
331 |
+
"AMT_CREDIT":AMT_CREDIT,
|
332 |
+
"AMT_ANNUITY":AMT_ANNUITY,
|
333 |
+
"AMT_GOODS_PRICE":AMT_GOODS_PRICE,
|
334 |
+
"NAME_TYPE_SUITE":NAME_TYPE_SUITE,
|
335 |
+
"NAME_INCOME_TYPE":NAME_INCOME_TYPE,
|
336 |
+
"NAME_EDUCATION_TYPE":NAME_EDUCATION_TYPE,
|
337 |
+
"NAME_FAMILY_STATUS":NAME_FAMILY_STATUS,
|
338 |
+
"NAME_HOUSING_TYPE":NAME_HOUSING_TYPE,
|
339 |
+
"REGION_POPULATION_RELATIVE":REGION_POPULATION_RELATIVE,
|
340 |
+
"DAYS_BIRTH":DAYS_BIRTH,
|
341 |
+
"DAYS_EMPLOYED":DAYS_EMPLOYED,
|
342 |
+
"DAYS_REGISTRATION":DAYS_REGISTRATION,
|
343 |
+
"DAYS_ID_PUBLISH":DAYS_ID_PUBLISH,
|
344 |
+
"OWN_CAR_AGE":OWN_CAR_AGE,
|
345 |
+
"FLAG_MOBIL":FLAG_MOBIL,
|
346 |
+
"FLAG_EMP_PHONE":FLAG_EMP_PHONE,
|
347 |
+
"FLAG_WORK_PHONE":FLAG_WORK_PHONE,
|
348 |
+
"FLAG_CONT_MOBILE":FLAG_CONT_MOBILE,
|
349 |
+
"FLAG_PHONE":FLAG_PHONE,
|
350 |
+
"FLAG_EMAIL":FLAG_EMAIL,
|
351 |
+
"OCCUPATION_TYPE":OCCUPATION_TYPE,
|
352 |
+
"CNT_FAM_MEMBERS":CNT_FAM_MEMBERS,
|
353 |
+
"REGION_RATING_CLIENT":REGION_RATING_CLIENT,
|
354 |
+
"REGION_RATING_CLIENT_W_CITY":REGION_RATING_CLIENT_W_CITY,
|
355 |
+
"WEEKDAY_APPR_PROCESS_START":WEEKDAY_APPR_PROCESS_START,
|
356 |
+
"HOUR_APPR_PROCESS_START":HOUR_APPR_PROCESS_START,
|
357 |
+
"REG_REGION_NOT_LIVE_REGION":REG_REGION_NOT_LIVE_REGION,
|
358 |
+
"REG_REGION_NOT_WORK_REGION":REG_REGION_NOT_WORK_REGION,
|
359 |
+
"LIVE_REGION_NOT_WORK_REGION":LIVE_REGION_NOT_WORK_REGION,
|
360 |
+
"REG_CITY_NOT_LIVE_CITY":REG_CITY_NOT_LIVE_CITY,
|
361 |
+
"REG_CITY_NOT_WORK_CITY":REG_CITY_NOT_WORK_CITY,
|
362 |
+
"LIVE_CITY_NOT_WORK_CITY":LIVE_CITY_NOT_WORK_CITY,
|
363 |
+
"ORGANIZATION_TYPE":ORGANIZATION_TYPE,
|
364 |
+
"EXT_SOURCE_1":EXT_SOURCE_1,
|
365 |
+
"EXT_SOURCE_2":EXT_SOURCE_2,
|
366 |
+
"EXT_SOURCE_3":EXT_SOURCE_3,
|
367 |
+
"OBS_30_CNT_SOCIAL_CIRCLE":OBS_30_CNT_SOCIAL_CIRCLE,
|
368 |
+
"DEF_30_CNT_SOCIAL_CIRCLE":DEF_30_CNT_SOCIAL_CIRCLE,
|
369 |
+
"OBS_60_CNT_SOCIAL_CIRCLE":OBS_60_CNT_SOCIAL_CIRCLE,
|
370 |
+
"DEF_60_CNT_SOCIAL_CIRCLE":DEF_60_CNT_SOCIAL_CIRCLE,
|
371 |
+
"DAYS_LAST_PHONE_CHANGE":DAYS_LAST_PHONE_CHANGE,
|
372 |
+
"FLAG_DOCUMENT_2":FLAG_DOCUMENT_2,
|
373 |
+
"FLAG_DOCUMENT_3":FLAG_DOCUMENT_3,
|
374 |
+
"FLAG_DOCUMENT_4":FLAG_DOCUMENT_4,
|
375 |
+
"FLAG_DOCUMENT_5":FLAG_DOCUMENT_5,
|
376 |
+
"FLAG_DOCUMENT_6":FLAG_DOCUMENT_6,
|
377 |
+
"FLAG_DOCUMENT_7":FLAG_DOCUMENT_7,
|
378 |
+
"FLAG_DOCUMENT_8":FLAG_DOCUMENT_8,
|
379 |
+
"FLAG_DOCUMENT_9":FLAG_DOCUMENT_9,
|
380 |
+
"FLAG_DOCUMENT_10":FLAG_DOCUMENT_10,
|
381 |
+
"FLAG_DOCUMENT_11":FLAG_DOCUMENT_11,
|
382 |
+
"FLAG_DOCUMENT_12":FLAG_DOCUMENT_12,
|
383 |
+
"FLAG_DOCUMENT_13":FLAG_DOCUMENT_13,
|
384 |
+
"FLAG_DOCUMENT_14":FLAG_DOCUMENT_14,
|
385 |
+
"FLAG_DOCUMENT_15":FLAG_DOCUMENT_15,
|
386 |
+
"FLAG_DOCUMENT_16":FLAG_DOCUMENT_16,
|
387 |
+
"FLAG_DOCUMENT_17":FLAG_DOCUMENT_17,
|
388 |
+
"FLAG_DOCUMENT_18":FLAG_DOCUMENT_18,
|
389 |
+
"FLAG_DOCUMENT_19":FLAG_DOCUMENT_19,
|
390 |
+
"FLAG_DOCUMENT_20":FLAG_DOCUMENT_20,
|
391 |
+
"FLAG_DOCUMENT_21":FLAG_DOCUMENT_21,
|
392 |
+
"AMT_REQ_CREDIT_BUREAU_HOUR":AMT_REQ_CREDIT_BUREAU_HOUR,
|
393 |
+
"AMT_REQ_CREDIT_BUREAU_DAY":AMT_REQ_CREDIT_BUREAU_DAY,
|
394 |
+
"AMT_REQ_CREDIT_BUREAU_WEEK":AMT_REQ_CREDIT_BUREAU_WEEK,
|
395 |
+
"AMT_REQ_CREDIT_BUREAU_MON":AMT_REQ_CREDIT_BUREAU_MON,
|
396 |
+
"AMT_REQ_CREDIT_BUREAU_QRT":AMT_REQ_CREDIT_BUREAU_QRT,
|
397 |
+
"AMT_REQ_CREDIT_BUREAU_YEAR":AMT_REQ_CREDIT_BUREAU_YEAR,
|
398 |
+
"AGE":AGE,
|
399 |
+
"YEAR_EMPLOYED":YEAR_EMPLOYED,
|
400 |
+
"YEAR_REGISTRATION":YEAR_REGISTRATION
|
401 |
+
|
402 |
+
}
|
403 |
+
|
404 |
+
data_inf = pd.DataFrame([data_inf])
|
405 |
+
st.dataframe(data_inf.T, width=800, height=495)
|
406 |
+
|
407 |
+
if submitted:
|
408 |
+
# Predict using created pipeline
|
409 |
+
y_pred_inf = pipeline.predict(data_inf)
|
410 |
+
if y_pred_inf == 0:
|
411 |
+
pred = 'Not Default'
|
412 |
+
else:
|
413 |
+
pred = 'Default'
|
414 |
+
st.markdown('---')
|
415 |
+
st.write('# Prediction : ', (pred))
|
416 |
+
st.markdown('---')
|
417 |
+
|
418 |
+
if __name__ == '__main__':
|
419 |
+
run()
|
cat_cols.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["NAME_CONTRACT_TYPE", "CODE_GENDER", "FLAG_OWN_CAR", "FLAG_OWN_REALTY", "NAME_TYPE_SUITE", "NAME_INCOME_TYPE", "NAME_EDUCATION_TYPE", "NAME_FAMILY_STATUS", "NAME_HOUSING_TYPE", "OCCUPATION_TYPE", "WEEKDAY_APPR_PROCESS_START", "ORGANIZATION_TYPE", "AGE_CATEGORY"]
|
cat_num_cols.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["FLAG_MOBIL", "FLAG_EMP_PHONE", "FLAG_WORK_PHONE", "FLAG_CONT_MOBILE", "FLAG_PHONE", "FLAG_EMAIL", "REGION_RATING_CLIENT", "REGION_RATING_CLIENT_W_CITY", "HOUR_APPR_PROCESS_START", "REG_REGION_NOT_LIVE_REGION", "REG_REGION_NOT_WORK_REGION", "LIVE_REGION_NOT_WORK_REGION", "REG_CITY_NOT_LIVE_CITY", "REG_CITY_NOT_WORK_CITY", "LIVE_CITY_NOT_WORK_CITY", "FLAG_DOCUMENT_2", "FLAG_DOCUMENT_3", "FLAG_DOCUMENT_4", "FLAG_DOCUMENT_5", "FLAG_DOCUMENT_6", "FLAG_DOCUMENT_7", "FLAG_DOCUMENT_8", "FLAG_DOCUMENT_9", "FLAG_DOCUMENT_10", "FLAG_DOCUMENT_11", "FLAG_DOCUMENT_12", "FLAG_DOCUMENT_13", "FLAG_DOCUMENT_14", "FLAG_DOCUMENT_15", "FLAG_DOCUMENT_16", "FLAG_DOCUMENT_17", "FLAG_DOCUMENT_18", "FLAG_DOCUMENT_19", "FLAG_DOCUMENT_20", "FLAG_DOCUMENT_21"]
|
columns_to_drop.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
[]
|
normal_dist.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["DAYS_BIRTH", "DAYS_ID_PUBLISH", "HOUR_APPR_PROCESS_START", "EXT_SOURCE_2", "EXT_SOURCE_3"]
|
pipeline.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1e485b268821b82cc304ab80f72c175645ec26d95723cb65369a4775d931f2e6
|
3 |
+
size 420042
|
skewed_dist.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
["CNT_CHILDREN", "AMT_INCOME_TOTAL", "AMT_CREDIT", "AMT_ANNUITY", "AMT_GOODS_PRICE", "REGION_POPULATION_RELATIVE", "DAYS_EMPLOYED", "DAYS_REGISTRATION", "FLAG_MOBIL", "FLAG_EMP_PHONE", "FLAG_WORK_PHONE", "FLAG_CONT_MOBILE", "FLAG_PHONE", "FLAG_EMAIL", "CNT_FAM_MEMBERS", "REGION_RATING_CLIENT", "REGION_RATING_CLIENT_W_CITY", "REG_REGION_NOT_LIVE_REGION", "REG_REGION_NOT_WORK_REGION", "LIVE_REGION_NOT_WORK_REGION", "REG_CITY_NOT_LIVE_CITY", "REG_CITY_NOT_WORK_CITY", "LIVE_CITY_NOT_WORK_CITY", "OBS_30_CNT_SOCIAL_CIRCLE", "DEF_30_CNT_SOCIAL_CIRCLE", "OBS_60_CNT_SOCIAL_CIRCLE", "DEF_60_CNT_SOCIAL_CIRCLE", "DAYS_LAST_PHONE_CHANGE", "FLAG_DOCUMENT_2", "FLAG_DOCUMENT_3", "FLAG_DOCUMENT_4", "FLAG_DOCUMENT_5", "FLAG_DOCUMENT_6", "FLAG_DOCUMENT_7", "FLAG_DOCUMENT_8", "FLAG_DOCUMENT_9", "FLAG_DOCUMENT_10", "FLAG_DOCUMENT_11", "FLAG_DOCUMENT_12", "FLAG_DOCUMENT_13", "FLAG_DOCUMENT_14", "FLAG_DOCUMENT_15", "FLAG_DOCUMENT_16", "FLAG_DOCUMENT_17", "FLAG_DOCUMENT_18", "FLAG_DOCUMENT_19", "FLAG_DOCUMENT_20", "FLAG_DOCUMENT_21", "AMT_REQ_CREDIT_BUREAU_HOUR", "AMT_REQ_CREDIT_BUREAU_DAY", "AMT_REQ_CREDIT_BUREAU_WEEK", "AMT_REQ_CREDIT_BUREAU_MON", "AMT_REQ_CREDIT_BUREAU_QRT", "AMT_REQ_CREDIT_BUREAU_YEAR", "AGE", "YEAR_EMPLOYED", "YEAR_REGISTRATION"]
|