讯飞新5G预测-CATBOOST

#构建模型
import lightgbm as lgb
from catboost import CatBoostClassifier
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 cat_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("|  CAT  Fold  {}  Training Start           |".format(str(i + 1)))
        print("|-----------------------------------------|")
        
        trn_x, trn_y, val_x, val_y = train_x.iloc[train_index], train_y[train_index], train_x.iloc[valid_index], \
                                     train_y[valid_index] 
        cat_params = {'learning_rate': 0.1, 'depth': 5, 'bootstrap_type': 'Bernoulli', 'random_seed': 2023,
                      'od_type': 'Iter', 'od_wait': 100, 'random_seed': 11, 'allow_writing_files': False,
                      'loss_function': 'Logloss','task_type':'GPU'}
        
        #训练模型
        cat_model = CatBoostClassifier(iterations=2000,**cat_params)
        cat_model.fit(trn_x, trn_y, eval_set=(val_x, val_y),
                      cat_features=['num_28_bin','num_6_bin','num_10_bin','num_37_bin','num_14_bin','num_21_bin'], use_best_model=True, verbose=100)

        val_pred  = cat_model.predict_proba(val_x)
        test_pred = cat_model.predict_proba(test_x)
        feat_imp_df['imp'] += cat_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

# 训练 CAT模型
cat_oof, cat_test, cat_imp_df = cat_model(train_df[feature_cols], train_df['target'], test_df[feature_cols])
cat_pre_train = cat_oof[:,1]
cat_pre_test = cat_test[:,1]

https://github.com/zui0711/Z-Lab/blob/main/2023%20ZLab%E5%AD%A6%E4%B9%A0%E8%B5%9B/%E5%A4%A7%E5%9E%8B%E5%A4%9A%E4%BA%BA%E5%9C%A8%E7%BA%BF%E8%A7%92%E8%89%B2%E6%89%AE%E6%BC%94%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%8E%A9%E5%AE%B6%E5%85%85%E5%80%BC%E9%87%91%E9%A2%9D%E9%A2%84%E6%B5%8B-baseline.ipynb

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值