【问题标题】:Iterativelly Calculate in Separate Array in Loop在循环中以单独的数组迭代计算
【发布时间】:2021-05-27 09:27:46
【问题描述】:

我需要数组,一个用于预测,另一个用于真实值。

预测:

array([[ 0.01365575,  0.01523909],
   [-0.00044139,  0.00269908],
   [ 0.03240077,  0.02496629],
   [ 0.03238605,  0.03045709],
   [ 0.03226778,  0.02878774],
   [ 0.03238199,  0.03221421]])

真正的价值:

array([[0.01212121, 0.01529052],
   [0.        , 0.0030581 ],
   [0.01818182, 0.01559633],
   [0.00757576, 0.007263  ],
   [0.00757576, 0.00382263],
   [0.00757576, 0.01070336]])

我正在尝试使用以下公式计算 mae 和 rmse 的标准:

std_error = (1/n * sum(error_i- mean_error)^2)^1/2

到目前为止,我正在尝试使用 mae 和 rmse 值增量创建一个数组,但没有成功。我正在实施这个:

for x in range(len(preds)):
    mae_std = (preds[:,0] - trues[['t1']])/x

for x in range(len(preds)):
    rmse_std = (((trues[['t2']] - preds[:,1])**2)/x)**1/2 

这种方式永远不会结束,不知道为什么。 我希望结果是一个包含错误增量值的数组,然后我可以尝试在std_error 公式中使用它们。 我究竟做错了什么?有没有办法更快地实现我所描述的?

【问题讨论】:

  • 您可以直接索引数组并计算相同吗? np.mean((preds[:,1] - trues[:,1])**2) 之类的东西(只是一个例子)或者你也可以使用 scikit learn metric 子模块。 scikit-learn.org/stable/modules/generated/…

标签: python arrays pandas numpy jupyter


【解决方案1】:

假设您的 2 个数组正在对 (x,y) 坐标进行建模,您可以按如下方式计算 mse / mae:

# compute MSE
mse = np.square(preds - real)
mse = np.sum(mse, axis = 1) / mse.shape[1]

# compute MAE
mae = np.sum(np.abs(preds - real), axis = 1) / mse.shape[1]

您可以调整您的特定公式以匹配这些...

【讨论】:

  • 这会返回一个数字。它不应该为每个样本返回一个错误值数组吗?因为我想把它们放在error_istd_error 公式中。
  • 如果您的初始 pred & real 数组的大小为 (n, 2),那么这将返回一个大小为 (n, 1) 的数组
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 2012-10-27
  • 2016-12-01
  • 2011-09-07
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
相关资源
最近更新 更多