从列表numpy中提取热门功能名称

时间:2019-09-13 04:46:40

标签: list numpy feature-selection

这里,我在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个功能名称的更正。

1 个答案:

答案 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')