灰色模型马尔科夫python代码
时间: 2023-10-14 08:21:09 浏览: 148
灰色预测模型Python代码.txt
灰色系统理论(Grey System Theory,GST)是一种解决小样本、非线性、非平稳、不确定性和模糊性问题的数学理论。其中,灰色模型是GST的基础模型之一,常用于数据分析和预测。
下面是一个简单的灰色模型马尔科夫的Python代码实现:
```python
import numpy as np
def gm11(x0):
"""
灰色模型GM(1,1)的实现
:param x0: 原始序列
:return: 预测序列
"""
x1 = np.cumsum(x0) # 一次累加
z1 = (x1[: -1] + x1[1:]) / 2.0 # 紧邻均值
z1 = z1.reshape((len(z1), 1))
B = np.append(-z1, np.ones_like(z1), axis=1)
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) # 计算参数
result = (x0[0] - b / a) * np.exp(-a * np.arange(len(x0))) # 还原值
return result
def markov(x, p=0.99, n=1):
"""
马尔科夫模型的实现
:param x: 原始序列
:param p: 转移概率,默认为0.99
:param n: 预测步数,默认为1
:return: 预测序列
"""
x = np.array(x)
x_pred = []
for i in range(n):
x_pred.append(np.dot(p ** i, x))
return x_pred
def grey_markov(x0, p=0.99, n=1):
"""
灰色模型马尔科夫的实现
:param x0: 原始序列
:param p: 转移概率,默认为0.99
:param n: 预测步数,默认为1
:return: 预测序列
"""
x1 = gm11(x0) # 灰色预测
x2 = markov(x1, p, n) # 马尔科夫预测
return x2
# 示例
x = [67.9, 68.4, 69.7, 70.4, 71.2, 72.2, 72.7, 73.1, 73.6, 74.1, 74.7, 75.3, 76.1, 77.0]
x_pred = grey_markov(x, 0.99, 3)
print(x_pred) # 输出预测结果
```
该代码实现了灰色模型马尔科夫的预测功能。其中,`gm11()`函数实现灰色模型GM(1,1)的预测,`markov()`函数实现马尔科夫模型的预测,`grey_markov()`函数则将两种模型结合起来进行预测。在示例中,输入了一个包含14个数据点的序列,通过灰色模型马尔科夫对其进行了3步的预测,并输出了预测结果。
阅读全文