提问人:pay mia 提问时间:10/25/2023 更新时间:10/28/2023 访问量:22
当两个矩阵在 Python 代码中包含 Nan 值时计算 RMSE
Calculate RMSE in two matrix when they include Nan value in Python Code
问:
我是使用 Python 代码的初学者,当两个矩阵包含 Nan 值时,我在计算两个矩阵中的 RMSE 时遇到了问题。
例如,我有两个矩阵,其中包括几列具有 Nan 值。如何计算每列的 RMSE 值?
X = 形状为 (1500, 27) 的 ndarray,y = 形状为 (1500, 27) 的 ndarray
任何帮助将不胜感激。
我试图计算它,但我每次都得到 Nan 值。因此,任何帮助将不胜感激。
答:
0赞
sixtytrees
10/25/2023
#1
你的 ndarray 非常小。因此,只需遍历行和列并使用
import numpy as np
arr1 = np.array([[1, 2, 10, 50, -np.nan, 0, np.nan],[1, 2, 10, 30, -np.nan, 0, np.nan]])
arr2 = np.array([[5, 2, 10, 50, 10, 0, np.nan],[1, 2, 10, 50, -np.nan, 0, np.nan]])
for i in range(arr1.shape[0]):
rmse = 0
skipped_cells = 0
for j in range(arr1.shape[1]):
if np.isnan(arr1[i, j]) or np.isnan(arr2[i, j]):
skipped_cells += 1
continue
rmse += (arr1[i,j] - arr2[i,j])**2
print((rmse/(arr1.shape[1]-skipped_cells))**(1/2))
现在,如果你正在使用更大的数组,而你的瓶颈就是这部分 - 寻找集合操作。简要。使用 ,然后应用在两个数组中用零替换。然后计算 rmse。最后,更正某些值为 nan 的事实。即乘以一行长度的 sqrt,然后除以np.isnan
np.where
nan
(np.sum(is_not_nan))**0.5
下一个:时间戳处价格的标签返回 Nan
评论
not nan
skipped_cells