用python写出BP神经网络预测模型代码,输入一列单变量2526个时间序列数据,输出MAPE、RMSE、相关系数和最近800个时间序列预测图
时间: 2024-03-16 09:47:18 浏览: 62
好的,以下是一个简单的BP神经网络预测模型代码,输入数据为一列单变量2526个时间序列,输出包括MAPE,RMSE,相关系数和最近800个时间序列的预测图。
```python
import numpy as np
import pandas as pd
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
y = data['y'].values
X = np.array(range(1, 2527)).reshape(-1, 1)
# 划分训练集和测试集
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]
# 建立模型
model = MLPRegressor(hidden_layer_sizes=(10, 10), activation='relu', solver='adam', max_iter=1000, random_state=1)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 计算MAPE和RMSE
mape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
# 计算相关系数
corr = np.corrcoef(y_test, y_pred)[0][1]
# 绘制预测图
plt.plot(X_test[-800:], y_test[-800:], label='true')
plt.plot(X_test[-800:], y_pred[-800:], label='pred')
plt.legend(loc='upper left')
plt.show()
print('MAPE: %.2f%%' % mape)
print('RMSE: %.2f' % rmse)
print('Correlation coefficient: %.2f' % corr)
```
在代码中,我们使用sklearn库中的MLPRegressor类来建立BP神经网络模型,使用mean_absolute_error、mean_squared_error和r2_score等函数来计算MAPE、RMSE和相关系数,使用matplotlib库来绘制预测图。最后输出MAPE、RMSE和相关系数的值。
阅读全文