使用 Scikit-Learn 在管道中包含预测器
Including a Predictor in a Pipeline with Scikit-Learn
实际上这个疑问更像是——“为什么这段代码能正常工作?”。
我正在解决教科书中的问题。具体来说,问题是构建一个具有数据准备阶段(删除 NA 值、执行特征缩放等)的管道,然后是预测阶段,其中涉及在转换后的数据集上训练的预测器并返回其预测。
在这里,我们使用了支持向量回归模块 (sklearn.svm.svr)。
我尝试了一些我的代码,但没有用。于是查了一下教材作者提供的实际解决方案-
prepare_select_and_predict_pipeline = Pipeline([
('preparation', data_prep),
('svm_reg', SVR(kernel='rbf',C=30000,gamma='scale'))
])
prepare_select_and_predict_pipeline.fit(x_train,y_train)
some_data = x_train.iloc[:4]
print("Predictions for a subset of Training Set:",prepare_select_and_predict_pipeline.predict(some_data))
我试过这段代码,它确实按预期工作。
怎样才能正常工作?我的主要反对意见是:
我们只有适合数据集,但我们实际上在哪里
改造吗?我们不会在任何地方调用 transform() 函数...
此外,我们如何在此管道中使用 predict() 函数? SVR
可能是这条管道的一部分,但其他变压器也是,
而且他们没有 predict() 函数。
提前感谢您的回答!
当您在 Pipeline
上执行 fit
时,scikit-learn 在后台执行 fit_transform
预处理步骤和 fit
最后一步(分类器|回归器)。当您在 Pipeline
scikit-learn 上调用 predict
时,在预处理阶段执行 transform
并在最后一步执行 predict
。
现在,模型的定义不是最后一步,而是所有接收数据和输出结果的步骤。管道现在是一个模型。如果您使用具有管道的 GridSearchCV,并且管道具有预处理和最终步骤(回归器|分类器),那么 GridSearchCV 现在就是模型。
实际上这个疑问更像是——“为什么这段代码能正常工作?”。
我正在解决教科书中的问题。具体来说,问题是构建一个具有数据准备阶段(删除 NA 值、执行特征缩放等)的管道,然后是预测阶段,其中涉及在转换后的数据集上训练的预测器并返回其预测。
在这里,我们使用了支持向量回归模块 (sklearn.svm.svr)。
我尝试了一些我的代码,但没有用。于是查了一下教材作者提供的实际解决方案-
prepare_select_and_predict_pipeline = Pipeline([
('preparation', data_prep),
('svm_reg', SVR(kernel='rbf',C=30000,gamma='scale'))
])
prepare_select_and_predict_pipeline.fit(x_train,y_train)
some_data = x_train.iloc[:4]
print("Predictions for a subset of Training Set:",prepare_select_and_predict_pipeline.predict(some_data))
我试过这段代码,它确实按预期工作。 怎样才能正常工作?我的主要反对意见是:
我们只有适合数据集,但我们实际上在哪里 改造吗?我们不会在任何地方调用 transform() 函数...
此外,我们如何在此管道中使用 predict() 函数? SVR 可能是这条管道的一部分,但其他变压器也是, 而且他们没有 predict() 函数。
提前感谢您的回答!
当您在 Pipeline
上执行 fit
时,scikit-learn 在后台执行 fit_transform
预处理步骤和 fit
最后一步(分类器|回归器)。当您在 Pipeline
scikit-learn 上调用 predict
时,在预处理阶段执行 transform
并在最后一步执行 predict
。
现在,模型的定义不是最后一步,而是所有接收数据和输出结果的步骤。管道现在是一个模型。如果您使用具有管道的 GridSearchCV,并且管道具有预处理和最终步骤(回归器|分类器),那么 GridSearchCV 现在就是模型。