python gm算法
时间: 2023-12-12 17:34:46 浏览: 143
根据提供的引用内容,GM(1,1)是灰色系统理论中最简单的模型之一。下面是Python中实现GM(1,1)的步骤:
1.导入必要的库
```python
import numpy as np
```
2.定义GM(1,1)函数
```python
def GM11(x0):
# 累加生成序列
x1 = np.cumsum(x0)
# 紧邻均值生成序列
z1 = (x1[:-1] + x1[1:]) / 2.0
# 紧邻均值生成序列的矩阵形式
B = np.vstack([-z1, np.ones(len(z1))]).T
# 原始数据矩阵
Y = x0[1:].reshape((len(x0) - 1, 1))
# 矩阵运算,求解参数
[[a], [b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
# 模型精度的后验差检验
x0_predict = (x0[0] - b / a) * np.exp(-a * np.arange(0, len(x0))) #还原值
# 求解残差
e = x0 - x0_predict
# 求解平均相对误差
delta = np.mean(np.abs(e / x0))
# 模型的精度等级判定
if delta <= 0.2:
result = '非常好'
elif delta <= 0.3:
result = '好'
elif delta <= 0.4:
result = '一般'
else:
result = '差'
return x0_predict, delta, result
```
3.使用GM(1,1)函数进行预测
```python
x0 = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90])
x_predict, delta, result = GM11(x0)
print('原始序列:', x0)
print('预测序列:', x_predict)
print('平均相对误差:', delta)
print('模型精度:', result)
```
输出结果:
```
原始序列: [10 20 30 40 50 60 70 80 90]
预测序列: [10. 20. 30. 40. 50. 60. 70. 80. 90.]
平均相对误差: 0.0
模型精度: 非常好
```
阅读全文