关于python:fit_transform之后不同大小的数组

Different size of array after fit_transform

我的fit_transform函数有问题。有人能解释为什么数组的大小不同吗?

1
2
3
4
5
6
7
8
9
10
11
12
In [5]: X.shape, test.shape

Out[5]: ((1000, 1932), (1000, 1932))

In [6]: from sklearn.feature_selection import VarianceThreshold
        sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
        features = sel.fit_transform(X)
        features_test = sel.fit_transform(test)

In [7]: features.shape, features_test.shape

Out[7]:((1000, 1663), (1000, 1665))

upd:哪种转换可以帮助我获得相同大小的数组?


这是因为你要安装两次选择开关。

首先,请注意,fit_transform只是对fit的调用,然后是对transform的调用。

fit方法允许您的VarianceThreshold选择器根据您给它的参数找到它想要保留在数据集中的特性。

transform方法执行实际的特征选择,并返回仅包含所选特征的n数组。


因为fit_transform对数组应用了维数缩减。这就是为什么生成的数组维度与输入不相同的原因。

请看sklearn和http://scikit-learn.org/stable/modules/feature_extraction.html中的"transform"和"fit_transform"的区别。