使用python构建灰色预测模型的代码
时间: 2023-11-12 14:45:12 浏览: 169
下面是使用Python构建灰色预测模型的示例代码:
```python
import numpy as np
# 灰色预测模型
class GM():
def __init__(self):
self.a = 0.5 # 灰色关联系数
# 累加生成序列
def cumulate(self, s):
return np.cumsum(s)
# 紧邻均值生成序列
def mean(self, s):
return (s[:-1] + s[1:]) / 2
# 灰色预测模型主函数
def predict(self, s):
n = len(s)
cum_s = self.cumulate(s)
mean_s = self.mean(s)
B = np.column_stack((-0.5 * (cum_s[1:] + cum_s[:-1]), np.ones(n - 1)))
Y = s[1:]
a, b = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
self.a = a
self.b = b
return (s[0] - b / a) * np.exp(-a * np.arange(n))
# 预测未来k个值
def forecast(self, s, k):
last = s[-1]
res = [last]
for i in range(k - 1):
cur = self.a * last + self.b
res.append(cur)
last = cur
return res
# 示例
s = np.array([13,15,16,18,19,20,21,22,23,25,27,29])
model = GM()
predict_res = model.predict(s)
forecast_res = model.forecast(s, 5)
print(predict_res)
print(forecast_res)
```
这个灰色预测模型的实现使用了累加生成序列、紧邻均值生成序列和灰色预测模型主函数三个方法,其中,灰色关联系数a是模型的一个参数,可以通过主函数计算得到。predict方法用于预测已有数据的趋势,而forecast方法则用于预测未来的趋势。
阅读全文