二次featurizer:使用fittransform进行预处理



下面的例子是用Python编写的,取自《掌握机器学习》一书。

任务概述:

  • 训练数据存储在列向量X_train(特征)和y_train[响应变量]中
  • 用于测试的数据分别存储在X_testy_test中
  • 现在使用多项式回归(在本例中为二次回归)将模型拟合到训练数据

作者的方法(不包括导入和数据初始化):

quad_featurizer = PolynomialFeatures(degree=2)
X_train_quad = quad_featurizer.fit_transform(X_train)
X_test_quad = quad_featurizer.transform(X_test)
regressor_quad = LinearRegression()
regressor_quad.fit(X_train_quad, y_train)

作者没有评论代码,也没有告诉更多关于所使用方法的信息。由于scikit-learn API也不能给我一个满意的答案,我想问你。

为什么我要使用fit_transform而不仅仅是transform来预处理训练数据我的意思是,实际的拟合是用regression _quad对象完成的,所以fit_transform是多余的,不是吗?

scikit的那些特征化器必须根据您的特定数据集进行调整,然后才能将其转换为新的特征向量。CCD_ 1执行该调整。因此,您需要首先调用fit(),然后调用transform(),或者通过fit_transform()同时调用两者。

在您的示例中,PolynomialFeatures用于将训练数据投影到新的更高维空间中。因此向量(3, 6)将变为(1, 3, 6, 3*3, 3*6, 6*6)。在fit()中,PolynomialFeatures学习训练向量的大小,在fit()0中,它从旧的训练向量创建新的训练向量。因此CCD_ 11是一个新的矩阵,其形状不同于CCD_。之后,对X_test也进行了同样的操作,但PolynomialFeatures已经知道向量的大小,因此不必再次为fit()。然后,LinearRegression通过其fit()方法在新的训练数据(X_train_quad)上进行训练,该方法与PolynomialFeatures完全分离,因此其fit()PolynomialFeaturesfit()实际上没有任何关系。

相关内容

  • 没有找到相关文章

最新更新