我在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,但不知道如何。
感谢。
答案 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)]