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 文件,并显示出来。

特征图展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值