【机器学习笔记】使用lightgbm画并保存Feature Importance
资料参考:
1. Evaluate Feature Importance using Tree-based Model
2. lgbm.fi.plot: LightGBM Feature Importance Plotting
3. lightgbm官方文档
前言
基于树的模型可以用来评估特征的重要性。 在本博客中,我将使用LightGBM中的GBDT模型来评估特性重要性的步骤。 LightGBM是由微软发布的高精度和高速度梯度增强框架(一些测试表明LightGBM可以产生与XGBoost一样的准确预测,但速度可以提高25倍)。
首先,我们导入所需的软件包:用于数据预处理的pandas,用于GBDT模型的LightGBM以及用于构建功能重要性条形图的matplotlib。
import pandas as pd
import matplotlib.pylab as plt
import lightgbm as lgb
然后,我们需要加载和预处理训练数据。 在这个例子中,我们使用预测性维护数据集。
# read data
train = pd.read_csv('E:\Data\predicitivemaintance_processed.csv')# drop the columns that are not used for the model
train = train.drop(['Date', 'FailureDate'],axis=1)# set the target column
target = 'FailNextWeek'# One-hot encoding
feature_categorical = ['Model']
train = pd.get_dummies(train, columns=feature_categorical)
接下来,我们用训练数据训练GBDT模型:
lgb_params = {'boosting_type': 'gbdt','objective': 'binary','num_leaves': 30,'num_round': 360,'max_depth':8,'learning_rate': 0.01,'feature_fraction': 0.5,'bagging_fraction': 0.8,'bagging_freq': 12
}
lgb_train = lgb.Dataset(train.drop(target, 1), train[target])
model = lgb.train(lgb_params, lgb_train)
模型训练完成后,我们可以调用训练模型的plot_importance函数来获取特征的重要性。
plt.figure(figsize=(12,6))
lgb.plot_importance(model, max_num_features=30)
plt.title("Featurertances")
plt.show()
保存feature importance
booster = model.booster_
importance = booster.feature_importance(importance_type='split')
feature_name = booster.feature_name()
# for (feature_name,importance) in zip(feature_name,importance):
# print (feature_name,importance)
feature_importance = pd.DataFrame({'feature_name':feature_name,'importance':importance} )
feature_importance.to_csv('feature_importance.csv',index=False)
完美~
【机器学习笔记】使用lightgbm画并保存Feature Importance相关推荐
- 【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?
[机器学习]用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度? 我们用机器学习解决商业问题的时候,不仅需要训练一个高精度高泛化性的模型,往往还需要解释哪 ...
- 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(一)
0.说明 本文也许比较乱,请看目录再食用. 后续会 出文 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(二) 将 分类问题 和 回归问题 分开总结. 以及或将出文 ...
- 天池龙珠训练营-机器学习学习笔记-03 LightGBM 分类
天池龙珠训练营-机器学习学习笔记-03 LightGBM 分类 本学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:训练营 一 原理简介: 它是一款基于GBDT(梯度提升决策树)算法的 ...
- Python机器学习笔记:sklearn库的学习
自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...
- 【学习打卡02】可解释机器学习笔记之ZFNet
可解释机器学习笔记之ZFNet 文章目录 可解释机器学习笔记之ZFNet ZFNet介绍 ZFNet结构 特征可视化 可视化结构 特征不变性 特征演化 遮挡性分析 其他内容 总结和思考 首先非常感谢同 ...
- 【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战
可解释机器学习笔记之CAM+Captum代码实战 文章目录 可解释机器学习笔记之CAM+Captum代码实战 代码实战介绍 torch-cam工具包 可视化CAM类激活热力图 预训练ImageNet- ...
- 吴恩达机器学习笔记week8——神经网络 Neutral network
吴恩达机器学习笔记week8--神经网络 Neutral network 8-1.非线性假设 Non-linear hypotheses 8-2.神经元与大脑 Neurons and the brai ...
- 【学习打卡03】可解释机器学习笔记之CAM类激活热力图
可解释机器学习笔记之CAM类激活热力图 文章目录 可解释机器学习笔记之CAM类激活热力图 CAM介绍 CAM算法原理 GAP全局平均池化 GAP VS GMP CAM算法的缺点及改进 CAM可视化 同 ...
- 李弘毅机器学习笔记:第十三章—CNN
李弘毅机器学习笔记:第十三章-CNN 为什么用CNN Small region Same Patterns Subsampling CNN架构 Convolution Propetry1 Propet ...
- 李弘毅机器学习笔记:第十四章—Why deep?
李弘毅机器学习笔记:第十四章-Why deep? 问题1:越深越好? 问题2:矮胖结构 v.s. 高瘦结构 引入模块化 深度学习 使用语音识别举例 语音辨识: 传统的实现方法:HMM-GMM 深度学习 ...
最新文章
- DataGrid在分页状态下删除纪录的问题
- ionic中的ion-option-button
- Kubernetes的控制器类型即使用案例
- 【阿里云课程】生成模型之GAN优化目标设计与改进
- 美国美国,USA USA
- python vtk_VTK在python环境下的安装和调用
- 基于JAVA+SpringMVC+Mybatis+MYSQL的网上商城系统
- Java_MD5的使用
- LeetCode 229 : Majority Element II
- 运行python的两种方式磁盘式_python计算机基础-Day1
- 构建一个可行的BI系统的造价是多少,实施周期?具备条件基础是什么? 数据量有要求么
- python实现可视化数独求解器(附代码链接及点点讲解)
- tensorflow实战之手写体识别
- Activity的概述
- DB2活动日志占用过大
- JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 高并发
- Discuz app打包app上架appstore小技巧
- WFP之关联上下文数据以及注意事项
- 【十年签证】办理美国签证流程详解
- python小程序——视频篇
热门文章
- LightSpeed ORM .NET简单运用
- E4/EAS/Eventing System 事件系统
- JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态
- document.frames()与document.frames[]的区别
- SVN Error: Unreadable path encountered; access denied;
- 【LOJ】#2532. 「CQOI2018」社交网络
- pytest特色与实用插件
- Vue的单页应用中如何引用单独的样式文件
- Google Bigtable文章终于出炉
- openmv探索_4_AprilTag标记追踪