为什么在使用多项式特征时,需要在transform()之前调用fit()



大家好,

我试图更严格地理解多项式拟合在scikit中的工作方式。更具体地说,我想做的是分解这个过程,只显示一个具有基于单个值生成的新多项式特征的数据帧。

所以我有一些数据,有几个条目,每个条目都是一维的。我想生成一个适合多项式拟合的设计矩阵。我目前正在做的是:

pd.DataFrame(PolynomialFeatures(k).fit_transform(X))

这是意料之中的事。

然而,我正在努力解决fit_transform((的角色问题。就我而言,我还没有试图适应任何安静的东西,只是生成一个具有新构造的多项式特征的数据帧。我天真地尝试将fit_transform((更改为transform((,但显然,在允许我进行转换之前,我必须使用fit。

如果有人能指出我的错误,我将不胜感激。我还没有尝试在数据上拟合模型,只是为了创建一个具有多项式特征的设计矩阵,那么为什么我必须使用fit(((或fit_transform(((呢?事实上,我真的不明白fit((在这里到底做了什么,文档也没有帮助我理解它

谢谢!

我认为这是为了与他们的API保持一致。当进行预处理时;"适合";并将相同的预处理步骤应用于训练和测试数据。标准缩放(Standardscaling(是一个更清晰的例子(这是一个不同的预处理步骤(。根据列车数据计算平均值和std,并将相同的比例(X-平均值(/std应用于列车and测试数据(平均值和std取自列车数据(。因此,fittransform这两种方法是分开的。

在多项式特征的情况下;"适合";,因为没有从列车数据中提取信息,并且该步骤可以在不知道列车数据的情况下直接应用于测试数据。但将fit包含在PolynomialFeatures中使其与它们的整个API一致。当您管道化多个预处理步骤时,一致性就变得很必要。

最新更新