Lightgbm中的单调约束

时间:2019-01-07 21:34:07

标签: python-3.x

有人可以帮助我了解如何将单调约束应用于具有大量特征和行的数据框吗?您能否让我知道以下过程是否正常?

我有一个具有75万行和88个特征的数据框。 如下所示,通过皮尔逊相关法为所有特征分配符号。

linear_dep = pd.DataFrame()
for col in df.columns:
    linear_dep.loc[col, 'pearson_corr'] = df[col].corr(df.bad)

linear_dep['mono']  = np.where(linear_dep.pearson_corr>0,1,
                              np.where(linear_dep.pearson_corr<0,-1,0))

cols_sort = list(linear_dep.variable)

df_new = df.reindex(columns=cols_sort)

lgb_mono = list(linear_dep['mono'].values)

monotone_constraints=[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

lgb_sk_model = lgb.LGBMClassifier(boosting_type='gbdt', learning_rate=0.01, metric = 'auc',max_depth = 3,subsample = 0.8, colsample_bytree = 0.9, n_estimators=1500)

lgb_sk_model.fit(df_new, df['overall_bad_new'], sample_weight=train_wt,verbose=False)

0 个答案:

没有答案