这里,我在feature_names中有一个功能名称的汇编,每个名称均取自数据集X_train,Y_train的列。
neigh
是一个MultinomialNB分类器,已与数据集的X_train和Y_train拟合。
我现在不知道如何使用邻近的MultinomialNB分类器从feature_names中提取重要特征。
所以我在下面用numpy编写了代码
max_ind_positv=np.argsort((neigh.feature_log_prob_)[1])[::-1][0:10]
top_pos=np.take(feature_names,max_ind_positv)
但是它显示以下错误:
1)AttributeError: 'list' object has no attribute 'take'
2)IndexError: index 3997 is out of bounds for axis 0 with size 7
请有人告诉我有关如何获得前20个功能名称的更正。
答案 0 :(得分:1)
您实际上并不需要使用np.take()
,只需将其索引到字符串数组中即可。因此,要按重要性递减的顺序获取功能,可以执行以下操作:
>>> import numpy as np
>>> features = np.array(['feat1', 'feat2', 'feat3'])
>>> coeffs = np.array([0.2, 0.02, 2.0])
>>> features[np.argsort(coeffs)[::-1]]
array(['feat3', 'feat1', 'feat2'], dtype='<U5')