You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GridSearchCV筛选最优回归模型与缩放器接入ML流水线是否合理?

数据集说明

数据集用于预测连续浮点型结果,无分类任务,包含200个样本与50个特征。

导入库
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.linear_model import LinearRegression, Lasso
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, QuantileTransformer, MinMaxScaler,  RobustScaler
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import mean_absolute_error, mean_squared_error
实现步骤
  • 实例化测试流水线:
test_pipe = Pipeline([
    ('scaler', StandardScaler()), 
    ('model', KNeighborsRegressor())])
  • 构建参数网格并执行GridSearchCV:
param_grid = {'scaler': [MinMaxScaler(), RobustScaler(), QuantileTransformer(), StandardScaler(), 'passthrough'],
              'model': [KNeighborsRegressor(), LinearRegression(), Lasso(alpha=0.1), Lasso(alpha=0.5), GaussianProcessRegressor()],
              }
grid = GridSearchCV(test_pipe, param_grid, cv=4)
grid.fit(X_train, y_train)
print(grid.best_params_)
print(grid.score(X_test, y_test))
grid.get_params()

输出[1]:

{'model': Lasso(alpha=0.1), 'scaler': QuantileTransformer()} 
0.9843408040290395
  • 基于最优参数构建正式流水线:
pipe = Pipeline([
    ('scaler', grid.best_params_['scaler']), 
    ('model', grid.best_params_['model'])])

pipe.fit(X_train,y_train)

输出[2]:

Pipeline(steps=[('scaler', QuantileTransformer()), ('model', Lasso(alpha=0.1))])
疑问

这种方法可能存在问题,是否需要绘制各缩放器/模型组合的得分、MAE/MSE,并评估模型的欠拟合/过拟合情况?

最优模型评估结果
print(f'Score: {pipe.score(X_test, y_test)}')
print(f'MAE: {mean_absolute_error(y_test, pipe.predict(X_test))}')
print(f'MSE: {mean_squared_error(y_test, pipe.predict(X_test))}')

输出[3]:

Score: 0.9843408040290395
MAE: 13.785801047280785
MSE: 352.94279168844093

内容的提问来源于stack exchange,提问作者Drew Sanislo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:24:18