当前位置: 首页 > news >正文

Python条形图 | 指标(特征)重要性图的绘制

在数据科学和机器学习的工作流程中,特征选择是一个关键步骤。通过评估每个特征对模型预测能力的影响,我们可以选择最有意义的特征(指标),从而提高模型的性能并减少过拟合。本文将介绍如何使用 Python 的 Seaborn 和 Matplotlib 库绘制特征重要性图(即条形图),以帮助我们可视化特征的重要性。

准备工作

首先,我们需要安装必要的库。如果您还没有安装 Pandas、Matplotlib 和 Seaborn,可以使用以下命令进行安装:

pip install pandas matplotlib seaborn

数据准备

在本示例中,我们创建一个简单的字典,模拟特征及其重要性分数。然后,我们将使用 Pandas 将其转换为 Series,以便更方便地进行处理和可视化。在具体的实际例子应用中,可以通过代码直接读取 csv/xlsx 等格式的数据。

import pandas as pd# 定义特征及其重要性值
data_dict = {'Vasodilator_1': 0.005994,'HDL': 0.006587,'BNP': 0.016333,'Cr': 0.018373,'Statins_1': 0.020511,'Diabetes_1': 0.024206,'Antibiotics_1': 0.029286,'Cr_new_1': 0.029618,'CtnI': 0.033793,'Oliguria_1': 0.035396
}# 将字典转换为 Pandas Series
selected_features = pd.Series(data_dict)

绘制特征重要性图

接下来,我们将使用 Seaborn 和 Matplotlib 绘制柱状图,以展示特征的重要性。


import matplotlib.pyplot as plt
import seaborn as sns# 创建图形,设置图形大小
plt.figure(figsize=(10, 6))# 使用 Seaborn 绘制条形图
barplot = sns.barplot(x=selected_features.values, y=selected_features.index, palette='viridis')# 设置图表标题
plt.title('Feature Importance from Lasso Regression', fontsize=14)# 反转y轴,使得重要性最高的特征在顶部
plt.gca().invert_yaxis()# 设置x轴和y轴的标签
plt.xlabel('Feature Importance', fontsize=13)
plt.ylabel('Variable', fontsize=13)# 调整图像在画布中的位置,避免元素重叠
plt.tight_layout()# 隐藏图表的上边框和右边框
barplot.spines['top'].set_visible(False)
barplot.spines['right'].set_visible(False)# 在每个柱子上显示对应的数值
for p in barplot.patches:barplot.annotate(format(p.get_width(), '.3f'),  # 格式化数值到小数点后3位(p.get_width() + 0.001, p.get_y()),  # 设置注释位置ha='center', va='bottom', fontsize=10, color='black',  # 设置对齐方式和字体xytext=(0, 7),  # 纵向偏移textcoords='offset points'  # 偏移单位为点)# 保存图像为 PDF 文件
plt.savefig('Feature_Importance.pdf')# 显示图像
plt.show()

代码解释

  • 设置图形大小:使用 plt.figure() 设置图形的宽度和高度。
  • 绘制柱状图:使用 sns.barplot() 绘制柱状图,其中 x 轴表示特征重要性,y 轴表示特征名称。
  • 反转 y 轴:使用 invert_yaxis() 使得重要性最高的特征在顶部。
  • 添加标签和标题:设置 x 轴和 y 轴的标签以及图表标题。
  • 隐藏边框:隐藏不必要的图表边框,使得图表更加美观。
  • 标注每个柱子:在每个柱子上添加对应的数值,以便于查看特征的重要性。
  • 保存和显示图像:将生成的图像保存为 PDF 文件,并显示出来。

特征图展示

http://www.lryc.cn/news/470328.html

相关文章:

  • 危险物品图像分割系统:一键训练
  • 城市景色视频素材下载好去处
  • 基于SSM美容院管理系统的设计
  • Threejs 实现3D 地图(04)3d 地图的柱状图和文字显示
  • Oracle 第2章:安装与配置Oracle
  • 动态规划 —— 斐波那契数列模型-解码方法
  • PPT / Powerpoint中利用LaTeX输入公式
  • C++ 模板专题 - 类型擦除
  • RuoYi-Vue项目 重点代码讲解
  • pandas习题 024:用字典构造 DataFrame
  • 如何在Node.js中执行解压缩文件操作
  • 梦熊 CSP-S模拟赛 T3 youyou 的序列 II
  • 记录下docker部署gitlab-ce-17.5版本及客户端git拉取方式配置
  • opencv-platform实现人脸识别
  • leetcode 有重复字符串的排列组合
  • 【大数据学习 | kafka】kafka的组件架构
  • Python基于TensorFlow实现简单循环神经网络回归模型(SimpleRNN回归算法)项目实战
  • torch.isclose
  • Python记录-字典
  • python读取学术论文PDF文件内容
  • 5550 取数(max)
  • Windows常用网络命令
  • 地磁传感器(学习笔记上)
  • 使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南
  • mysql 启动报错 ‘/var/run/mysqld/mysqld.sock‘
  • JAVA基础:常用类 (习题笔记)
  • element 按钮变形 el-button样式异常
  • Windows/Linux(服务器)查看显卡的名称
  • 算法基础 - 时间复杂度和空间复杂度(万字长文详解)
  • 【K8S系列】Kubernetes 中 Service IP 地址和端口不匹配问题及解决方案【已解决】