二次特征化器:使用 fit_transform 进行预处理
quadratic featurizer: preprocessing with fit_transform
下面的例子写在Python中,摘自书Mastering Machine Learning。
任务概览:
- 训练数据存储在列向量X_train(特征)和y_train(响应变量)中
- 用于测试的数据分别存放在X_test和y_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 来预处理训练数据? 我的意思是实际拟合是用 regressor_quad 对象完成的,所以 fit_transform 是多余的,是不是不是吗?
scikit 的那些特征化器必须根据您的特定数据集进行调整,然后才能将其转换为新的特征向量。 fit()
执行该调整。因此,您需要先调用 fit()
,然后调用 transform()
,或通过 fit_transform()
.
同时调用两者
在您的示例中,PolynomialFeatures
用于将您的训练数据投影到新的更高维度 space。因此向量 (3, 6)
将变为 (1, 3, 6, 3*3, 3*6, 6*6)
。在 fit()
中,PolynomialFeatures
学习训练向量的大小,在 transform()
中,它从旧训练向量创建新的训练向量。所以 X_train_quad
是一个新的矩阵,其形状不同于 X_train
。之后对 X_test
进行相同的操作,但是 PolynomialFeatures
已经知道向量的大小,因此不必再次 fit()
。 LinearRegression
然后通过其 fit()
方法在您的新训练数据 (X_train_quad
) 上进行训练,该方法与 PolynomialFeatures
完全分离,因此其 fit()
不会确实与 PolynomialFeatures
的 fit()
有关。
下面的例子写在Python中,摘自书Mastering Machine Learning。
任务概览:
- 训练数据存储在列向量X_train(特征)和y_train(响应变量)中
- 用于测试的数据分别存放在X_test和y_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 来预处理训练数据? 我的意思是实际拟合是用 regressor_quad 对象完成的,所以 fit_transform 是多余的,是不是不是吗?
scikit 的那些特征化器必须根据您的特定数据集进行调整,然后才能将其转换为新的特征向量。 fit()
执行该调整。因此,您需要先调用 fit()
,然后调用 transform()
,或通过 fit_transform()
.
在您的示例中,PolynomialFeatures
用于将您的训练数据投影到新的更高维度 space。因此向量 (3, 6)
将变为 (1, 3, 6, 3*3, 3*6, 6*6)
。在 fit()
中,PolynomialFeatures
学习训练向量的大小,在 transform()
中,它从旧训练向量创建新的训练向量。所以 X_train_quad
是一个新的矩阵,其形状不同于 X_train
。之后对 X_test
进行相同的操作,但是 PolynomialFeatures
已经知道向量的大小,因此不必再次 fit()
。 LinearRegression
然后通过其 fit()
方法在您的新训练数据 (X_train_quad
) 上进行训练,该方法与 PolynomialFeatures
完全分离,因此其 fit()
不会确实与 PolynomialFeatures
的 fit()
有关。