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