【代码复现】SCI论文特征重要性条形图代码复现

前言

随机森林特征重要性条形图绘制,前几个特种呈现不同的颜色。
请添加图片描述

其中的误差棒是通过计算特征重要性的标准误差来获得的,以表示特征重要性的不确定性。标准误差是一种度量估计值的不确定性的统计量,它表示估计值可能偏离真实值的程度。

代码复现

"""
 @Author: F娴熟
 # -*- coding: utf-8 -*-
 @FileName: 特征重要性条形图.py
 @DateTime: 2023/10/7 11:18
 @SoftWare: PyCharm
"""
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.ensemble import RandomForestRegressor

# 加载加利福尼亚房价数据集
data = fetch_california_housing()
X = data.data  # 特征矩阵
y = data.target  # 目标标签(房价)

# 创建随机森林回归模型
random_forest = RandomForestRegressor(n_estimators=100, random_state=42)

# 训练模型
random_forest.fit(X, y)

# 获取特征重要性分数
feature_importance = random_forest.feature_importances_

# 获取特征名称
feature_names = data.feature_names

# 计算特征重要性的标准误差
n_trees = len(random_forest.estimators_)
std_err = np.std([tree.feature_importances_ for tree in random_forest.estimators_], axis=0) / np.sqrt(n_trees)

# 排序特征重要性分数
sorted_idx = np.argsort(feature_importance)

# 创建一个颜色数组,前四个特征使用蓝色,后四个特征使用绿色
colors = ['#4477be' if i < 4 else '#fa8e8e' for i in range(len(sorted_idx))]
#设置误差棒颜色和大小
error_kw = {'ecolor': '#381da6', 'capsize': 4}

# 设置全局的字体大小和样式
plt.rcParams["font.size"] = 14
plt.rcParams["font.family"] = "Times New Roman"
plt.figure(figsize=(10,6), dpi=500)

# 去除外边框
plt.box(False)
# 添加竖线网格
plt.grid(axis='x', linestyle='--', alpha=0.7)

# 绘制条形图(带误差棒)
plt.barh(range(len(sorted_idx)), feature_importance[sorted_idx], xerr=std_err*5, align="center", height=0.5, color=colors, error_kw=error_kw)# 设置颜色
plt.yticks(range(len(sorted_idx)), [feature_names[i] for i in sorted_idx])
plt.xlabel("Characteristic importance")
plt.ylabel("Feature")
plt.title("Random forest features importance with Error Bars")

# 保存图片到本地
plt.savefig("RFimport.png")

plt.show()

结果展示

请添加图片描述

往期代码复现

更多代码请移步公众号获取(GIS探险家)
在这里插入图片描述

感谢大家花时间来阅读本文,小编水平有限,有失误之处请大家斧正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS探险家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值