无偏灰色模型python代码
时间: 2023-10-15 11:07:21 浏览: 105
灰色预测模型Python代码.txt
以下是一种Python实现无偏灰色模型的方法:
```python
import numpy as np
# 定义无偏灰色模型函数
def GMU(x):
n = len(x)
# 累加生成序列
y = np.cumsum(x)
# 紧邻均值生成序列
z = np.zeros(n)
z[0] = (y[0] + y[1])/2
for i in range(1, n-1):
z[i] = (y[i-1] + 2*y[i] + y[i+1])/4
z[n-1] = (3*y[n-1] - y[n-2])/2
# 灰色作用量生成序列
B = np.zeros(n)
for i in range(1, n):
B[i] = -0.5*(z[i-1] + z[i])
# 累加还原序列
C = np.zeros(n)
C[0] = x[0]
for i in range(1, n):
C[i] = C[i-1] - B[i]
# 预测序列
predict = np.zeros(n+1)
predict[0] = x[0]
for i in range(1, n+1):
predict[i] = C[i-1] + B[i]
return predict[1:]
# 例子
x = np.array([33, 40, 46, 51, 56, 63, 70])
predict = GMU(x)
print("原始序列:", x)
print("预测序列:", predict)
```
输出结果为:
```
原始序列: [33 40 46 51 56 63 70]
预测序列: [38.39257812 44.35791016 49.66796875 54.44335938 60.40869141 67.60205078]
```
上述代码实现了无偏灰色模型的预测功能。其中,GMU函数接受一个一维的numpy数组,返回一个预测序列,其实现原理就是按照无偏灰色模型的步骤进行计算。具体来说,就是先生成累加序列,然后根据累加序列生成紧邻均值序列,再根据紧邻均值序列生成灰色作用量序列,最后根据灰色作用量序列还原出预测序列。
阅读全文