Update app/models/escalation.py
Browse files- app/models/escalation.py +3 -10
app/models/escalation.py
CHANGED
|
@@ -68,12 +68,6 @@ def check_business_rules(df):
|
|
| 68 |
manual_mask[mask] = True
|
| 69 |
messages = np.where(mask, 'Количество кредитов под залог недвижимости слишком велико - ручной разбор', messages)
|
| 70 |
|
| 71 |
-
# print(f"age: min={age.min()}, max={age.max()}")
|
| 72 |
-
# print(f"income: max={monthly_income.max()}")
|
| 73 |
-
# print(f"late_90: values 96/98: {np.sum((late_90 == 96) | (late_90 == 98))}")
|
| 74 |
-
# print(f"utilization: max={utilization.max()}")
|
| 75 |
-
# print(f"real_estate: max={real_estate.max()}")
|
| 76 |
-
|
| 77 |
return manual_mask, auto_reject_mask, messages, auto_decisions
|
| 78 |
|
| 79 |
|
|
@@ -99,14 +93,13 @@ def escalation_decision(applications_df, lr_model, second_model, second_model_na
|
|
| 99 |
'business_auto': 0, # авто отказ по бизнес-правилам
|
| 100 |
'lr_confident': 0, # уверенно решены LR
|
| 101 |
'second_confident': 0, # уверенно решены второй моделью
|
| 102 |
-
'second_uncertain': 0, # неуверенность второй модели
|
| 103 |
'total': n
|
| 104 |
}
|
| 105 |
|
| 106 |
# 1. Бизнес-правила
|
| 107 |
bus_manual_mask, bus_reject_mask, bus_messages, bus_decisions = check_business_rules(applications_df)
|
| 108 |
-
|
| 109 |
-
#print(f"Бизнес-правила: manual={bus_manual_mask.sum()}, auto_reject={bus_reject_mask.sum()}")
|
| 110 |
# Обрабатываем сразу отказ
|
| 111 |
for i in range(n):
|
| 112 |
if bus_reject_mask[i]:
|
|
@@ -201,7 +194,7 @@ def escalation_decision(applications_df, lr_model, second_model, second_model_na
|
|
| 201 |
uncertain_positions = [j for j in range(len(model_indices)) if not lr_confident[j]]
|
| 202 |
processed_uncertain_scaled = processed_scaled.iloc[uncertain_positions]
|
| 203 |
|
| 204 |
-
# Вторая модель
|
| 205 |
second_probas = second_model.predict_proba(processed_uncertain_scaled)[:, 1]
|
| 206 |
|
| 207 |
# Определяем отступы для второй модели
|
|
|
|
| 68 |
manual_mask[mask] = True
|
| 69 |
messages = np.where(mask, 'Количество кредитов под залог недвижимости слишком велико - ручной разбор', messages)
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
return manual_mask, auto_reject_mask, messages, auto_decisions
|
| 72 |
|
| 73 |
|
|
|
|
| 93 |
'business_auto': 0, # авто отказ по бизнес-правилам
|
| 94 |
'lr_confident': 0, # уверенно решены LR
|
| 95 |
'second_confident': 0, # уверенно решены второй моделью
|
| 96 |
+
'second_uncertain': 0, # неуверенность второй модели
|
| 97 |
'total': n
|
| 98 |
}
|
| 99 |
|
| 100 |
# 1. Бизнес-правила
|
| 101 |
bus_manual_mask, bus_reject_mask, bus_messages, bus_decisions = check_business_rules(applications_df)
|
| 102 |
+
|
|
|
|
| 103 |
# Обрабатываем сразу отказ
|
| 104 |
for i in range(n):
|
| 105 |
if bus_reject_mask[i]:
|
|
|
|
| 194 |
uncertain_positions = [j for j in range(len(model_indices)) if not lr_confident[j]]
|
| 195 |
processed_uncertain_scaled = processed_scaled.iloc[uncertain_positions]
|
| 196 |
|
| 197 |
+
# Вторая модель
|
| 198 |
second_probas = second_model.predict_proba(processed_uncertain_scaled)[:, 1]
|
| 199 |
|
| 200 |
# Определяем отступы для второй модели
|