初识LightGBM
上篇了解了如今最火的框架之一xgboost,接下来看下另一款和它一样令人惊艳的框架lightgbm。
起源
LightGBM全称为Light Gradient Boosting Machine ,由微软开源,一个基于决策树,并且具有快速、分布式、高性能特点的梯度提升框架。它可被用于排行、分类以及其他许多机器学习任务中。同样的,为了方便使用,lightgbm也封装了相应的python库,来看看怎么获得它。
安装
安装lightgbm之前呢,需要先安装依赖包setuptools, wheel, numpy 和 scipy,直接用pip即可,-U则表示存在该包的话就更新
pip install setuptools wheel numpy scipy scikit-learn -U
依赖安装好之后就可以安装lightgbm了
pip install lightgbm
可在ide导入验证是否安装成功
import lightgbm as lgb
数据形式
LightGBM 能够使用以下几种方式来加载数据:
- 逗号分隔值(CSV)文件
- NumPy 2D阵列
- LightGBM 二进制文件
#加载 ligsvm 文本文件或 LightGBM 二进制文件到 Dataset 中: train_data = lgb.Dataset('train.svm.bin')#加载 numpy 数组到 Dataset 中: data = np.random.rand(500, 10) # 500 个样本, 每一个包含 10 个特征 label = np.random.randint(2, size=500) # 二元目标变量, 0 和 1 train_data = lgb.Dataset(data, label=label)#加载 scpiy.sparse.csr_matrix 数组到 Dataset 中: csr = scipy.sparse.csr_matrix((dat, (row, col))) train_data = lgb.Dataset(csr)#创建验证数据: test_data = train_data.create_valid('test.svm') #或者 test_data = lgb.Dataset('test.svm', reference=train_data)#指定 feature names(特征名称)和 categorical features(分类特征): train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])
tips:
- LightGBM 中, 验证数据应该与训练数据格式保持一致。
- LightGBM 可以直接使用分类特征作为输入. 它不需要被转换成独热编码, 并且它比独热编码更快(约快上 8 倍)。
参数设定
LightGBM 可以使用列表或字典来设置参数:
param = {'num_leaves':31, 'num_trees':100, 'objective':'binary'}param['metric'] = 'auc'param['metric'] = ['auc', 'binary_logloss']
训练只需传入param即可
训练
训练模型时, 需要参数列表和数据集:
num_round = 10 bst = lgb.train(param, train_data, num_round, valid_sets=[test_data])
param:各项参数,是一个字典
train_data:训练数据集
num_round:boosting迭代计算次数
valid_sets:验证集设置
test_data:验证数据集
预测
已经训练好的模型可以对数据集进行预测:
# 7 个样本, 每一个包含 10 个特征 data = np.random.rand(7, 10) ypred = bst.predict(data)
这样简单的lightgbm使用就完成啦~
初识LightGBM相关推荐
- 多分类 数据不平衡的处理 lightgbm
前言 数据不平衡问题在机器学习分类问题中很常见,尤其是涉及到"异常检测"类型的分类.因为异常一般指的相对不常见的现象,因此发生的机率必然要小很多.因此正常类的样本量会远远高于异常类 ...
- lightgbm 决策树 可视化 graphviz
决策树模型,XGBoost,LightGBM和CatBoost模型可视化 安装 graphviz 参考文档 http://graphviz.readthedocs.io/en/stable/manua ...
- lightgbm保存模型参数
20210205 params = {'task': 'train', # 执行的任务类型'boosting_type': 'gbrt', # 基学习器'objective': 'lambdarank ...
- xgboost lightgbm catboost 多分类 多标签
xgboost 与 lightgbm 官方均支持多分类任务,但不直接支持多标签分类任务,实现多标签任务的方法之一是结合sklearn 提供的 multiclass 子类,如OneVsRestClass ...
- 梯度提升决策树(GBDT)与XGBoost、LightGBM
20211224 [机器学习算法总结]XGBoost_yyy430的博客-CSDN博客_xgboost xgboost参数 默认:auto.XGBoost中使用的树构造算法.可选项:auto,exac ...
- day3----编码-集合-深浅copy-文件操作-函数初识
day3----编码-集合-深浅copy-文件操作-函数初识 本文档主要内容: 一 编码 二 集合 三 深浅copy 四 文件操作 五 函数初识 首先,我们来看看两个字符串的比较 打开cmd,进入do ...
- ⑥python模块初识、pyc和PyCodeObject
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识java类的接口实现
初识java类的接口实现 如果两个类之间不存在继承关系,且两个类都想实现同一个接口,两个类都必须实现接口中全部方法,否则报语法错误 如果两个类之间存在继承关系也想实现同一个接口,父类如果实现了某个接口 ...
- vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码
大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...
最新文章
- java id生成器 分布式_分布式高效唯一ID生成器(sequence)
- 编程之美-数组分割方法整理
- Java线程详解(4)-线程状态的转换
- java forname 原理_Java Class.forName()用法和newInstance()方法原理解析
- Redis实现之整数集合
- oracle模拟重叠事务,ORACLE的事务读一致性与语句读一致性
- “资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间”
- php短网址案例,php生成短网址原理与实例
- 如果一切需要重学,2014年应该学哪些技术?
- 【医疗影像处理】使用前景像素的均值和方差(mean,std)对图像进行归一化(背景像素为0)【numpy-code】
- 打开网页右下角广告栏慢慢出现,点击慢慢消失
- gst-launch-1.0
- lenovo启动热键_常见电脑启动项热键
- 生成领料单(编号:20110704A1153)
- 2019年7月22日 学习日记
- 【Rust 日报】2022-03-27 Google对25名Rust开源贡献者做出奖励
- 哈尔滨校区学员扫码绑定教练、签到、签退、评价说明
- 1架飞机,加满油可以跑1的距离,问N架飞机最多能跑多远
- 凤凰大视野----冷暖人生: 记录平凡人的普通人生
- Django中的url路由机制------学习mooc中《Python云端系统开发入门》
热门文章
- 【功能安全】【ISO26262】整体介绍
- Linux Command who、whois、whoami
- Keras自定义损失函数出现:ValueError: Unknown loss function: focal_loss
- 《三体1》7.三体1、周文王、长夜
- iOS:DES加密iOS和Android的匹配
- mysql的repeat语句_mysql实例 repeat语句的用法
- rancher 启动命令_Rancher 中文文档 —— 快速入门指南
- 流量Ⅰ--一文了解pcap网络数据包的结构?
- LeetCode日常刷题1、657、717、67
- linux查看操作系统版本信息