这是我用于预处理火车数据的代码:
stock_pipeline = Pipeline([
('std_scaler', StandardScaler()),
])
train_pipelined_features_np = stock_pipeline.fit_transform(train_features_df)
训练结束后,我准备对测试数据进行预处理。但想知道我必须使用stock_pipeline.fit_transform(test_features_df)
或stock_pipeline.transform(test_features_df)
...
由于管道只有StandardScaler()
,所以我认为这fit()
不会做任何事情。所以我认为fit_transform()
和 'transform()` 会做同样的事情。但是结果各不相同...
有什么不同?
让我们看看,有三种不同的东西:“fit”、“transform”、“fit_transform”。
当您拟合某些数据时,Scaler“记住”它,因此如果您拟合火车 - 将计算列车上的参数,如果您拟合测试 - 将计算参数 pn test。
转换时,您使用“记住的”参数。所以通常你在训练数据上拟合模型并对其进行转换。然后用这些“记住”的参数转换测试数据。
当您使用 fit_transform 时,Scaler 学习所选数据的参数并对其进行转换。
所以回答你的问题:如果你使用 fit_transform,Scaler 将根据测试分布缩放测试数据,它会与 train 不同;如果您使用变换,则测试数据将被缩放为训练数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句