写python代码,读取一个csv文件,一共有30行,记录了从2023年4月1日到4月30日的人数,索引列是‘日期’、另一列是‘当日人数’。 利用SARIMA模型选取从4月1日到21日的数据,对公园人数做回归分析, 然后用4月22日到30日的数据做测试,并对测试结果进行准确率和误差估计,把预测结果加到dateframe的第三列,输出到一个新的csv文件里。把模型拟合出来的模型参数也写到一个文件里
时间: 2023-12-21 13:05:35 浏览: 128
Draft 2019-04-25 04:23:44-数据集
以下是Python代码实现:
```python
import pandas as pd
from statsmodels.tsa.statespace.sarimax import SARIMAX
from sklearn.metrics import mean_absolute_error, mean_squared_error
# 读取csv文件
df = pd.read_csv('data.csv', index_col='日期')
# 选取从4月1日到21日的数据
train_data = df.loc['2023-04-01':'2023-04-21', '当日人数']
# SARIMA模型训练
model = SARIMAX(train_data, order=(2, 1, 2), seasonal_order=(0, 1, 1, 7)).fit()
# 输出模型参数
with open('model_params.txt', 'w') as f:
f.write(str(model.params))
# 对4月22日到30日的数据进行预测
test_data = df.loc['2023-04-22':'2023-04-30', '当日人数']
pred_data = model.predict(start='2023-04-22', end='2023-04-30')
# 计算准确率和误差
mae = mean_absolute_error(test_data, pred_data)
mse = mean_squared_error(test_data, pred_data)
accuracy = 1 - mae / test_data.mean()
# 将预测结果加到dataframe的第三列
df['预测人数'] = model.predict(start='2023-04-01', end='2023-04-30')
# 输出到新的csv文件
df.to_csv('result.csv')
```
在这个例子中,我们首先读取了一个csv文件,并选取了从4月1日到21日的数据,然后使用SARIMA模型对数据进行训练。接着,我们使用模型去预测4月22日到30日的人数,并计算准确率和误差。最后,我们将预测结果加到原始dataframe的第三列,并输出到一个新的csv文件,同时也将模型参数写入到一个文件中。
阅读全文