mutual_info_classif
- sklearn.feature_selection.mutual_info_classif(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None, n_jobs=None)[source]
-
Оценить взаимную информацию для дискретного целевого переменного.
Взаимная информация (MI) [1] между двумя случайными переменными — это неотрицательное значение, которое измеряет зависимость между переменными. Она равна нулю тогда и только тогда, когда две случайные переменные независимы, а более высокие значения означают более высокую зависимость.
Функция использует непараметрические методы, основанные на оценке энтропии из расстояний k ближайших соседей, как описано в [2] и [3]. Оба метода основаны на идее, первоначально предложенной в [4].
Может быть использована для отбора унивариантных признаков, подробнее см. в Руководстве пользователя.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица признаков.
- yarray-like of shape (n_samples,)
-
Целевой вектор.
- discrete_features‘auto’, bool or array-like, default=’auto’
-
Если bool, определяет, следует ли считать все признаки дискретными или непрерывными. Если массив, то это должна быть либо булевая маска с формой (n_features,) либо массив с индексами дискретных признаков. Если ‘auto’, то присваивается False для плотных
Xи True для разреженныхX. - n_neighborsint, default=3
-
Количество соседей, используемых для оценки MI для непрерывных переменных, см. [2] и [3]. Более высокие значения уменьшают дисперсию оценки, но могут ввести смещение.
- copybool, default=True
-
Копировать ли заданные данные. Если установлено в False, исходные данные будут перезаписаны.
- random_stateint, RandomState instance or None, default=None
-
Определяет генерацию случайных чисел для добавления небольшого шума к непрерывным переменным, чтобы устранить повторяющиеся значения. Передайте целое число для воспроизводимых результатов в нескольких вызовах функции. См. Словарь.
- n_jobsint, default=None
-
Число задач для вычисления взаимной информации. Параллелизация выполняется по столбцам
X.Noneозначает 1, если не в контекстеjoblib.parallel_backend.-1означает использование всех процессоров. См. Словарь для получения дополнительных сведений.Добавлен в версии 1.5.
- Возвращаемые значения:
-
- mindarray, shape (n_features,)
-
Оцененная взаимная информация между каждым признаком и целевым признаком в натуральных единицах.
Примечания
- Термин «дискретные признаки» используется вместо названия «категориальные», потому что он точнее описывает суть. Например, интенсивности пикселей изображения являются дискретными признаками (но вряд ли категориальными), и вы получите лучшие результаты, если отметить их как таковые. Также обратите внимание, что обработка непрерывной переменной как дискретной и наоборот обычно даст неверные результаты, поэтому будьте внимательны к этому.
- Истинная взаимная информация не может быть отрицательной. Если ее оценка окажется отрицательной, она заменяется нулем.
Ссылки
[1]Взаимная информация в Википедии.
[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
Примеры
>>> from sklearn.datasets import make_classification >>> from sklearn.feature_selection import mutual_info_classif >>> X, y = make_classification( ... n_samples=100, n_features=10, n_informative=2, n_clusters_per_class=1, ... shuffle=False, random_state=42 ... ) >>> mutual_info_classif(X, y) array([0.58..., 0.10..., 0.19..., 0.09... , 0. , 0. , 0. , 0. , 0. , 0. ])
Примеры галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.feature_selection.mutual_info_classif.html