簡體   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