繁体   English   中英

如何解释sklearn.feature_selection中多类的_coeffs输出的特征重要性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM