def Model_lgb(train,test,features,target,params,n_estimators):
X_train = train[features].values
y_train = train[target].values
X_test = test[features].values
folds = KFold(n_splits=5, shuffle=True, random_state=1)
oof_lgb = np.zeros((X_train.shape[0]))
predictions = np.zeros((len(test)))
lgb_importance = []
for fold_, (trn_idx, val_idx) in enumerate(folds.split(X_train, y_train)):
print("fold n°{}".format(fold_+1))
print(X_train[trn_idx].shape,type(X_train))
x_tr,y_tr = X_train[trn_idx],y_train[trn_idx]
x_va,y_va = X_train[val_idx],y_train[val_idx]
trn_data = lgb.Dataset(x_tr, y_tr)
val_data = lgb.Dataset(x_va, y_va)
clf = lgb.train(params, trn_data, num_boost_round = n_estimators, valid_sets = [trn_data, val_data], verbose_eval=1, early_stopping_rounds = 50)#,
oof_lgb[val_idx] = clf.predict(x_va, num_iteration=clf.best_iteration)
lgb_importance.append(clf.feature_importance())
predictions += clf.predict(X_test, num_iteration=clf.best_iteration) / folds.n_splits
print('valid_ACC = {}'.format(abs(y_train-oof_lgb).mean()))
gc.collect()
return predictions,lgb_importance,oof_lgb
lgb交叉验证
最新推荐文章于 2024-07-27 12:20:46 发布