14. Train LGBM
In [1]:
Copied!
import featurebyte as fb
import numpy as np
import pandas as pd
from itertools import product
from sklearn.metrics import roc_auc_score
from modeling_script import LightGBMPipeline, Objective, Metric
from typing import Optional
import featurebyte as fb
import numpy as np
import pandas as pd
from itertools import product
from sklearn.metrics import roc_auc_score
from modeling_script import LightGBMPipeline, Objective, Metric
from typing import Optional
18:07:43 | INFO | SDK version: 3.3.1 18:07:43 | INFO | No catalog activated.
For those in an enterprise setting, explore how models can be trained in FeatureByte's User Interface.
Activate Catalog¶
In [2]:
Copied!
# Set your profile to the tutorial environment
fb.use_profile("tutorial")
catalog_name = "Credit Default Dataset SDK Tutorial"
catalog = fb.Catalog.activate(catalog_name)
# Set your profile to the tutorial environment
fb.use_profile("tutorial")
catalog_name = "Credit Default Dataset SDK Tutorial"
catalog = fb.Catalog.activate(catalog_name)
18:08:32 | INFO | Using profile: tutorial 18:08:32 | INFO | Using configuration file at: /Users/gxav/.featurebyte/config.yaml 18:08:32 | INFO | Active profile: tutorial (https://tutorials.featurebyte.com/api/v1) 18:08:32 | INFO | SDK version: 3.3.1 18:08:32 | INFO | No catalog activated. 18:08:32 | INFO | Catalog activated: Credit Default Dataset SDK Tutorial
Get Training and Holdout data¶
In [3]:
Copied!
catalog.list_historical_feature_tables()
catalog.list_historical_feature_tables()
Out[3]:
| id | name | feature_store_name | observation_table_name | shape | created_at | |
|---|---|---|---|---|---|---|
| 0 | 69315cc4da8963295e76f9d5 | 40 features for Credit Default - TRAIN | playground | Applications up to March 2025 | [307511, 43] | 2025-12-04T10:07:01.157000 |
In [4]:
Copied!
training_data_table = catalog.get_historical_feature_table("40 features for Credit Default - TRAIN")
training_data_table = catalog.get_historical_feature_table("40 features for Credit Default - TRAIN")
In [5]:
Copied!
# download as pandas data frame
feature_data = training_data_table.to_pandas()
# download as pandas data frame
feature_data = training_data_table.to_pandas()
Downloading table |████████████████████████████████████████| 307511/307511 [100%
In [6]:
Copied!
training_from = "2019-04-01 00:00"
training_to = "2025-01-01 00:00"
validation_from = "2025-01-01 00:00"
validation_to = "2025-04-01 00:00"
feature_data["POINT_IN_TIME"] = pd.to_datetime(feature_data["POINT_IN_TIME"])
cond = (
(feature_data["POINT_IN_TIME"] >= training_from)
& (feature_data["POINT_IN_TIME"] < training_to)
)
training_data = feature_data.loc[cond].reset_index(drop=True)
cond = (
(feature_data["POINT_IN_TIME"] >= validation_from)
& (feature_data["POINT_IN_TIME"] < validation_to)
)
validation_data = feature_data.loc[cond].reset_index(drop=True)
validation_data.shape
training_from = "2019-04-01 00:00"
training_to = "2025-01-01 00:00"
validation_from = "2025-01-01 00:00"
validation_to = "2025-04-01 00:00"
feature_data["POINT_IN_TIME"] = pd.to_datetime(feature_data["POINT_IN_TIME"])
cond = (
(feature_data["POINT_IN_TIME"] >= training_from)
& (feature_data["POINT_IN_TIME"] < training_to)
)
training_data = feature_data.loc[cond].reset_index(drop=True)
cond = (
(feature_data["POINT_IN_TIME"] >= validation_from)
& (feature_data["POINT_IN_TIME"] < validation_to)
)
validation_data = feature_data.loc[cond].reset_index(drop=True)
validation_data.shape
Out[6]:
(12527, 43)
Categorize per feature type¶
In [7]:
Copied!
target_column = "Loan_Default"
entity_columns = ["SK_ID_CURR"]
excluded_columns = set([target_column, "POINT_IN_TIME", "__FB_TABLE_ROW_INDEX", "NEG_SAMPLE_WEIGHT"] + entity_columns)
feature_columns = [column for column in training_data.columns if column not in excluded_columns]
target_column = "Loan_Default"
entity_columns = ["SK_ID_CURR"]
excluded_columns = set([target_column, "POINT_IN_TIME", "__FB_TABLE_ROW_INDEX", "NEG_SAMPLE_WEIGHT"] + entity_columns)
feature_columns = [column for column in training_data.columns if column not in excluded_columns]
In [8]:
Copied!
feature_types = {}
for f in feature_columns:
feature = catalog.get_feature(f)
feature_types[f] = feature.feature_type
feature_types = {}
for f in feature_columns:
feature = catalog.get_feature(f)
feature_types[f] = feature.feature_type
Specify Training Parameters¶
In [9]:
Copied!
objective = Objective.BINARY
eval_metric = Metric.AUC
num_boost_round = 10000
early_stopping_rounds = 50
small_count_threshold = 10
param_grid = {
"learning_rate": [0.01],
"max_depth": [7],
"num_leaves": [48],
"subsample": [0.8],
"colsample_bytree": [0.5],
"min_split_gain": [0.025],
"reg_alpha": [0.5],
"reg_lambda": [0.5],
}
objective = Objective.BINARY
eval_metric = Metric.AUC
num_boost_round = 10000
early_stopping_rounds = 50
small_count_threshold = 10
param_grid = {
"learning_rate": [0.01],
"max_depth": [7],
"num_leaves": [48],
"subsample": [0.8],
"colsample_bytree": [0.5],
"min_split_gain": [0.025],
"reg_alpha": [0.5],
"reg_lambda": [0.5],
}
Run LightGBM¶
In [10]:
Copied!
target_train = training_data[target_column]
features_train = training_data[feature_columns]
target_test = validation_data[target_column]
features_test = validation_data[feature_columns]
# Prepare cartesian product of parameters
keys = list(param_grid.keys())
values = list(param_grid.values())
best_auc = 0
best_params = None
lgbm_pipeline: Optional[LightGBMPipeline]
for combo in product(*values):
params = dict(zip(keys, combo))
pipeline = LightGBMPipeline(
objective=objective,
eval_metric=eval_metric,
num_boost_round=num_boost_round,
early_stopping_rounds=early_stopping_rounds,
**params,
)
pipeline.train(
df_train=features_train,
df_test=features_test,
y_train=target_train,
y_test=target_test,
feature_types=feature_types,
)
# validate on test data
predictions = pipeline.predict(features_test)
auc = roc_auc_score(target_test, predictions)
print(f"params: {params}, AUC: {auc:.4f}")
if auc > best_auc:
best_auc = auc
best_params = params
lgbm_pipeline = pipeline
target_train = training_data[target_column]
features_train = training_data[feature_columns]
target_test = validation_data[target_column]
features_test = validation_data[feature_columns]
# Prepare cartesian product of parameters
keys = list(param_grid.keys())
values = list(param_grid.values())
best_auc = 0
best_params = None
lgbm_pipeline: Optional[LightGBMPipeline]
for combo in product(*values):
params = dict(zip(keys, combo))
pipeline = LightGBMPipeline(
objective=objective,
eval_metric=eval_metric,
num_boost_round=num_boost_round,
early_stopping_rounds=early_stopping_rounds,
**params,
)
pipeline.train(
df_train=features_train,
df_test=features_test,
y_train=target_train,
y_test=target_test,
feature_types=feature_types,
)
# validate on test data
predictions = pipeline.predict(features_test)
auc = roc_auc_score(target_test, predictions)
print(f"params: {params}, AUC: {auc:.4f}")
if auc > best_auc:
best_auc = auc
best_params = params
lgbm_pipeline = pipeline
Preprocessing done
[LightGBM] [Info] Number of positive: 23803, number of negative: 271181
[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.016259 seconds.
You can set `force_row_wise=true` to remove the overhead.
And if memory is not enough, you can set `force_col_wise=true`.
[LightGBM] [Info] Total Bins 12350
[LightGBM] [Info] Number of data points in the train set: 294984, number of used features: 58
[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.080693 -> initscore=-2.432975
[LightGBM] [Info] Start training from score -2.432975
Training until validation scores don't improve for 50 rounds
Training until validation scores don't improve for 50 rounds
[10] valid_0's auc: 0.750861
[20] valid_0's auc: 0.75732
[30] valid_0's auc: 0.75687
[40] valid_0's auc: 0.760804
[50] valid_0's auc: 0.760342
[60] valid_0's auc: 0.762922
[70] valid_0's auc: 0.763703
[80] valid_0's auc: 0.764873
[90] valid_0's auc: 0.765713
[100] valid_0's auc: 0.766396
[110] valid_0's auc: 0.766821
[120] valid_0's auc: 0.767546
[130] valid_0's auc: 0.768044
[140] valid_0's auc: 0.768753
[150] valid_0's auc: 0.769761
[160] valid_0's auc: 0.77039
[170] valid_0's auc: 0.770924
[180] valid_0's auc: 0.771294
[190] valid_0's auc: 0.772109
[200] valid_0's auc: 0.77258
[210] valid_0's auc: 0.772995
[220] valid_0's auc: 0.773481
[230] valid_0's auc: 0.773844
[240] valid_0's auc: 0.773928
[250] valid_0's auc: 0.77448
[260] valid_0's auc: 0.774611
[270] valid_0's auc: 0.77504
[280] valid_0's auc: 0.77541
[290] valid_0's auc: 0.775851
[300] valid_0's auc: 0.776242
[310] valid_0's auc: 0.776428
[320] valid_0's auc: 0.776788
[330] valid_0's auc: 0.77721
[340] valid_0's auc: 0.77761
[350] valid_0's auc: 0.778074
[360] valid_0's auc: 0.778285
[370] valid_0's auc: 0.778525
[380] valid_0's auc: 0.778767
[390] valid_0's auc: 0.778947
[400] valid_0's auc: 0.779292
[410] valid_0's auc: 0.779578
[420] valid_0's auc: 0.779737
[430] valid_0's auc: 0.780049
[440] valid_0's auc: 0.78034
[450] valid_0's auc: 0.780544
[460] valid_0's auc: 0.780821
[470] valid_0's auc: 0.781085
[480] valid_0's auc: 0.781479
[490] valid_0's auc: 0.781692
[500] valid_0's auc: 0.782013
[510] valid_0's auc: 0.782327
[520] valid_0's auc: 0.78249
[530] valid_0's auc: 0.782799
[540] valid_0's auc: 0.783096
[550] valid_0's auc: 0.783285
[560] valid_0's auc: 0.783513
[570] valid_0's auc: 0.783697
[580] valid_0's auc: 0.784044
[590] valid_0's auc: 0.784192
[600] valid_0's auc: 0.784347
[610] valid_0's auc: 0.784461
[620] valid_0's auc: 0.784663
[630] valid_0's auc: 0.784871
[640] valid_0's auc: 0.78502
[650] valid_0's auc: 0.785201
[660] valid_0's auc: 0.785329
[670] valid_0's auc: 0.785459
[680] valid_0's auc: 0.785615
[690] valid_0's auc: 0.785823
[700] valid_0's auc: 0.786036
[710] valid_0's auc: 0.786111
[720] valid_0's auc: 0.786259
[730] valid_0's auc: 0.7864
[740] valid_0's auc: 0.786572
[750] valid_0's auc: 0.786722
[760] valid_0's auc: 0.786839
[770] valid_0's auc: 0.786949
[780] valid_0's auc: 0.787089
[790] valid_0's auc: 0.787195
[800] valid_0's auc: 0.787299
[810] valid_0's auc: 0.787441
[820] valid_0's auc: 0.787554
[830] valid_0's auc: 0.787686
[840] valid_0's auc: 0.787879
[850] valid_0's auc: 0.787967
[860] valid_0's auc: 0.788046
[870] valid_0's auc: 0.788141
[880] valid_0's auc: 0.78826
[890] valid_0's auc: 0.788367
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[900] valid_0's auc: 0.788479
[910] valid_0's auc: 0.788594
[920] valid_0's auc: 0.788651
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[930] valid_0's auc: 0.788785
[940] valid_0's auc: 0.788892
[950] valid_0's auc: 0.789036
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[960] valid_0's auc: 0.789104
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[970] valid_0's auc: 0.789262
[980] valid_0's auc: 0.789315
[990] valid_0's auc: 0.789332
[1000] valid_0's auc: 0.78938
[1010] valid_0's auc: 0.789418
[1020] valid_0's auc: 0.789585
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1030] valid_0's auc: 0.789719
[1040] valid_0's auc: 0.789798
[1050] valid_0's auc: 0.789834
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1060] valid_0's auc: 0.789916
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1070] valid_0's auc: 0.790003
[1080] valid_0's auc: 0.790081
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1090] valid_0's auc: 0.790178
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1100] valid_0's auc: 0.790234
[1110] valid_0's auc: 0.79027
[1120] valid_0's auc: 0.790302
[1130] valid_0's auc: 0.790307
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1140] valid_0's auc: 0.790402
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1150] valid_0's auc: 0.790493
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1160] valid_0's auc: 0.790514
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1170] valid_0's auc: 0.79056
[1180] valid_0's auc: 0.790646
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1190] valid_0's auc: 0.790722
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1200] valid_0's auc: 0.790794
[1210] valid_0's auc: 0.79087
[1220] valid_0's auc: 0.790931
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1230] valid_0's auc: 0.790986
[1240] valid_0's auc: 0.790993
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1250] valid_0's auc: 0.791018
[1260] valid_0's auc: 0.791074
[1270] valid_0's auc: 0.791066
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1280] valid_0's auc: 0.791127
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1290] valid_0's auc: 0.791182
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1300] valid_0's auc: 0.791196
[1310] valid_0's auc: 0.791223
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1320] valid_0's auc: 0.791213
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1330] valid_0's auc: 0.791229
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1340] valid_0's auc: 0.791301
[1350] valid_0's auc: 0.791382
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1360] valid_0's auc: 0.791403
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1370] valid_0's auc: 0.791408
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1380] valid_0's auc: 0.791438
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1390] valid_0's auc: 0.791509
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1400] valid_0's auc: 0.791538
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1410] valid_0's auc: 0.791616
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1420] valid_0's auc: 0.791585
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1430] valid_0's auc: 0.791575
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1440] valid_0's auc: 0.79162
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1450] valid_0's auc: 0.791626
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1460] valid_0's auc: 0.791618
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1470] valid_0's auc: 0.791654
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1480] valid_0's auc: 0.791654
[1490] valid_0's auc: 0.791696
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1500] valid_0's auc: 0.791769
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1510] valid_0's auc: 0.791728
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1520] valid_0's auc: 0.791739
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1530] valid_0's auc: 0.791687
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
[1540] valid_0's auc: 0.791711
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
Early stopping, best iteration is:
[1496] valid_0's auc: 0.791772
params: {'learning_rate': 0.01, 'max_depth': 7, 'num_leaves': 48, 'subsample': 0.8, 'colsample_bytree': 0.5, 'min_split_gain': 0.025, 'reg_alpha': 0.5, 'reg_lambda': 0.5}, AUC: 0.7918
In [11]:
Copied!
print(f"\nBest AUC: {best_auc:.4f}")
print(f"Best Parameters: {best_params}")
print(f"\nBest AUC: {best_auc:.4f}")
print(f"Best Parameters: {best_params}")
Best AUC: 0.7918
Best Parameters: {'learning_rate': 0.01, 'max_depth': 7, 'num_leaves': 48, 'subsample': 0.8, 'colsample_bytree': 0.5, 'min_split_gain': 0.025, 'reg_alpha': 0.5, 'reg_lambda': 0.5}
SHAP Importance¶
In [12]:
Copied!
pd.set_option('display.max_rows', None) # Show all rows
pd.set_option('display.max_colwidth', 100) # Show full column content
pd.set_option('display.max_rows', None) # Show all rows
pd.set_option('display.max_colwidth', 100) # Show full column content
In [13]:
Copied!
_, feature_importance = lgbm_pipeline.compute_shap(features_train.sample(n=10000, random_state=88))
feature_importance[["feature", "cumulative_importance_percent"]]
_, feature_importance = lgbm_pipeline.compute_shap(features_train.sample(n=10000, random_state=88))
feature_importance[["feature", "cumulative_importance_percent"]]
Out[13]:
| feature | cumulative_importance_percent | |
|---|---|---|
| 0 | NEW_APPLICATION_EXT_SOURCE_2 | 0.101920 |
| 1 | NEW_APPLICATION_EXT_SOURCE_3 | 0.193348 |
| 2 | NEW_APPLICATION_EXT_SOURCE_1 | 0.243079 |
| 3 | NEW_APPLICATION_Credit-Goods_Difference | 0.283854 |
| 4 | NEW_APPLICATION_DAYS_EMPLOYED | 0.323784 |
| 5 | CLIENT_Max_of_Active_Cr_active_BureauReportedCredits_AMT_CREDIT_SUM_DEBT_To_AMT_CREDIT_SUMs_104w | 0.361744 |
| 6 | NEW_APPLICATION_AMT_ANNUITY_To_AMT_CREDIT | 0.399400 |
| 7 | CLIENT_GENDER | 0.434251 |
| 8 | CLIENT_EDUCATION_TYPE | 0.463239 |
| 9 | CLIENT_Max_of_PriorApplications_CNT_PAYMENTs_104w | 0.491385 |
| 10 | NEW_APPLICATION_AMT_ANNUITY | 0.517982 |
| 11 | CLIENT_Installments_AMT_PAYMENTs_by_PriorApplication_CLIENT_TYPE_24cMo | 0.541719 |
| 12 | CLIENT_FAMILY_STATUS | 0.564283 |
| 13 | CLIENT_Min_of_Credit_card_monthly_balance_records_Available_Credits_6cMo | 0.585723 |
| 14 | CLIENT_Avg_of_Consumer_credit_Cr_type_BureauReportedCredits_End_to_Update_Gaps_104w | 0.606883 |
| 15 | CLIENT_Min_of_Installments_AMT_PAYMENTs_24cMo | 0.627850 |
| 16 | CLIENT_Avg_of_BureauReportedCredits_Available_Credits_104w | 0.647727 |
| 17 | CLIENT_Age | 0.667281 |
| 18 | CLIENT_PriorApplications_AMT_CREDITs_by_PriorApplication_YIELD_GROUP_104w | 0.686592 |
| 19 | CLIENT_Installments_AMT_PAYMENTs_by_PriorApplication_YIELD_GROUP_24cMo | 0.704747 |
| 20 | CLIENT_Max_of_Loan_terminations_Loan_PriorApplication_AMT_APPLICATION_To_AMT_CREDITs_104w | 0.722836 |
| 21 | CLIENT_ORGANIZATION_TYPE | 0.740907 |
| 22 | NEW_APPLICATION_AMT_GOODS_PRICE | 0.758601 |
| 23 | NEW_APPLICATION_DAYS_ID_PUBLISH | 0.775643 |
| 24 | CLIENT_Avg_of_BureauReportedCredits_Available_Credits_26w | 0.792422 |
| 25 | CLIENT_Max_of_Installments_Days_Difference_Actual_vs_Scheduleds_24cMo | 0.808967 |
| 26 | CLIENT_Installments_AMT_PAYMENTs_by_INSTALLMENT_STATUS_12cMo | 0.825313 |
| 27 | CLIENT_Time_To_Latest_Approved_Contract_status_PriorApplication_last_due_1st_version_timestamp_104w | 0.841191 |
| 28 | NEW_APPLICATION_REGION_POPULATION_RELATIVE | 0.857011 |
| 29 | CLIENT_Max_of_Installments_PriorApplication_AMT_ANNUITY_To_AMT_CREDITs_6cMo | 0.872680 |
| 30 | CLIENT_Avg_of_Consumer_credit_Cr_type_BureauReportedCredits_AMT_CREDIT_SUMs_104w | 0.888253 |
| 31 | CLIENT_Installments_AMT_PAYMENTs_by_PriorApplication_PAYMENT_TYPE_24cMo | 0.902581 |
| 32 | NEW_APPLICATION_FLAG_DOCUMENT_3 | 0.916378 |
| 33 | CLIENT_Std_of_Credit_card_monthly_balance_records_CNT_DRAWINGS_ATM_CURRENTs_24cMo | 0.929687 |
| 34 | CLIENT_Entropy_of_count_of_Installments_by_INSTALLMENT_STATUS_24cMo | 0.942676 |
| 35 | NEW_APPLICATION_FLOORSMAX_MODE | 0.955532 |
| 36 | CLIENT_Installments_AMT_PAYMENTs_by_INSTALLMENT_STATUS_6cMo | 0.968350 |
| 37 | CLIENT_PriorApplications_AMT_CREDITs_by_PriorApplication_NFLAG_INSURED_ON_APPROVAL_52w | 0.980428 |
| 38 | CLIENT_Std_of_BureauReportedCredits_Available_Credits_26w | 0.991902 |
| 39 | CLIENT_Max_of_Consumer_credit_Cr_type_BureauReportedCredits_AMT_CREDIT_SUM_DEBT_To_AMT_CREDIT_SU... | 1.000000 |
Iterate¶
Check out Credit Default UI Tutorials to get more ideas.
In [ ]:
Copied!