Sklearn:管道转换()?

时间:2017-08-02 04:00:31

标签: python scikit-learn

这是我预处理列车数据的代码:

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()`会做同样的事情。但结果彼此不同......

有什么区别?

1 个答案:

答案 0 :(得分:0)

让我们看看,有三种不同的东西:" fit"," transform"," fit_transform"。

当你适应某些数据时,Scaler"记得"它,所以如果你适合火车 - 将计算列车上的参数,如果你适合测试 - 参数pn测试将被计算。

当你转型时,你会使用"记住"参数。所以通常你会在火车数据上拟合模型并对其进行转换。然后使用这些"记住"转换测试数据。参数。

当您使用fit_transform时,Scaler会学习所选数据的参数并对其进行转换。

所以回答你的问题:如果你使用fit_transform,Scaler会根据测试分布来扩展测试数据,它将与火车不同;如果你使用变换,那么测试数据将被缩放为列车数据。