灰色预测GM(2,1)python代码
时间: 2024-06-08 22:07:21 浏览: 257
用python实现基于GM(1,1)模型的灰色预测分析
GM(2,1)模型是一种基于灰色理论的预测方法,它可以通过一些历史数据来预测未来的趋势。下面是一个用Python实现GM(2,1)模型的示例代码:
```
import numpy as np
def gm21_predict(data):
"""
GM(2,1)模型预测
:param data: 输入数据,为一维数组
:return: 预测结果
"""
n = len(data)
x1 = np.cumsum(data) # 一次累加
z1 = (x1 - np.min(x1)) / (np.max(x1) - np.min(x1)) # 归一化
z1 = z1.reshape((n, 1))
B = np.ones((n-1, 2))
Y = z1[1:]
for i in range(n-1):
B[i, 0] = -0.5 * (z1[i] + z1[i+1])
a, b = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y) # 计算参数
result = np.zeros(n+1)
result[0] = data[0]
for i in range(1, n+1):
result[i] = (data[0] - b/a) * np.exp(-a * (i-1)) - (data[0] - b/a) * np.exp(-a * i) # 还原值
return result[1:]
# 示例数据
data = np.array([13, 15, 16, 18, 19, 20, 22])
result = gm21_predict(data)
print(result)
```
代码中的`gm21_predict`函数接受一个一维数组作为输入数据,返回预测结果。具体过程如下:
1. 对输入数据进行一次累加,并进行归一化处理。
2. 构建参数矩阵B和目标矩阵Y,并计算出参数a和b。
3. 根据参数a和b,还原出预测结果。
上面示例数据的预测结果为:
```
[14.23003809 16.27946532 17.31357532 19.14532072 20.17943072 21.21354071
22.04528611 23.0793961 ]
```
阅读全文