当前位置:   article > 正文

从官方文档弄懂Lightgbm(Python版本快速入门)_lightgbm官方文档

lightgbm官方文档

1 安装

通过 pip 安装

pip install lightgbm  # cpu
pip install lightgbm --install-option=--gpu  # gpu
  • 1
  • 2

详情页

验证:

import lightgbm as lgb
  • 1

2 数据接口

可以从以下地方加载数据:

  • LibSVM / TSV / CSV / TXT 格式文件
  • NumPy 2D 数组、pandas DataFrame、H2O DataTable’s Frame、SciPy 稀疏矩阵
  • LightGBM 二进制文件

数据存储在一个 Dataset 对象中。
将 LibSVM 文本文件或 LightGBM 二进制文件加载到 Dataset 中

train_data = lgb.Dataset('train.svm.bin')
  • 1

加载 numpy array 到 Dataset

data = np.random.rand(500, 10)  
label = np.random.randint(2, size=500) 
train_data = lgb.Dataset(data, label=label)  #数据和标签
  • 1
  • 2
  • 3

将 scipy.sparse.csr_matrix 加载到 Dataset

import scipy
csr = scipy.sparse.csr_matrix((dat, (row, col)))
train_data = lgb.Dataset(csr)
  • 1
  • 2
  • 3

将 Dataset 保存为 LightGBM 二进制文件会使加载速度更快

train_data = lgb.Dataset('train.svm.txt')
train_data.save_binary('train.bin')
  • 1
  • 2

创建验证集

validation_data = lgb.Dataset('validation.svm', reference=train_data)
  • 1

LightGBM 中,验证数据应该与训练数据保持一致。

指定特征名和类别特征

train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])
  • 1

还可以设置权重

w = np.random.rand(500, )
train_data = lgb.Dataset(data, label=label, weight=w)
  • 1
  • 2

可以使用 Dataset.set_init_core() 来设置初始分数,使用 Dataset.set_group() 来为排序任务设置组/查询数据。

更有效的使用:
LightGBM 中的 DataSet 对象非常节省内存,它只需要保存离散的存储箱。但是 Numpy/Array/Pandas对象的内存开销很大。如果您担心内存消耗,可以通过以下方式节省内存:

  1. 在构造数据集时设置 free_raw_data=True(默认值为True)
  2. 在构造数据集后显式设置 raw_data=None
  3. 调用 gc

3 设置参数

更多参数设置

  • Booster 参数
param = {'num_leaves': 31, 'objective': 'binary'}
param['metric'] = 'auc'
  • 1
  • 2
  • 多个评价指标
param['metric'] = ['auc', 'binary_logloss']
  • 1

4 训练

训练模型需要参数列表和数据集

num_round = 10 
bst = lgb.train(param, train_data, num_round, valid_sets=[validation_data])
  • 1
  • 2

训练之后,可以保存模型:

bst.save_model('model.txt')
  • 1

训练好的模型也可以转储为JSON格式:

json_model = bst.dump_model()
  • 1

然后加载保存好的模型:

bst = lgb.Booster(model_file='model.txt')  # init model
  • 1

Early Stopping

如果有验证集,则可以使用提前停止来查找最佳的提升轮数。提前停止要求 valid_sets 中至少有一个集合。如果有多个,它将使用除训练数据之外的所有数据:

bst = lgb.train(param, train_data, num_round, valid_sets=valid_sets, early_stopping_rounds=5)
bst.save_model('model.txt', num_iteration=bst.best_iteration)
  • 1
  • 2

模型进行训练,直到验证分数停止提高。验证分数至少需要在每个 early_stopping_rounds 提高才能继续训练。

如果通过设置 early_stopping_rounds 启用了提前停止,则具有最佳性能的迭代索引将保存在best_Iteration 字段中。请注意,train() 将返回最佳迭代中的模型。

5 CV

5 折交叉验证的训练

lgb.cv(param, train_data, num_round, nfold=5)
  • 1

6 预测

经过训练或加载的模型可以在数据集上执行预测:

# 7 entities, each contains 10 features
data = np.random.rand(7, 10)
ypred = bst.predict(data)
  • 1
  • 2
  • 3

如果在训练期间启用了提前停止,那么可以使用 bst.best _ iteration 从最好的迭代中获得预测:

ypred = bst.predict(data, num_iteration=bst.best_iteration)
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/283184
推荐阅读
相关标签
  

闽ICP备14008679号