deeploy-adubowski commited on
Commit
01cc876
·
1 Parent(s): 236a1fc

Update displayed values

Browse files
Files changed (3) hide show
  1. app.py +32 -32
  2. constants.py +5 -9
  3. requirements.txt +1 -1
app.py CHANGED
@@ -8,7 +8,7 @@ from constants import (
8
  relationship_dict,
9
  occupation_dict,
10
  education_dict,
11
- workclass_dict,
12
  countries_dict,
13
  marital_status_dict,
14
  )
@@ -130,30 +130,30 @@ with st.expander("Application form", expanded=False):
130
  "Native Country", countries_dict.keys(), index=len(countries_dict) - 1
131
  )
132
  native_country_id = countries_dict[native_country]
133
- relationship = st.selectbox("Relative", relationship_dict.keys(), index=1)
134
  relationship_id = relationship_dict[relationship]
135
  occupation = st.selectbox("Occupation", occupation_dict.keys(), index=1)
136
  occupation_id = occupation_dict[occupation]
137
 
138
  with col2:
139
- education = st.selectbox("Education", education_dict.keys(), index=4)
140
  education_id = education_dict[education]
141
- workclass = st.selectbox("Workclass", workclass_dict.keys())
142
- workclass_id = workclass_dict[workclass]
143
  hours_per_week = st.number_input(
144
- "Hours per week", min_value=0, max_value=100, value=40
145
  )
146
  capital_gain = st.number_input(
147
- "Yearly income [€]", min_value=0, max_value=1000000, value=70000
148
  )
149
  capital_loss = st.number_input(
150
- "Yearly expenditures [€]", min_value=0, max_value=1000000, value=60000
151
  )
152
  data_df = pd.DataFrame(
153
  [
154
  [
155
  age,
156
- workclass,
157
  education,
158
  marital_status,
159
  occupation,
@@ -166,14 +166,14 @@ with st.expander("Application form", expanded=False):
166
  ],
167
  columns=[
168
  "Age",
169
- "Workclass",
170
- "Education",
171
  "Marital Status",
172
  "Occupation",
173
- "Relative",
174
  "Yearly Income [€]",
175
  "Yearly expenditures [€]",
176
- "Hours per week",
177
  "Native Country",
178
  ],
179
  )
@@ -182,7 +182,7 @@ with st.expander("Application form", expanded=False):
182
  "instances": [
183
  [
184
  age,
185
- workclass_id,
186
  education_id,
187
  marital_status_id,
188
  occupation_id,
@@ -273,28 +273,25 @@ if st.session_state.selected == "Loan Decision":
273
 
274
  # If prediction is positive, first show positive features, then negative features
275
  st.success(
276
- "**Positive credit suitability**. This is primarily attributed to: \n - "
277
  + " \n- ".join(pos_feats)
278
  )
279
  st.warning(
280
  "However, the following features weight ***against*** the loan application: \n - "
281
  + " \n- ".join(neg_feats)
282
- + " \n See explanation below for more details.",
283
- icon="⚠️",
284
  )
285
  else:
286
  st.subheader("Loan Decision: :red[NEGATIVE]", divider="red")
287
  # If prediction is negative, first show negative features, then positive features
288
  st.error(
289
- "**Negative credit suitability**. This is primarily attributed to: \n - "
290
  + " \n - ".join(neg_feats)
291
- + "."
292
  )
293
  st.warning(
294
  "However, the following factors weigh ***in favor*** of the loan applicant: \n - "
295
  + " \n - ".join(pos_feats)
296
- + ". \n See below for more details.",
297
- icon="⚠️",
298
  )
299
  explanation_expander = st.expander("Show explanation")
300
  with explanation_expander:
@@ -340,9 +337,9 @@ if st.session_state.selected == "Loan Decision":
340
  st.divider()
341
 
342
  # Add prediction evaluation
343
- st.subheader("Prediction Evaluation: Do you agree with the AI prediction?")
344
  st.info(
345
- "AI model predictions always come with a certain level of uncertainty. Evaluate the correctness of the prediction based on your expertise and experience."
346
  )
347
  cols = st.columns(4)
348
  col_yes, col_no = cols[:2]
@@ -387,15 +384,18 @@ if st.session_state.selected == "Loan Decision":
387
  logging.debug(
388
  "Selected feedback:" + str(st.session_state.evaluation_input)
389
  )
390
- if st.button("Submit", key="submit_button"):
391
- st.session_state.eval_selected = False
392
- success = send_evaluation(
393
- client,
394
- deployment_id,
395
- request_log_id,
396
- prediction_log_id,
397
- st.session_state.evaluation_input,
398
- )
 
 
 
399
  if success:
400
  st.session_state.eval_selected = False
401
  st.success("Feedback submitted successfully.")
 
8
  relationship_dict,
9
  occupation_dict,
10
  education_dict,
11
+ type_of_work_dict,
12
  countries_dict,
13
  marital_status_dict,
14
  )
 
130
  "Native Country", countries_dict.keys(), index=len(countries_dict) - 1
131
  )
132
  native_country_id = countries_dict[native_country]
133
+ relationship = st.selectbox("Family situation", relationship_dict.keys())
134
  relationship_id = relationship_dict[relationship]
135
  occupation = st.selectbox("Occupation", occupation_dict.keys(), index=1)
136
  occupation_id = occupation_dict[occupation]
137
 
138
  with col2:
139
+ education = st.selectbox("Highest education level", education_dict.keys(), index=4)
140
  education_id = education_dict[education]
141
+ type_of_work = st.selectbox("Type of work", type_of_work_dict.keys())
142
+ type_of_work_id = type_of_work_dict[type_of_work]
143
  hours_per_week = st.number_input(
144
+ "Working hours per week", min_value=0, max_value=100, value=40
145
  )
146
  capital_gain = st.number_input(
147
+ "Yearly income", min_value=0, max_value=1000000, value=70000
148
  )
149
  capital_loss = st.number_input(
150
+ "Yearly expenditures", min_value=0, max_value=1000000, value=60000
151
  )
152
  data_df = pd.DataFrame(
153
  [
154
  [
155
  age,
156
+ type_of_work,
157
  education,
158
  marital_status,
159
  occupation,
 
166
  ],
167
  columns=[
168
  "Age",
169
+ "Type of work",
170
+ "Highest education level",
171
  "Marital Status",
172
  "Occupation",
173
+ "Family situation",
174
  "Yearly Income [€]",
175
  "Yearly expenditures [€]",
176
+ "Working hours per week",
177
  "Native Country",
178
  ],
179
  )
 
182
  "instances": [
183
  [
184
  age,
185
+ type_of_work_id,
186
  education_id,
187
  marital_status_id,
188
  occupation_id,
 
273
 
274
  # If prediction is positive, first show positive features, then negative features
275
  st.success(
276
+ "**Positive creditworthiness**. This is primarily attributed to: \n - "
277
  + " \n- ".join(pos_feats)
278
  )
279
  st.warning(
280
  "However, the following features weight ***against*** the loan application: \n - "
281
  + " \n- ".join(neg_feats)
282
+ + " \n For more details, see full explanation of the credit assessment below.",
 
283
  )
284
  else:
285
  st.subheader("Loan Decision: :red[NEGATIVE]", divider="red")
286
  # If prediction is negative, first show negative features, then positive features
287
  st.error(
288
+ "**Negative creditworthiness**. This is primarily attributed to: \n - "
289
  + " \n - ".join(neg_feats)
 
290
  )
291
  st.warning(
292
  "However, the following factors weigh ***in favor*** of the loan applicant: \n - "
293
  + " \n - ".join(pos_feats)
294
+ + " \n For more details, see full explanation of the credit assessment below.",
 
295
  )
296
  explanation_expander = st.expander("Show explanation")
297
  with explanation_expander:
 
337
  st.divider()
338
 
339
  # Add prediction evaluation
340
+ st.subheader("Evaluation: Do you agree with the predicted creditworthiness?")
341
  st.info(
342
+ "AI model predictions always come with a certain level of uncertainty. \nEvaluate the correctness of the prediction based on your expertise and experience."
343
  )
344
  cols = st.columns(4)
345
  col_yes, col_no = cols[:2]
 
384
  logging.debug(
385
  "Selected feedback:" + str(st.session_state.evaluation_input)
386
  )
387
+ if st.button("Submit", key="submit_button"):
388
+ # FIXME: Hide comment box after submission
389
+ st.session_state.eval_selected = False
390
+ yes_button = False
391
+ no_button = False
392
+ success = send_evaluation(
393
+ client,
394
+ deployment_id,
395
+ request_log_id,
396
+ prediction_log_id,
397
+ st.session_state.evaluation_input,
398
+ )
399
  if success:
400
  st.session_state.eval_selected = False
401
  st.success("Feedback submitted successfully.")
constants.py CHANGED
@@ -44,11 +44,10 @@ countries_dict = {
44
 
45
  relationship_dict = {
46
  "Unmarried": 5,
47
- "Not in Family": 3,
48
  "Wife": 0,
49
- "Own child": 1,
50
  "Husband": 2,
51
- "Other Relative": 4,
 
52
  }
53
 
54
  occupation_dict = {
@@ -87,7 +86,7 @@ education_dict = {
87
  "Preschool": 15,
88
  }
89
 
90
- workclass_dict = {
91
  "Private": 0,
92
  "Self Employed Not Incorporated": 1,
93
  "Self Employed Incorporated": 2,
@@ -99,11 +98,8 @@ workclass_dict = {
99
  }
100
 
101
  marital_status_dict = {
102
- "Never-married": 2,
103
- "Married-civ-spouse": 0,
104
  "Divorced": 1,
105
- "Separated": 3,
106
  "Widowed": 4,
107
- "Married-spouse-absent": 5,
108
- "Married-AF-spouse": 6,
109
  }
 
44
 
45
  relationship_dict = {
46
  "Unmarried": 5,
 
47
  "Wife": 0,
 
48
  "Husband": 2,
49
+ "Single parent": 1,
50
+ "Other dependant": 4,
51
  }
52
 
53
  occupation_dict = {
 
86
  "Preschool": 15,
87
  }
88
 
89
+ type_of_work_dict = {
90
  "Private": 0,
91
  "Self Employed Not Incorporated": 1,
92
  "Self Employed Incorporated": 2,
 
98
  }
99
 
100
  marital_status_dict = {
101
+ "Single": 2,
102
+ "Married": 0,
103
  "Divorced": 1,
 
104
  "Widowed": 4,
 
 
105
  }
requirements.txt CHANGED
@@ -4,7 +4,7 @@ dill==0.3.6
4
  matplotlib==3.7.0
5
  boto3==1.28.0
6
  joblib==1.3.2
7
- streamlit==1.29
8
  scipy==1.10.1
9
  shap==0.42.0
10
  plotly==5.18.0
 
4
  matplotlib==3.7.0
5
  boto3==1.28.0
6
  joblib==1.3.2
7
+ streamlit==1.29.0
8
  scipy==1.10.1
9
  shap==0.42.0
10
  plotly==5.18.0