这是我的预处理列车数据的代码:
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()’会做同样的事情,但是结果是不同的……
有什么关系呢?
发布于 2017-08-02 12:19:09
让我们看看,有三个不同的东西:"fit","transform","fit_transform“。
当你拟合一些数据时,Scaler会“记住”它,所以如果你拟合火车-火车上的参数将被计算,如果你拟合测试-参数pn测试将被计算。
当你进行转换时,你会使用“记忆”参数。因此,通常您将模型拟合到训练数据上,并对其进行转换。然后用这些“记住的”参数转换测试数据。
使用fit_transform时,缩放器将学习选定数据的参数并对其进行转换。
所以回答你的问题:如果你使用fit_transform,Scaler将根据测试分布来缩放测试数据,它将不同于train;如果你使用transform,那么测试数据将被缩放为训练数据。
https://stackoverflow.com/questions/45451255
复制相似问题