python中的灰色序列预测模型代码
时间: 2023-11-12 17:47:42 浏览: 71
以下是一个简单的Python灰色序列模型的实现,包括预测和绘图:
``` python
import numpy as np
import matplotlib.pyplot as plt
def GM11(x0):
# 累加生成
x1 = np.cumsum(x0)
# 紧邻均值平均生成
z1 = (x1[:len(x1) - 1] + x1[1:]) / 2.0
# 级比计算
y = x0[1:]
B = np.array([[-z1[i], 1] for i in range(len(z1))])
Y = np.array(y).reshape((len(y), 1))
# 计算GM系数
a = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
# 还原值
x1 = np.zeros(len(x0))
x1[0] = x0[0]
for i in range(1, len(x1)):
x1[i] = (x0[0] - a[0] / a[1]) * np.exp(-a[1] * (i)) + a[0] / a[1]
# 预测值
predict = [(x0[0] - a[0] / a[1]) * np.exp(-a[1] * (i + len(x0))) + a[0] / a[1] for i in range(5)]
return x1, predict
if __name__ == "__main__":
# 数据
x0 = np.array([120, 135, 152, 148, 151, 165, 171, 174])
# GM(1,1)模型
x1, predict = GM11(x0)
# 绘图
plt.plot(range(len(x0)), x0, 'r', label='Original')
plt.plot(range(len(x0)), x1, 'g', label='Predict')
plt.plot(range(len(x0), len(x0) + 5), predict, 'b', label='Future')
plt.legend(loc='upper right')
plt.show()
```
代码实现了一个简单的GM(1,1)模型,用于预测未来五个时期的数据,并绘制了原始数据、预测值和未来预测值的图形。
阅读全文