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

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.kler.cn/news/368273.html

相关文章:

  • 什么是 VolTE 中的 Slient Redial?它和 CSFB 什么关系?
  • 软考:GPU算力,AI芯片
  • Java面试题——微服务篇
  • jupyter notebook改变默认启动路径
  • 基于SSM轻型卡车零部件销售系统的设计
  • 量子机器学习:颠覆性的前沿技术
  • 提示工程(Prompt Engineering)指南(入门篇)
  • django中的类属性和类方法
  • A股未来的发展方向在哪里?
  • Web3应用场景大揭秘:区块链技术的创新与突破
  • 云原生Istio基础
  • 检索增强型生成模型RichRAG:为多面查询提供丰富回应
  • XQT_UI 组件|02| 按钮 XPushButton
  • 软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答
  • 浏览器无法访问非80端口网页
  • 当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理
  • Git修改本地分支并同步至远程
  • 练习LabVIEW第十九题
  • Minio文件服务器:SpringBoot实现文件上传
  • 程序设计基础I-单元测试4(机测+编程题)
  • Oracle SQL练习题,从小白到入门 - 上
  • uniapp通过id获取dom的宽度,高度,位置等(应该是 任意平台都通用 )
  • member access within null pointer of type ‘ListNode‘
  • 在浏览器里就可以运行的本地AI模型 - 一键去除图片背景AI
  • Handler、Looper、message进阶知识
  • Tkinter包文件对话框模块中的FileDialog类简介