我正在研究单变量特征选择。一种经常被描述的方法是查看一个-测试。但是,我很困惑这如何适用于连续变量。
1. 怎么可能- 连续变量特征选择的测试工作? 我一直认为这个测试适用于计数。在我看来,您必须以某种方式对数据进行分类,但结果取决于您选择的分类。我也对连续变量和分类变量的组合如何工作感兴趣。
2. 这个测试是规模相关的问题吗? 我的第二个担心是测试依赖于规模。这对于没有测量单位的计数来说不是问题,但它会对以某些测量单位测量的连续变量的特征选择产生很大影响(参见示例)。
例子
对于具有测量单位的变量,显示检验与尺度相关:
让我们看一下原始示例:http ://scikit-learn.org/stable/modules/feature_selection.html
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
X, y = iris.data, iris.target
selector = SelectKBest(chi2, k=2)
selector.fit(X, y)
print(selector.pvalues_)
print(selector.get_support())
输出:
[False False True True]
[4.47e-03 1.657e-01 5.94e-26 2.50e-15]
现在让我们假设我们记录的第一列和第三列不是以厘米为单位,而是以毫米为单位。显然,这不会改变类类型对萼片和花瓣长度的依赖性。但是,p 值变化很大,因此,选定的列也会发生变化:
X[:, 0] = 10*X[:, 0]
X[:, 2] = 10*X[:, 2]
selector.fit(X, y)
print(selector.pvalues_)
print(selector.get_support())
输出
[True False True False]
[3.23e-024 1.66e-001 5.50e-253 2.50e-015]
如果我还以 mm 而不是 cm 记录第二列,那也会给我一个显着的 p 值。
我相信这与该方法没有实现任何分箱但将所有值相加并将其与预期总和进行比较这一事实有关。此外,我相信分子中的事实是平方的,而分母不增加问题。