gm11灰色预测模型python
时间: 2023-10-28 11:00:05 浏览: 166
灰色预测,灰色预测模型,Python源码.zip
5星 · 资源好评率100%
嗨!对于使用Python实现GM(1,1)灰色预测模型,你可以按照以下步骤进行操作:
1. 导入所需的库:
```
import numpy as np
import matplotlib.pyplot as plt
```
2. 定义GM(1,1)灰色预测函数:
```
def gm11(x):
n = len(x)
# 累加生成
cum_x = np.cumsum(x)
# 紧邻均值生成
z = (cum_x[:-1] + cum_x[1:]) / 2.0
# 紧邻均值级比生成
B = np.append(-z.reshape((n-2, 1)), np.ones_like(z.reshape((n-2, 1))), axis=1)
Y = x[1:].reshape((n-1, 1))
# 矩阵运算求参数
[[a], [b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
# 模型精度的后验差检验
delta = np.abs(Y - (a * z + b))
C = delta.std() / y.std()
P = 1.0 * (np.abs(delta - delta.mean()) < 0.6745 * y.std()).sum() / len(delta)
# 修正后的灰色预测模型
result = (x[0] - b / a) * np.exp(-a * (list(range(n)) - 1)) - (x[0] - b / a) * np.exp(-a * (list(range(n)) - 2))
# 预测数据
predict = np.abs(result - np.append(x[0], x[:-1])).tolist()
return result, predict, C, P
```
3. 输入数据并调用灰色预测函数进行预测:
```
x = np.array([1, 2, 3, 4, 5, 6]) # 输入数据
result, predict, C, P = gm11(x) # 调用GM(1,)灰色预测函数
```
4. 可视化结果:
```
plt.plot(list(range(len(x))), x, marker='o', label='原始数据')
plt.plot(list(range(len(x))), result, marker='o', label='预测数据')
plt.plot(list(range(len(x))), predict, marker='o', label='残差')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
```
这样,你就可以使用Python编写GM(1,1)灰色预测模型了。希望对你有所帮助!如有其他问题,请随时提问。
阅读全文