单变量时序预测python代码实现
时间: 2024-10-15 14:20:29 浏览: 34
Python实现XGBoost时间序列预测(完整源码和数据)
5星 · 资源好评率100%
在Python中,单变量时序预测通常涉及到时间序列分析和机器学习技术。这里我们可以使用简单线性回归或者更复杂的模型如ARIMA、LSTM等。下面是一个简单的例子,使用Python的pandas库处理数据,sklearn库做线性回归预测:
```python
import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
# 假设我们有一个CSV文件 'sales_data.csv' 包含日期和销售数据
df = pd.read_csv('sales_data.csv')
# 将日期转换为datetime类型并设置为索引
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
# 我们通常只取过去的数据作为训练集,并留出一部分最近的数据作为测试集
train_size = int(len(df) * 0.8)
train_data, test_data = df[:train_size], df[train_size:]
# 对销售数据进行滚动窗口预测
def rolling_window_predict(data, window=30):
model = LinearRegression()
predictions = []
for i in range(window, len(train_data)):
X = train_data.iloc[i-window:i].values.reshape(-1, 1)
y = train_data['Sales'].iloc[i]
model.fit(X, y)
pred = model.predict(np.array([test_data.iloc[i].values]).reshape(1, -1))
predictions.append(pred[0])
return predictions
# 进行预测
predictions = rolling_window_predict(train_data)
# 可视化实际值和预测值
plt.plot(test_data.index, test_data['Sales'], label='Actual')
plt.plot(test_data.index, predictions, label='Prediction')
plt.legend()
plt.show()
阅读全文