fit_transform后数组的大小不同

3

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

对于测试集,您不应该使用fit_transform()。 您的代码应该是features_test = sel.transform(test),因为您已经想出了这个方法。 为什么?https://stackoverflow.com/a/63912149/5114585回答了应用fit_transform()或transform()的“WHY”部分。 - Dr Nisha Arora
2个回答

7
这是因为您将选择器匹配两次。首先,请注意,“fit_transform”只是对“fit”和“transform”的调用。
“fit”方法允许您的“VarianceThreshold”选择器根据您提供的参数在数据集中查找要保留的特征。
“transform”方法执行实际的特征选择,并返回一个仅包含所选特征的n数组。

谢谢!我修改了以下代码:features = sel.fit(X_small).transform(X_small) features_test = sel.transform(little_test)现在它可以正常工作了。 - Gilaztdinov Rustam
2
这就是正确的做法;)。你仍然可以在第一步中使用 fit_transformfeatures = sel.fit(X_small).transform(X_small) 等同于 features = sel.fit_transform(X_small))。 - ldirer

0

哪种转换可以帮助我获得相同大小的数组? - Gilaztdinov Rustam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接