如何使用功能名称查看model.feature_importances_输出?

时间:2017-12-07 10:02:58

标签: python numpy scikit-learn

我在python中构建了一个DecisionTreeClassifier模型,并希望看到每个功能的重要性。当我使用sklearn时,我已将所有课程转换为数字。以下是我导入数据的方式:

raw_data = pd.read_csv('Video_Games_Sales_as_at_22_Dec_2016.csv')
no_na_df = raw_data.dropna(how='any')

在删除NAs后,我创建了用于数字转换的DF:

numeric_df = no_na_df.copy()
cols = ['Platform','Genre','Publisher','Developer','Rating']
numeric_df[cols] = numeric_df[cols].apply(lambda x: pd.factorize(x)[0]+1)

一旦完成,我创建了测试并训练分裂:

X = numeric_df.drop(['Name','Global_Sales_Bin','Global_Sales','NA_Sales','EU_Sales','JP_Sales','Other_Sales'], axis = 1)
y = numeric_df['Global_Sales_Bin']

X = np.array(X)
y = np.array(y)

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.3, random_state = 0)

运行模型等,得到我的结果,然后我想看到每个功能的重要性:

model.feature_importances_

输出:

array([ 0.08518705,  0.07874186,  0.06322593,  0.08446309,  0.08410844,
        0.08097326,  0.07744228,  0.1851621 ,  0.23597441,  0.02472158])

我不知道如何将模型中的功能与上面的数字相匹配。 “X”和“模型”都存储为numpy数组,原始数据框已经缩小以适应模型,因此功能无法正确对齐。我想我可能不得不使用for循环和zip,但不知道如何。

感谢。

1 个答案:

答案 0 :(得分:0)

最终工作list(zip(X_columns, model.feature_importances_))

X_columns = X.columns

输出:

[('Platform', 0.085187050413710552),
 ('Year_of_Release', 0.078741862224430401),
 ('Genre', 0.063225925635322172),
 ('Publisher', 0.084463091000316695),
 ('Critic_Score', 0.084108440698256848),
 ('Critic_Count', 0.080973259803115372),
 ('User_Score', 0.077442278687036153),
 ('User_Count', 0.18516210213713488),
 ('Developer', 0.23597440837370295),
 ('Rating', 0.024721581026973961)]