sns.barplot()函数:根据特征重要程度进行排序并输出(可用于帕拉图的建立)

sns.barplot():根据特征重要程度进行排序并输出

机器学习中经常会用到图形进行可视化,如在网格搜索(GridSearch)后对特征的重要性进行排序时,用到sns.barplot()函数按照重要程度输出特征。
(这种方法也能用于建立帕拉图)

  1. sns.barplot()函数中能用于分类输出和排序的参数了解:
    order, hue_order:字符串列表,可选项
    根据参数定义的类别和级别画图,如果没有定义,则根据数据对象推断级别;order参数是指定条形图输出的顺序

  2. 示例代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 构造数据
maxnum = 10
a = pd.DataFrame({"feature": [19, 36, 28, 15, 2, 9, 45, 73, 3, 18, 66, 89]})
b = pd.DataFrame({"importance": [15396,  7812,  4795,  3857,  2966,  1984,  1735,  1266,  1128, 849, 6831, 2637]})
df = pd.concat([a, b], axis=1)
# 对特征按照重要性程度的从大到小进行排序
df = df.sort_values(by="importance", ascending=False)
# 只输出前10个重要的特征
df = df[:maxnum]
print(df)

结果输出为:
sns.barplot()函数:根据特征重要程度进行排序并输出(可用于帕拉图的建立)_第1张图片

# 不设置order参数的结果(默认情况下):
sns.barplot(x="importance", y="feature", data=df, orient="h")

结果输出:是按照特征feature中数值的从小到大排序的
sns.barplot()函数:根据特征重要程度进行排序并输出(可用于帕拉图的建立)_第2张图片
由此可见,在画图前虽然已经将数据按重要性(importance)排序了,但是图形并没有按此输出,而是按照特征(feature)的数值大小依次输出。

# 设置order参数:按重要程度(importance)从大到小输出的结果:
sns.barplot(x="importance", y="feature", 
					data=df, order=df["feature"], orient="h")

结果输出:是按照特征的重要程度(importance)从大到小进行排序输出sns.barplot()函数:根据特征重要程度进行排序并输出(可用于帕拉图的建立)_第3张图片
图形输出的结果达到预期了!

你可能感兴趣的:(sns.barplot()函数:根据特征重要程度进行排序并输出(可用于帕拉图的建立))