ValueError Traceback (most recent call last) Cell In[20], line 8 6 preds.append(b) 7 #calculate rmse ----> 8 rms=np.sqrt(np.mean(np.power((np.array(valid['close'])-preds),2))) 9 rms ValueError: operands could not be broadcast together with shapes (104,) (103,)这个错误怎么解决
时间: 2024-02-07 08:02:35 浏览: 155
这个错误通常是因为 `valid` 数据集中的数据点数量与预测结果的数量不匹配导致的。在这个代码中,`preds` 列表中包含了 104 个预测值,而 `valid['close']` 只包含了 103 个实际值。
要解决这个问题,您可以尝试将 `valid['close']` 的长度也改为 104,即在 `valid` 数据集的末尾添加一个空值。具体来说,您可以在计算 `preds` 列表时额外迭代一次,将最后一个预测值添加到 `valid['close']` 列表中,然后再计算 RMSE。修改后的代码如下所示:
```python
preds = [] # 初始化预测结果列表
# 循环104次,每次预测一个数据点
for i in range(0, 104):
# 计算当前数据点之前的所有实际值和之前所有预测值的总和
a = train['close'][len(train)-104+i:].sum() + sum(preds)
# 计算当前数据点的预测值,即历史平均值
b = a/104
# 将预测值添加到结果列表中
preds.append(b)
# 将最后一个预测值添加到 valid['close'] 列表中
valid.loc[len(valid)] = [np.nan]
# 计算预测结果的均方根误差
rms = np.sqrt(np.mean(np.power((np.array(valid['close'])-preds),2)))
```
在这个修改后的代码中,我们将循环次数从 103 改为 104,以便在计算 `preds` 列表时额外迭代一次。然后,我们在 `valid` 数据集的末尾添加了一个空值,以匹配 `preds` 列表的长度。最后,我们计算了修改后的预测结果的 RMSE。
希望这可以帮助您解决问题。
阅读全文