#构建模型
import lightgbm as lgb
from sklearn.model_selection import StratifiedKFold,KFold
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import StandardScaler
import warnings
warnings.filterwarnings('ignore')
def Lgb_model(train_x, train_y, test_x,seed=512):
folds = 5
kf = StratifiedKFold(n_splits=folds, shuffle=True, random_state=seed)
oof = np.zeros([train_x.shape[0], 2])
test_predict = np.zeros([test_x.shape[0], 2])
feat_imp_df = pd.DataFrame()
feat_imp_df['feature'] = train_x.columns
feat_imp_df['imp'] = 0
auc_scores = []
train_x = train_x.values
train_y = train_y.values
for i, (train_index, valid_index) in enumerate(kf.split(train_x, train_y)):
print("|-----------------------------------------|")
print("| LGB Fold {} Training Start |".format(str(i + 1)))
print("|-----------------------------------------|")
trn_x, trn_y, val_x, val_y = train_x[train_index], train_y[train_index], train_x[valid_index], \
train_y[valid_index]
lgb_params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'auc',
'n_estimators':500,
'min_child_weight': 5,
'num_leaves': 2 ** 5,
'lambda_l2': 10,
'feature_fraction': 0.7,
'bagging_fraction': 0.7,
'bagging_freq': 10,
'learning_rate': 0.2,
'seed': 2022,
'verbose':1,
'nthread': 16
}
#训练模型
Lgb_model = lgb.LGBMClassifier(**lgb_params)
Lgb_model.fit(trn_x,trn_y,eval_set=[(trn_x, trn_y),(val_x,val_y)])
val_pred = Lgb_model.predict_proba(val_x)
test_pred = Lgb_model.predict_proba(test_x.values)
feat_imp_df['imp'] += Lgb_model.feature_importances_ / folds
feat_imp_df = feat_imp_df.sort_values(by='imp', ascending=False).reset_index(drop=True)
feat_imp_df['rank'] = range(feat_imp_df.shape[0])
oof[valid_index] = val_pred
test_predict += test_pred / kf.n_splits
auc_score = roc_auc_score(np.array(val_y), np.array(val_pred[:, 1]))
print(auc_score)
auc_scores.append(auc_score)
print('AVG_auc :',sum(auc_scores)/len(auc_scores))
return oof, test_predict,feat_imp_df
# 训练 LGB模型
Lgb_oof, Lgb_test, Lgb_imp_df = Lgb_model(train_df[feature_cols], train_df['target'], test_df[feature_cols])
Lgb_pre_train = Lgb_oof[:,1]
Lgb_pre_test = Lgb_test[:,1]
讯飞新5G预测-Lightgbm
最新推荐文章于 2024-06-30 18:25:42 发布