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

如何获取所有调优参数及其对应的训练集与验证集分数?

问题解决:参数调优结果的DataFrame构建错误

错误原因

GridSearchCV会对传入的参数列表做笛卡尔积组合,你的参数组合数是2(rate)*3(l2)*3(size)=18组,所以result_tr和result_va的长度都是18。但你直接用原参数列表(长度分别为2、3、3)去构建DataFrame,必然出现长度不匹配的错误。

解决方案

直接从grid.cv_results_中提取对应参数的取值列,这些列的长度和训练/验证分数列完全一致。

修正后的完整代码

from sklearn.neural_network import MLPRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split, GridSearchCV  # 补充导入GridSearchCV
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import pandas as pd  # 补充导入pandas

X, y = make_regression(n_samples=200, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)

pipe = Pipeline([
     ('std', StandardScaler()),
     ('reg', MLPRegressor(random_state=1234, max_iter=500)),  # 把max_iter移到这里,避免冗余定义
 ])

rate = [0.01, 0.1]
l2 = [0.1, 0.5, 0.05]
size = [(5,1), (10,5,2), (10,)]
params={"reg__learning_rate_init":rate,
        "reg__alpha":l2,
        "reg__hidden_layer_sizes":size}

grid = GridSearchCV(pipe, param_grid=params, cv=4, return_train_score=True, scoring="neg_mean_squared_error")
grid.fit(X_train,y_train)

# 从cv_results_中提取参数和分数
result = pd.DataFrame({
    "learn_rate": grid.cv_results_['param_reg__learning_rate_init'],
    "regularize": grid.cv_results_['param_reg__alpha'],
    "size": grid.cv_results_['param_reg__hidden_layer_sizes'],
    "MSE-train": -grid.cv_results_['mean_train_score'],
    "MSE-valid": -grid.cv_results_['mean_test_score']
})

# 可选:查看结果
print(result)

额外说明

  • 代码中补充了GridSearchCV和pandas的导入,修复了原代码中冗余定义reg = MLPRegressor(...)的问题,将max_iter移到Pipeline的MLPRegressor中。
  • cv_results_中包含所有交叉验证的细节,你也可以提取其他字段(比如std_train_score、rank_test_score等)丰富结果报告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:10:26