fit_transform之后的数组大小不同

时间:2015-08-31 12:51:23

标签: python scikit-learn

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

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: 哪种转换可以帮助我获得相同大小的数组?

2 个答案:

答案 0 :(得分:6)

这是因为你适合你的选择器两次

首先,请注意fit_transform只需拨打fit,然后拨打transform

fit方法允许您的VarianceThreshold选择器根据您提供的参数查找要保留在数据集中的要素。

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

答案 1 :(得分:0)

因为fit_transform对数组应用了降维。这就是结果数组维度与输入不同的原因。

请参阅此what is the difference between 'transform' and 'fit_transform' in sklearn和此http://scikit-learn.org/stable/modules/feature_extraction.html