chi2#

sklearn.feature_selection.chi2(X, y)[源码]#

计算每个非负特征和类别之间的卡方统计量。

此分数可用于从 X 中选择具有最高卡方统计量值的 n_features 个特征,其中 X 必须只包含**非负整数特征值**,例如布尔值或频率(例如,文档分类中的词频),与类别相关。

如果您的某些特征是连续的,您需要对其进行分箱,例如使用 KBinsDiscretizer

请记住,卡方检验衡量的是随机变量之间的依赖关系,因此使用此函数可以“筛选掉”最有可能独立于类别,从而与分类无关的特征。

更多信息请参见用户指南

参数:
X形状为 (n_样本, n_特征) 的类数组对象或稀疏矩阵

样本向量。

y形状为 (n_样本,) 的类数组对象

目标向量(类别标签)。

返回:
chi2形状为 (n_特征,) 的 ndarray

每个特征的卡方统计量。

p_values形状为 (n_特征,) 的 ndarray

每个特征的 P 值。

另请参阅

f_classif

分类任务中标签/特征之间的 ANOVA F 值。

f_regression

回归任务中标签/特征之间的 F 值。

注意事项

此算法的复杂度为 O(n_类别 * n_特征)。

示例

>>> import numpy as np
>>> from sklearn.feature_selection import chi2
>>> X = np.array([[1, 1, 3],
...               [0, 1, 5],
...               [5, 4, 1],
...               [6, 6, 2],
...               [1, 4, 0],
...               [0, 0, 0]])
>>> y = np.array([1, 1, 0, 0, 2, 2])
>>> chi2_stats, p_values = chi2(X, y)
>>> chi2_stats
array([15.3,  6.5       ,  8.9])
>>> p_values
array([0.000456, 0.0387, 0.0116 ])