python实现随机森林的特征变量重要性排序

这篇具有很好参考价值的文章主要介绍了python实现随机森林的特征变量重要性排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      大家好,我是带我去滑雪!

      随机森林的特征变量重要性排序在特征选择和特征分析中具有广泛的用途。它可以用来识别哪些特征对目标变量的预测最为重要,从而帮助我们理解数据中的关键特征和影响因素。特征变量重要性排序的一些常见用途如下:

  1. 特征选择:特征变量重要性排序可以用作特征选择的指标。通过保留排在前面的重要特征,我们可以减少特征空间的维度,简化模型并降低过拟合的风险。这有助于提高模型的解释能力和泛化能力。

  2. 特征分析:通过特征变量重要性排序,我们可以了解哪些特征对目标变量的预测起到了关键作用。这可以帮助我们更好地理解数据,并找出对预测具有最大影响的特征。这些信息可以用于指导进一步的特征工程,或者为业务决策提供有价值的见解。

  3. 模型调优:特征变量重要性排序可以帮助我们评估和比较不同模型的性能。通过观察模型中的特征变量重要性,我们可以辨别模型中的错误或不必要的特征,进而进行模型调优。例如,我们可以尝试删除排在较低位置的不重要特征,以优化模型的准确性和效率。

  4. 特征衍生:特征变量重要性排序还可以指导特征衍生的过程。通过观察排在前面的重要特征,我们可以推断出可能的特征组合或衍生特征。这有助于发现新的特征组合或变换方式,进一步改进模型的性能。

       本期将使用python逐步实现随机森林的特征变量重要性排序。

目录

1、导入相关模块与数据

2、划分特征变量、响应变量,并进行标准化

3、训练模型获取变量重要性得分

4、可视化特征重要性排序


1、导入相关模块与数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import KFold,StratifiedKFold
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score
get_ipython().run_line_magic('matplotlib', 'inline')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
import warnings
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
import datetime
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号
get_ipython().run_line_magic('matplotlib', 'inline')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import warnings
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import networkx as nx
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False 
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import ElasticNet
from sklearn.neighbors import KNeighborsRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from xgboost.sklearn import XGBRegressor
from lightgbm import LGBMRegressor
from sklearn.neural_network import MLPRegressor
data=pd.read_csv('E:/工作/硕士/博客/博客粉丝问题/data.csv')
data=data.iloc[0:1516,]
data

输出结果:

zc rvw2 rvm2 tai eni aoi news1 skew2 kurt2 rvh
0 1.121 0.914 0.897 1.11 -0.1 0.340 0.83 1.251598 2.076749 0.545
1 0.545 0.869 0.881 1.11 -0.1 0.340 0.74 -0.170641 -1.551454 1.128
2 1.128 0.934 0.909 1.11 -0.1 0.340 0.77 -0.812615 0.216697 1.607
3 1.607 1.173 0.969 1.11 -0.1 0.340 0.79 1.597147 1.559141 0.547
4 0.547 0.990 0.915 1.11 -0.1 0.340 1.00 0.648262 0.772539 2.588
... ... ... ... ... ... ... ... ... ... ...
1511 0.503 0.953 1.226 0.87 1.4 -0.674 0.92 -0.647114 0.750049 1.414
1512 1.414 1.068 1.266 0.87 1.4 -0.674 0.97 -1.045306 -0.604874 0.873
1513 0.873 1.046 1.273 0.87 1.4 -0.674 0.85 1.170148 0.211409 0.492
1514 0.492 0.867 1.259 0.87 1.4 -0.674 0.87 -1.124157 0.434954 0.747
1515 0.747 0.806 1.272 0.87 1.4 -0.674 0.73 0.732621 -1.058271 0.839

1516 rows × 10 columns

2、划分特征变量、响应变量,并进行标准化

X=data.iloc[:,0:9]
y=data.iloc[:,9]
X_train, X_test, y_train, y_test =train_test_split(X,y,test_size=0.3,random_state = 0)
#可以检查一下划分后数据形状
X_train.shape,X_test.shape, y_train.shape, y_test.shape
#数据标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train_s = scaler.transform(X_train)
X_test_s = scaler.transform(X_test)
print('训练数据形状:')
print(X_train_s.shape,y_train.shape)
print('测试数据形状:')
(X_test_s.shape,y_test.shape)

输出结果:

训练数据形状:
(1061, 9) (1061,)
测试数据形状:
((455, 9), (455,))

3、训练模型获取变量重要性得分

RF = RandomForestRegressor(n_estimators = 100, max_depth = 5, random_state = 1234)
# 训练模型
RF.fit(X_train_s, y_train)
# 获取特征重要性得分
feature_importances = RF.feature_importances_
# 创建特征名列表
feature_names = list(X.columns)
# 创建一个DataFrame,包含特征名和其重要性得分
feature_importances_df = pd.DataFrame({'feature': feature_names, 'importance': feature_importances})
# 对特征重要性得分进行排序
feature_importances_df = feature_importances_df.sort_values('importance', ascending=False)
 
# 颜色映射
colors = plt.cm.viridis(np.linspace(0, 1, len(feature_names)))

4、可视化特征重要性排序

# 可视化特征重要性
fig, ax = plt.subplots(figsize=(10, 6))
ax.barh(feature_importances_df['feature'], feature_importances_df['importance'], color=colors)
ax.invert_yaxis()  # 翻转y轴,使得最大的特征在最上面
ax.set_xlabel('特征重要性', fontsize=12)  # 图形的x标签
ax.set_title('随机森林特征重要性可视化',fontsize=16)
for i, v in enumerate(feature_importances_df['importance']):
    ax.text(v + 0.01, i, str(round(v, 3)), va='center', fontname='Times New Roman', fontsize=10)
# 设置图形样式
# plt.style.use('default')
ax.spines['top'].set_visible(False)  # 去掉上边框
ax.spines['right'].set_visible(False)  # 去掉右边框
# ax.spines['left'].set_linewidth(0.5)#左边框粗细
# ax.spines['bottom'].set_linewidth(0.5)#下边框粗细
# ax.tick_params(width=0.5)
# ax.set_facecolor('white')#背景色为白色
# ax.grid(False)#关闭内部网格线
 
# 保存图形
plt.savefig("squares.png",
            bbox_inches ="tight",
            pad_inches = 1,
            transparent = True,
            facecolor ="w",
            edgecolor ='w',
            dpi=300,
            orientation ='landscape')

输出结果:

python实现随机森林的特征变量重要性排序,机器学习之python,python,随机森林,机器学习

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!文章来源地址https://www.toymoban.com/news/detail-600072.html

到了这里,关于python实现随机森林的特征变量重要性排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 机器学习特征重要性分析

    特征重要性是指特征对目标变量的影响程度,即特征在模型中的重要性程度。判断特征重要性的方法有很多,下面列举几种常用的方法: 1. 基于树模型的特征重要性:例如随机森林(Random Forest)、梯度提升树(Gradient Boosting Tree)等模型可以通过计算每个特征在树模型中被使

    2024年02月05日
    浏览(9)
  • 决策树分析特征重要性可视化无监督特征筛选
  • 数据分析 | 特征重要性分析 | 树模型、SHAP值法

    数据分析 | 特征重要性分析 | 树模型、SHAP值法

            在分析特征重要性的时候,相关性分析和主成分分析往往是比较简单的方法,相关性分析是通过计算特征与目标变量之间的相关系数来评估特征的重要性。它可以告诉我们特征和目标变量之间的线性关系程度,但对于非线性关系就无能为力了;主成分分析是一种降

    2024年02月10日
    浏览(11)
  • Python ---->> PiP 的重要性

    Python ---->> PiP 的重要性

    我的个人博客主页:如果’\\\'真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习----可以参考我的这篇博客:《我在VScode学Python》 Python标准库的主要功能有: 文本处理,包含文本格式化、正则表达式匹配,二进制数据处理等功能 文件处理,包含文件操作、创建临时文件

    2023年04月26日
    浏览(12)
  • chatgpt赋能python:Python屏蔽语句的重要性

    chatgpt赋能python:Python屏蔽语句的重要性

    Python是一种高级程序设计语言,被认为是开发Web应用程序、数据科学和人工智能的最佳语言之一。在编写Python程序时,每个人都会遇到需要屏蔽语句的情况。在本文中,我们将详细介绍Python屏蔽语句的重要性和用法。 Python屏蔽语句是指可以在代码中嵌入注释,以便在编译时被

    2024年02月08日
    浏览(7)
  • chatgpt赋能python:Python文件备份的重要性和应用

    在现代企业和个人用户中,数据备份是一项至关重要的工作,以防止数据丢失或损坏。当涉及到计算机数据时,文件备份是一项基本需求。文件备份还可以用于保护文件,以防它们被病毒、恶意软件或未经授权的访问者破坏。 在这篇文章中,我们将介绍如何使用Python编程语言

    2024年02月07日
    浏览(6)
  • Python数据分析 — 数据分析概念、重要性、流程和常用工具

    Python数据分析 — 数据分析概念、重要性、流程和常用工具

    前言: Hello大家好,我是小哥谈。 Python数据分析是利用Python编程语言进行数据处理、转换、清洗、可视化和建模的过程。Python在数据科学领域非常流行,有许多强大的库和工具可供使用,例如NumPy、Pandas、Matplotlib和Scikit-learn等。这些库提供了丰富的功能和方法,使得处理和分

    2024年02月09日
    浏览(7)
  • 带你了解Python的重要性,就算做测试也要会Python(文末送书)

    名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 人生苦短,我用 Python 在测试工作中用好 Python

    2024年02月15日
    浏览(11)
  • 随机森林的REF递归特征消除法来筛选特征(python实现不依赖sklearn)

    随机森林的REF递归特征消除法是一种基于模型的特征选择方法。它通过构建随机森林模型,并反复训练模型来评估每个特征的重要性,从而递归地消除不重要的特征。REF方法通过以下步骤实现: 1.计算初始模型在所有特征上的特征重要性得分。 2.去掉得分最低的特征,并重新

    2024年02月04日
    浏览(6)
  • ChatGPT 插件 “Consensus“ 实现论文搜索功能;数据工程在语言建模中的重要性

    ChatGPT 插件 “Consensus“ 实现论文搜索功能;数据工程在语言建模中的重要性

    🦉 AI新闻 🚀 ChatGPT 插件 “Consensus” 实现论文搜索功能 摘要 :OpenAI 推出了一个名为 “Consensus” 的插件,可在 ChatGPT 上进行论文搜索。用户只需用一句话描述自己想了解的问题,插件就能从 2 亿篇论文中搜索并整理出答案,并附上论文链接。插件还可根据问题写一篇简单的

    2024年02月09日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包