记录目标时使用交叉验证在未记录的空间中进行 RMSE 计算



我是python的新手,在记录目标时很难通过交叉验证计算RMSE。

我以以下方式定义了 RMSE 函数(当未记录目标时(:

def rmse_cv(model):
rmse= np.sqrt(-cross_val_score(model, X_train_s, Y_train,  scoring="neg_mean_squared_error", cv = 5))
return(rmse)
model_ridge = Ridge()
alphas = [0.005, 0.05, 0.1, 0.3, 1, 3, 5, 10, 15]
cv_ridge = [rmse_cv(Ridge(alpha = alpha)).mean() for alpha in alphas]
print(cv_ridge)

现在,我想用记录的目标Y_log_train替换Y_train,并计算未记录空间中的 RMSE。我不确定在进行交叉验证时如何做到这一点。

如果我必须针对一个 alpha 值运行模型并在训练数据上获取 RMSE,我将按照以下步骤操作:

model_ridge = Ridge(alpha =10).fit(X_train_s, Y_log_train)
y_pred_log_r = model_ridge.predict(X_train_s)
y_pred_r = np.exp(y_pred_log_r)
RMSE_ridge_train =np.sqrt(mean_squared_error(Y_train, y_pred_r))

好吧,您只需获得日志值的 RMSE。您不能说对数值的残差与观测值是真实值和观测值的残差的对数。

如果记录转换变量,则 RMSE 只是转换变量的 RMSE。

编辑:发现这可以澄清更多 https://stats.stackexchange.com/questions/56658/how-do-you-interpret-rmsle-root-mean-squared-logarithmic-error

最新更新