AttributeError Traceback (most recent call last) Cell In[34], line 21 19 preds_valid = [] 20 for i in range(0, len(preds) - 102): ---> 21 a = preds[i:i+103].sum() 22 b = a/103 23 preds_valid.append(b) AttributeError: 'list' object has no attribute 'sum'错误怎么解决
时间: 2024-02-14 14:05:38 浏览: 81
【Python】AttributeError: ‘AutoSchema’ object has no attribute ‘get_link’
5星 · 资源好评率100%
这个错误提示表明 `list` 对象没有 `sum` 属性。和之前提到的类似,这是因为在 Python 3 中只有 `tuple` 和 `list` 可以进行求和操作,而 `list` 对象本身没有 `sum` 属性。
要解决这个问题,可以将 `list` 对象转换为 `numpy` 数组,然后再进行求和操作。你可以使用 `numpy` 的 `array` 函数将 `list` 转换为 `numpy` 数组,例如:
```python
import numpy as np
preds = [1, 2, 3, 4, 5]
preds_np = np.array(preds)
sum_preds = preds_np.sum()
```
如果你需要将 `preds` 列表切片后再求和,可以这样写:
```python
import numpy as np
preds = [1, 2, 3, 4, 5]
preds_np = np.array(preds)
preds_slice = preds_np[1:4]
sum_slice = preds_slice.sum()
```
因此,在你的代码中,你需要将 `preds` 列表转换为 `numpy` 数组,然后再进行求和操作。你可以使用以下代码:
```python
import numpy as np
# define 'train' and 'valid' variables first
# make predictions
preds = []
for i in range(0,103):
a = train['close'][len(train)-103+i:].sum() + sum(preds)
b = a/103
preds.append(b)
# calculate RMSE
valid = [...] # define 'valid' variable first
preds_np = np.array(preds)
sum_preds = preds_np.sum()
preds_valid = []
for i in range(0, len(preds) - 102):
preds_slice = preds_np[i:i+103]
sum_slice = preds_slice.sum()
b = sum_slice / 103
preds_valid.append(b)
rms = np.sqrt(np.mean(np.power((np.array(valid['close'])-preds_valid),2)))
```
这样就可以避免上述错误了。
阅读全文