MLPRegressor 给出的预测比其他回归器差得多

MLPRegressor is giving far worse predictions than other regressors

我正在测试所有的 sklearn 回归器:

[compose.TransformedTargetRegressor(), AdaBoostRegressor(), BaggingRegressor(), ExtraTreesRegressor(), GradientBoostingRegressor(), RandomForestRegressor(), HistGradientBoostingRegressor(), LinearRegression(), Ridge(), RidgeCV(), SGDRegressor(), ARDRegression(), BayesianRidge(), HuberRegressor(), RANSACRegressor(), TheilSenRegressor(), PoissonRegressor(), TweedieRegressor(), PassiveAggressiveRegressor(), KNeighborsRegressor(), MLPRegressor(), svm.LinearSVR(), svm.NuSVR(), svm.SVR(), tree.DecisionTreeRegressor(), tree.ExtraTreeRegressor(), xgb.XGBRegressor(), xgb.XGBRFRegressor()]

在 iris 数据集上,我很困惑为什么 MLPRegressor 不工作。我在给定其他 3 个特征的情况下预测萼片长度,每个具有默认超参数的回归器的测试数据 MAE 为 0.25 至 0.34,MLPRegressor 除外,其 MAE 为 1.0!我尝试过缩放和超参数调整等操作,但 MLPRegressor 总是非常不准确。

编辑: 将 eschibli 的代码与我的代码进行比较后,我发现问题出在我的缩放器上。我正在使用此代码

scaler = StandardScaler()
scaler.fit(X)
X = scaler.transform(X)

虽然默认超参数非常不适合此类问题,但我在第一个 运行 中获得了 0.32 的 MAE(在五次尝试中将随机种子产生的值从 0.29 变为 0.55 .) 我希望选择一个(多得多!)更小的隐藏层、缩放数据、and/or 调整正则化参数会产生更好、更一致的结果。

X = iris.data[:, 1:]  # sepal length is the first feature
y = iris.data[:, 0]

X_train, X_test, y_train, y_test = train_test_split(X, y)
model = MLPRegressor() 
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(mean_absolute_error(y_test, y_pred))
# > 0.3256431821425728

也许您可以分享您的其余代码?