sklearn.feature_selection.mutual_info_classif?
sklearn.feature_selection.mutual_info_classif(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None)
估計離散目標變量的互信息。
兩個隨機變量之間的互信息(MI)[1]是一個非負值,用于衡量變量之間的相關性。當且僅當兩個隨機變量是獨立時它等于零,較高的值則意味著較高的依賴性。
該函數依賴于基于k近鄰距離熵估計的非參數方法,如[2]和[3]中所述。兩種方法都基于[4]中最初提出的想法。
它可用于單變量特征選擇,請參閱 用戶指南中的更多內容。
參數 | 說明 |
---|---|
X | array_like or sparse matrix, shape (n_samples, n_features) 特征矩陣。 |
y | array_like, shape (n_samples,) 目標向量。 |
discrete_features | {‘auto’, bool, array_like}, default ‘auto’ 如果是布爾值,則確定是考慮所有特征是離散特征還是連續特征。如果是數組,則它應該是形狀為(n_features)的布爾掩碼,或者是具有離散特征索引的數組。如果為'auto',則為密集X指定為False,為稀疏X指定為True。 |
n_neighbors | int, default 3 用于連續變量的MI估計的鄰居數,請參見[2]和[3]。較高的值會減少估計的方差,但可能會帶來偏差。 |
copy | bool, default True 是否復制給定的數據。如果設置為False,則初始數據將被覆蓋。 |
random_state | int, RandomState instance or None, optional, default None 確定隨機數生成,以將小噪聲添加到連續變量中以刪除重復值。在多個函數調用之間傳遞同一個整數以獲得可重復的結果。請參閱詞匯表。 |
返回值 | 說明 |
---|---|
mi | ndarray, shape (n_features,) 每個特征和目標之間的估計相互信息。 |
注
使用術語“離散特征”而不是將它們命名為“分類”,因為它可以更準確地描述特征。例如,圖像的像素強度是離散特征(但很難分類),如果將其這樣標記,將獲得更好的結果。還要注意,將連續變量視為離散變量,通常會產生錯誤的結果,反之亦然,因此請注意這一點。 真正的相互信息不能是負的。如果其估計結果為負,則將其替換為零。
參考
1 Mutual Information on Wikipedia.
2(1,2) A. Kraskov, H. Stogbauer and P. Grassberger, “Estimating mutual information”. Phys. Rev. E 69, 2004.
3(1,2) B. C. Ross “Mutual Information between Discrete and Continuous Data Sets”. PLoS ONE 9(2), 2014.
4 L. F. Kozachenko, N. N. Leonenko, “Sample Estimate of the Entropy of a Random Vector:, Probl. Peredachi Inf., 23:2 (1987), 9-16