可是为什么剔除原来第一行数据之后你没有把新预测的数据加入进来呢?
时间: 2024-03-08 12:48:52 浏览: 14
很抱歉,我的代码有误。在剔除原来输入的第一行数据之后,应该将预测结果添加到新的一行中。以下是修改后的代码:
```python
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
# 准备数据
data = pd.DataFrame({
'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
'B': [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40],
'C': [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60]
})
# 滑动窗口大小
window_size = 20
# 预测次数
predict_steps = 10
# 初始化预测结果
predictions = []
# 循环预测
for i in range(predict_steps):
# 取出最新的20行数据
window = data[-window_size:]
# 分离输入和输出
X = window.iloc[:, :-3].values
y = window.iloc[:, -3:].values
# 创建线性回归模型
model = LinearRegression()
# 拟合模型
model.fit(X, y)
# 进行预测
prediction = model.predict(data.iloc[-1, :-3].values.reshape(1, -1))
# 将预测结果添加到predictions中
predictions.append(prediction)
# 将预测结果添加到data中
data = data.append(pd.Series(prediction[0], index=data.columns[:-3]), ignore_index=True)
# 剔除原来输入的第一行数据
data = data.iloc[1:]
# 输出预测结果
print(predictions[-1])
```
在每次循环中,我们使用`append`方法将预测结果添加到`data`的最后一行。然后,剔除原来输入的第一行数据,保证滑动窗口大小不变。