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