0
点赞
收藏
分享

微信扫一扫

LightGBM模型架构实现

前端王祖蓝 2022-04-27 阅读 96

目录

1. 加载数据

首先需要导入我们的训练数据

import pandas as pd
train_data = pd.read_table('./data/train.txt') # 这里是导入训练数据,我采用的是相对路径查看文件

2. 划分数据集

机器学习模型中对于训练模型需要训练集和测试集,这个需要我们自己进行划分,这里可以调用train_test_split进行数据集的划分

from sklearn.model_selection import train_test_split
X = train_data.iloc[:, :-1]   
# X
y = train_data['target']   # y为目标数据,也就是我们最后要预测的数据。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)   # 这里的0.3是将训练数据划分开,其中训练集:测试集=7:3

3. 将数据转换为Dataset格式

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference = lgb_train)

4. 参数设置

对模型的参数进行设置

params = {
    'boosting_type': 'gbdt',  # 用于指定弱学习器的类型,默认值为 ‘gbdt’
    'objecttive': 'regression', # 用于指定学习任务及相应的学习目标,“regression”,使用L2正则项的回归模型(默认值)
    'metric': 'auc',  # 评判指标
    'max_bin': 255,  
    'learning_rate': 0.1,  # 学习率
    'num_leaves': 64,  # 指定叶子的个数,默认值为31,大会更准,但可能过拟合
    'max_depth': -1,  # 指定树的最大深度,默认值为-1,表示不做限制,合理的设置可以防止过拟合。
    'feature_fraction': 0.8,  # 构建弱学习器时,对特征随机采样的比例,防止过拟合
    'bagging_freq': 5,  
    'bagging_fraction': 0.8,  
    'min_data_in_leaf': 21,  
    'min_sum_hessian_in_leaf': 3.0,  
    'header': True  # 数据集是否带表头
}

5. 模型训练

进行模型训练

gbm = lgb.train(params, lgb_train, valid_sets = lgb_eval, num_boost_round = 250)

6. 模型预测

对想要预测的数据进行预测

# 这里的X_test是要预测的数据,得到的y_pre是预测结果
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)

7. 预测结果保存

将预测结果保存到本地

# 先将预测的结果转化为DataFrame的格式
pre = pd.DataFrame(y_pred)
# 这里可以保存为csv、txt等格式,index=False是不用保存索引, header=None是不用保存列名
pre.to_csv('./result/pre001.csv',  index = False, header = None)  

任务完成,★,°:.☆( ̄▽ ̄)/$:.°★

水平一般,能力有限,如有问题,感谢各位的不吝赐教。

举报

相关推荐

lightGBM分类模型

0 条评论