mutual_info_regression
- sklearn.feature_selection.mutual_info_regression(X, y, *, discrete_features='auto', n_neighbors=3, copy=True, random_state=None, n_jobs=None)[исходный код]
-
Оценить взаимную информацию для непрерывной целевой переменной.
Взаимная информация (MI) [1] между двумя случайными переменными — это неотрицательная величина, измеряющая зависимость между переменными. Она равна нулю тогда и только тогда, когда две случайные переменные независимы; более высокие значения означают более сильную зависимость.
Функция использует непараметрические методы, основанные на оценке энтропии по расстояниям до k ближайших соседей, описанные в [2] и [3]. Оба метода основаны на идее, первоначально предложенной в [4].
Функцию можно использовать для отбора одномерных признаков; подробнее см. в Руководстве пользователя.
- Параметры:
-
- Xмассивоподобный объект или разреженная матрица, форма (n_samples, n_features)
-
Матрица признаков.
- yмассивоподобный объект формы (n_samples,)
-
Целевой вектор.
- discrete_features{‘auto’, bool, array-like}, по умолчанию=’auto’
-
Если задано значение bool, оно определяет, следует ли считать все признаки дискретными или непрерывными. Если задан массив, он должен быть либо булевой маской формы (n_features,), либо массивом с индексами дискретных признаков. Если задано значение ‘auto’, для плотного
Xустанавливается False, а для разреженногоX— True. - n_neighborsint, по умолчанию=3
-
Количество соседей для оценки MI непрерывных переменных; см. [2] и [3]. Более высокие значения уменьшают дисперсию оценки, но могут привести к смещению.
- copybool, по умолчанию=True
-
Следует ли создавать копию переданных данных. Если задано значение False, исходные данные будут перезаписаны.
- random_stateint, экземпляр RandomState или None, по умолчанию=None
-
Определяет генерацию случайных чисел для добавления небольшого шума к непрерывным переменным с целью устранения повторяющихся значений. Передайте int, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. Глоссарий.
- n_jobsint, по умолчанию=None
-
Количество заданий для вычисления взаимной информации. Параллельное выполнение распределяется по столбцам
X.Noneозначает 1, если только не используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в Глоссарии.Добавлено в версии 1.5.
- Возвращает:
-
- mindarray, форма (n_features,)
-
Оценка взаимной информации между каждым признаком и целевой переменной в натах.
Примечания
- Термин «дискретные признаки» используется вместо термина «категориальные», поскольку он точнее описывает суть. Например, значения интенсивности пикселей изображения — дискретные признаки (но вряд ли категориальные), и результаты будут лучше, если отметить их соответствующим образом. Также обратите внимание, что трактовка непрерывной переменной как дискретной и наоборот обычно приводит к неверным результатам, поэтому будьте внимательны.
- Истинная взаимная информация не может быть отрицательной. Если оценка оказывается отрицательной, она заменяется нулём.
Список литературы
[1]Взаимная информация в Википедии.
[2] (1,2)A. Kraskov, H. Stogbauer и P. Grassberger, «Оценка взаимной информации». Phys. Rev. E 69, 2004.
[3] (1,2)B. C. Ross, «Взаимная информация между дискретными и непрерывными наборами данных». PLoS ONE 9(2), 2014.
[4]L. F. Kozachenko, N. N. Leonenko, «Выборочная оценка энтропии случайного вектора», Probl. Peredachi Inf., 23:2 (1987), 9-16
Примеры
>>> from sklearn.datasets import make_regression >>> from sklearn.feature_selection import mutual_info_regression >>> X, y = make_regression( ... n_samples=50, n_features=3, n_informative=1, noise=1e-4, random_state=42 ... ) >>> mutual_info_regression(X, y) array([0.117, 2.645, 0.0287])
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.feature_selection.mutual_info_regression.html