[英]How to interpret importance of features from _coeffs outputs for multi-class in sklearn.feature_selection?
我有一个150个样本和近10000个特征的数据集。 我将样本聚集在6个簇中。 我使用了sklearn.feature_selection.RFECV方法来减少功能的数量。 该方法使用10倍CV估计3000个特征的重要特征的数量,具有~95%的准确度。 但是,使用大约250个功能(我使用grid_scores_绘制)可以获得~92%的准确度。 因此,我想获得250个功能。
我已经检查了这个问题获取RFECV中的功能scikit-learn并发现通过以下方式计算所选功能的重要性:
np.absolute(rfecv.estimator_.coef_)
它返回二进制分类的重要特征数量的数组长度。 正如我之前所说,我有6个集群和sklearn.feature_selection.RFECV做分类1对1 。 因此我得到(15, 3000)
15,3000 (15, 3000)
ndarray。 我不知道该怎么办。 我想为每个功能采取点产品:
cofs = rfecv.estimator_.coef_
coeffs = []
for x in range(cofs.shape[1]):
vec = cofs[ : , x]
weight = vec.transpose() @ vec
coeffs.append(weight)
我得到(1,3000)的数组。 我可以对这些进行排序并得到我想要的结果。 但我不确定它是否正确且有意义。 我非常感谢任何其他解决方案。
我深入研究了源代码。 在这里我发现了,实际上他们做的几乎是一样的:
# Get ranks
if coefs.ndim > 1:
ranks = np.argsort(safe_sqr(coefs).sum(axis=0))
else:
ranks = np.argsort(safe_sqr(coefs))
如果是多类问题,他们总结系数。 希望能帮助别人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.