讯飞新5G预测-Lightgbm

#构建模型
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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值