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. 使用術語“離散特征”而不是將它們命名為“分類”,因為它可以更準確地描述特征。例如,圖像的像素強度是離散特征(但很難分類),如果將其這樣標記,將獲得更好的結果。還要注意,將連續變量視為離散變量,通常會產生錯誤的結果,反之亦然,因此請注意這一點。
  2. 真正的相互信息不能是負的。如果其估計結果為負,則將其替換為零。

參考

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