灰色预测模型

Posted h694879357

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了灰色预测模型相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/qq_39798423/article/details/89283000
import numpy as np import pandas as pd import matplotlib.pyplot as plt dir = C:/Users/Administrator/Desktop/ data = pd.read_excel(dir+test.xls, sheetname=Sheet1) data = np.array(data[db]) lens = len(data) # 数据量 # 数据检验 ## 计算级比 lambds = [] for i in range(1, lens): lambds.append(data[i-1]/data[i]) ## 计算区间 X_min = np.e**(-2/(lens+1)) X_max = np.e**(2/(lens+1)) ## 检验 is_ok = True for lambd in lambds: if (lambd < X_min or lambd > X_max): is_ok = False if (is_ok == False): print(该数据未通过检验) else: print(该数据通过检验) # 构建灰色模型GM(1,1) ## 累加数列 data_1 = [] data_1.append(data[0]) for i in range(1, lens): data_1.append(data_1[i-1]+data[i]) ## 灰导数及临值生成数列 ds = [] zs = [] for i in range(1, lens): ds.append(data[i]) zs.append(-1/2*(data_1[i-1]+data_1[i])) ## 求a、b B = np.array(zs).reshape(lens-1,1) one = np.ones(lens-1) B = np.c_[B, one] # 加上一列1 Y = np.array(ds).reshape(lens-1,1) a, b = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y) print(a=+str(a)) print(b=+str(b)) # 预测 def func(k): c = b/a return (data[0]-c)*(np.e**(-a*k))+c data_1_hat = [] # 累加预测值 data_0_hat = [] # 原始预测值 data_1_hat.append(func(0)) data_0_hat.append(data_1_hat[0]) for i in range(1, lens+5): # 多预测5次 data_1_hat.append(func(i)) data_0_hat.append(data_1_hat[i]-data_1_hat[i-1]) print(预测值为:) for i in data_0_hat: print(i) # 模型检验 ## 预测结果方差 data_h = np.array(data_0_hat[0:7]).T sum_h = data_h.sum() mean_h = sum_h/lens S1 = np.sum((data_h-mean_h)**2)/lens ## 残差方差 e = data - data_h sum_e = e.sum() mean_e = sum_e/lens S2 = np.sum((e-mean_e)**2)/lens ## 后验差比 C = S2/S1 ## 结果 if (C <= 0.35): print(1级,效果好) elif (C <= 0.5 and C >= 0.35): print(2级,效果合格) elif (C <= 0.65 and C >= 0.5): print(3级,效果勉强) else: print(4级,效果不合格) # 画图 plt.figure(figsize=(9, 4), dpi=100) x1 = np.linspace(1, 7, 7) x2 = np.linspace(1, 12, 12) plt.subplot(121) plt.title(x^0) plt.plot(x2, data_0_hat, r--, marker=*) plt.scatter(x1, data, marker=^) plt.subplot(122) plt.title(x^1) plt.plot(x2, data_1_hat, r--, marker=*) plt.scatter(x1, data_1, marker=^) plt.show()

以上是关于灰色预测模型的主要内容,如果未能解决你的问题,请参考以下文章

备战数学建模33-灰色预测模型2

灰色预测 模型GM(1,1)级比检验不在区域(exp(-2/(n+1)),exp(2/(n+1)))内,怎么处理

Matlab:数模03-灰色预测

python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导

运用自回归滑动平均模型灰色预测模型BP神经网络三种模型分别预测全球平均气温,并进行预测精度对比(附代码数据)

灰色预测模型