如果你还不知道如何使用XGboost模块XGBClassifier、plot_importance来做特征重要性排序,戳这个网址即可。

下面我们讲一个全网都没好好讲的问题:如何修改f1,f2成对应的特征名称。(我它喵了个咪的找了起码5天,都是回答不全或者不清楚对应数据格式,最后终于慢慢试出来了)

一、首先,plot_importance()方法是可以自定义title(默认feature importance)、xlabel(默认Frequency score)、ylabel(默认features)和是否网格grid的,更具体的可以使用help()命令或者查看官方文档的。

之前不知道如何改一直以为是xgboost库的问题,现在才发现原来有很多是pyplot子库可以做的,而且plot_importance()方法也确实提供了这些方法,眼拙眼拙。

二、其次,解决中文、负号和自适应的显示问题,可以用如下代码进行设置

# 解决中文和负号显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 使显示图标自适应
plt.rcParams['figure.autolayout'] = True

三、再次,看一下数据格式和读取方式

  1. 我选择的数据格式类似于下面这样csv文件(分类标签列是level)
  2. 推荐使用的是第一种数据读取方式,使用pandas.read_csv()。
    对于上面所用的无索引列的数据,无需设置index_col,但若第0列是索引123456…,则需要read_csv(index_col=0)。
  3. 可使用的第二种读取数据方式是numpy.loadtxt() (np.load_txt使用方法:戳这儿)
    这种读取的特点是只能读取纯数据,也就是表头(表头包含feature名称和分类结果label\level)下面的所有数据。所以需要自己把特征名一个个摘下来制成列表传入。
  4. 要想得到满意的结果,数据还需要一个转换
    对于使用pandas.read_csv()的,
data = pd.read_csv(path)
feature_names = list(data.drop(label_col, axis=1).columns)    # 拿到所有的特征y = data[label_col].values                # np.array类型的标签列
X = data.drop(label_col, axis=1).values   # np.array类型的自变量矩阵,不含表头
# dtrain是我的训练数据(自变量矩阵是X,分类结果即因变量矩阵是y,特征字段重命名成我设置的features列表)
dtrain = xgb.DMatrix(X, label=y, feature_names=x)

对于使用numpy.loadtxt()的,需要如下操作:

# x是我的features列表,除了像下面这样手动输入,
# 你还可以用刚才说的pandas的方法,使用feature_names = list(data.drop(label_col, axis=1).columns)来拿到所有的特征
dataset = loadtxt(path, skiprows=1, delimiter=",") # 以','为分割符,跳过1行(标features那一行)
feature_names = ['#DEPTH', 'SP', 'GR', 'LLS', 'LLD', 'BS', 'RHOB', 'CNL', 'TC', 'NPHI', 'C1', 'C3', 'CALC', 'MTSA','MTSC', 'DGA', 'PERM', 'POR', 'POR2', 'PORF', 'RWA', 'PORT', 'PORW', 'CRT', 'SAND', 'SH', 'MOIS', 'CARB', 'ASHA','GC', 'GP', 'WP', 'ASH1']
X = dataset[:,0:-1]    # 自变量矩阵
y = dataset[:,-1]  # 标签列
# dtrain是我的训练数据(自变量矩阵是X,分类结果即因变量矩阵是y,特征字段重命名成我设置的features列表)
dtrain = xgb.DMatrix(X, label=y, feature_names=feature_names)

四、最后,关于模型训练

你会发现使用的方法跟使用XGboost模块XGBClassifier、plot_importance来做特征重要性排序这篇文章所述已经不一样啦哈哈!
因为我们使用的是

# 构建参数字典
param = {}
# use softmax multi-class classification
param['objective'] = 'multi:softmax'
# scale weight of positive examples
param['eta'] = 0.1
param['max_depth'] = 6
param['silent'] = 1
param['nthread'] = 4
param['num_class'] = 9# 训练模型的方式有点不一样哦,这个是直接传入打包好的训练数据(同时含自变量、因变量矩阵)
model = xgb.train(param, dtrain)

五、大一统代码!

from numpy import loadtxt
import xgboost as xgb
from xgboost import XGBClassifier
from xgboost import plot_importance
from matplotlib import pyplot as plt
import matplotlib as mpl
import pandas as pd
from sklearn.feature_selection import SelectFromModelimport warningswarnings.filterwarnings("ignore")
# 加载数据集path = "label_csv.csv"
# 这是pandas.read_csv()方法
data = pd.read_csv(path)
feature_names = list(data.drop(label_col, axis=1).columns)    # 拿到所有的特征y = data[label_col].values                # np.array类型的标签列
X = data.drop(label_col, axis=1).values   # np.array类型的自变量矩阵,不含表头
# dtrain是我的训练数据(自变量矩阵是X,分类结果即因变量矩阵是y,特征字段重命名成我设置的features列表)
dtrain = xgb.DMatrix(X, label=y, feature_names=x)## 注释掉的是numpy.loadtxt()方法:
# dataset = loadtxt(path, skiprows=1, delimiter=",") # 以','为分割符,跳过1行(标features那一行)# x = ['#DEPTH', 'SP', 'GR', 'LLS', 'LLD', 'BS', 'RHOB', 'CNL', # 'TC', 'NPHI', 'C1', 'C3', 'CALC', 'MTSA',
#     'MTSC', 'DGA', 'PERM', 'POR', 'POR2', 'PORF', 'RWA', #'PORT', 'PORW', 'CRT', 'SAND', 'SH', 'MOIS', 'CARB', 'ASHA',
#     'GC', 'GP', 'WP', 'ASH1']
# print(len(x))# X:自变量矩阵(特征对应的数据) y:因变量矩阵(根据数据得出的分类结果)
# X = dataset[:,0:-1]
# y = dataset[:,-1]
# dtrain = xgb.DMatrix(X, label=y, feature_names=x)param = {}
# use softmax multi-class classification
param['objective'] = 'multi:softmax'
# scale weight of positive examples
param['eta'] = 0.1
param['max_depth'] = 6
param['silent'] = 1
param['nthread'] = 4
param['num_class'] = 9model = xgb.train(param, dtrain)
# 解决中文和负号显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 使显示图标自适应
plt.rcParams['figure.autolayout'] = Trueplot_importance(model, title='特征重要性排序', xlabel='得分', ylabel='特征', grid=False)plt.show()# 参考文章:http://www.huaxiaozhuan.com/%E5%B7%A5%E5%85%B7/xgboost/chapters/xgboost_usage.html
# https://xbuba.com/questions/46943314# https://blog.csdn.net/leo_xu06/article/details/52424924
# https://stackoverflow.com/questions/46943314/xgboost-plot-importance-doesnt-show-feature-names
# https://blog.csdn.net/hao5335156/article/details/81173452
# https://www.cnblogs.com/wj-1314/p/9402324.html

使用XGboost模块XGBClassifier、plot_importance来做特征重要性排序——修改f1,f2等字段相关推荐

  1. 随机森林做特征重要性排序和特征选择

    随机森林模型介绍: 随机森林模型不仅在预测问题上有着广泛的应用,在特征选择中也有常用. 随机森林是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,更令人惊奇的是它在分类和 ...

  2. 随机森林的特征重要性排序

    OOB计算 用未被选择到的学习的数据,做验证集计算.不必另外做validation了 Feature Selection 如果没有做好这部分,也是有缺点的: 其中最致命的就是,可能得到的是错误的答案, ...

  3. 特征重要性排序--Permutation Importance

    特征重要性排序–Permutation Importance 参考:Permutation Importance | Kaggle 相比于其他衡量特征重要性的方法,Permutation Import ...

  4. gbdt 回归 特征重要性 排序_RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性. 根据基本学习器 ...

  5. gbdt 回归 特征重要性 排序_gbdt、xgb、lgb、cat面经整理——from牛客

    注意,下文的原始的gbdt是以sklearn中的gbdt的实现为例子来阐述的,因为gbdt的改进版本有很多,为了叙述方便,使用这个最为人所知的实现来描述. 你有自己用过别的模型然后调参之类的吗?能说一 ...

  6. 利用随机森林进行特征重要性排序

    第一步就是导包,这里我们主要需要用到的就是sklearn和pandas 我们先对自己的数据集进行一下处理 import numpy as np import pandas as pd testset= ...

  7. LR模型特征重要性排序

    1.特征重要性的意义 LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的优点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好.因为每个特征都对应一个模型参数w ...

  8. gbdt 回归 特征重要性 排序_GBDT 理解

    https://blog.csdn.net/yyy430/article/details/85108797​blog.csdn.net梯度提升树(GBDT)原理小结 - 刘建平Pinard - 博客园 ...

  9. 随机森林对特征重要性排序

    two methods:  1.Mean decrease impurity 不纯度降低 大概是对于每颗树,按照impurity(gini /entropy /information gain)给特征 ...

最新文章

  1. Volume是如何工作的
  2. 【青少年编程】【二级】寻找宝石
  3. 系统目录结构文件类型及ls.alias命令
  4. 详细分解Transformer各部件总结
  5. 【Elasticsearch】实施现代电子商务搜索
  6. ImportError: DLL load failed: 找不到指定的模块。Import tensorflow时
  7. JavaScript 三种创建对象的方法
  8. 7.业务架构·应用架构·数据架构实战 --- 业务架构书
  9. R(Kmeans绘制地形图)
  10. 两年工作经验,三面拼多多,最终获得offer!(面经总结)
  11. STM32cube HAL库 I2C实现LM75数字温度传感器温度读取,并串口打印
  12. JavaScript——onblur事件失效问题解决方案
  13. Android bluetooth介绍(三): 蓝牙扫描(scan)设备分析
  14. P1413 坚果保龄球
  15. 2019互联网行业面试资料合集
  16. 优学院计算机基础网课答案,最新网课答案2020优学院大学计算机基础
  17. C# FileSystemWatcher监控新生成的文件
  18. 计算机图形学(三)-图形学中的基本变换(缩放、平移、旋转、剪切、镜像)
  19. 读书笔记-赢在用户[1]:什么是人物角色?为什么要创建人物角色?
  20. 毕业设计——基于STM32的智能窗户系统(物联网、智能家居、APP控制、APP显示温湿度等信息、自动工作模式)

热门文章

  1. 可怕!女子家中摄像头无人操作却自己动起来
  2. ChinaSkills-网络系统管理(2021年全国职业院校技能大赛C-1模块 C:网络部分 真题 )
  3. EasyRecovery数据恢复软件V15专业版使用操作流程
  4. SQL DDM和DML
  5. 物联网这个名字的由来
  6. Android平台接入Facebook登录
  7. i9级E52450处理器_原来同型号处理器后缀字母不同性能差异会这么大
  8. SIP协议-04 SIP头域
  9. 震撼,愿所有中国人,都能听到这篇演讲!
  10. 英语期刊写作-通往国际学术舞台的阶梯第四章网课答案