在这两段代码中计算的 mean_squared_error 有什么区别?如何比较 metric='mse' 和 mean_squared_error?

what is the difference between the mean_squared_error computed in both of these pieces of code? how can I compare metric='mse' to mean_squared_error?

rf_reg = RandomForestRegressor(
n_estimators=500, 
max_depth=30,                             
criterion="mse",                               
max_features=6,                              
n_jobs=-1,                             
random_state=1)

rf_reg.fit(x_train, y_train)

train_pred_y = rf_reg.predict(x_train)
test_pred_y = rf_reg.predict(x_test)

print(f"train_MSE = {mean_squared_error(y_train, train_pred_y)}")
print(f"test_MSE = {mean_squared_error(y_test, test_pred_y)}")

automl.fit(X_train, y_train, task="regression",metric='mse',time_budget=3600)

metric= 'mse' 和 'mean_squared_error' 是相同的 "function"(应该是别名,但这只是一个猜测)。

您的 .fit() 函数中的 mean_squared_error(y_train, train_pred_y)metric='mse' 应该打印出完全相同的结果。

metric='mse' 正在做的,只是在 train-dataset 上打印当前模型的 MSE,你的模型在训练 运行 的每个时期都达到了。例如,您可以将其更改为 MAE(平均绝对误差)函数,因此您的训练输出中有第二个指标,而不是相同的两倍;)

看起来可能与此类似:

Epoch 1/15
108/108 [==============================] - 4s 19ms/step - loss: 0.0173 - mse: 0.0173
Epoch 2/15
108/108 [==============================] - 1s 14ms/step - loss: 0.0143 - mse: 0.0143
...

print(f"train_MSE = {mean_squared_error(y_train, train_pred_y)}") 正在再次打印 MSE(应该等于上次训练时期已经打印的 MSE)。

在最后一行中再次计算了 MSE,但这次模型对测试集进行了预测。因此 train_MSEtest_MSE 应该/将有所不同。

最后但同样重要的是 criterion="mse" 是 loss-function 您的模型在训练期间试图最小化 ;)