**
python 实现新陈代谢灰色预测模型简单版
之前写了一个用python实现新陈代谢灰色预测模型GM(1,1)的代码,很多小伙伴问我要代码。但之前的代码写的比较复杂,可以参考我之前的代码,链接:https://blog.csdn.net/qq_35794085/article/details/112275248,并且有很多东西可能在实际预测时,何需这么复杂,大可不必写那么多,虾面我把代码简单化了。所以,我把简单的代码贴上来,大家参考一下吧。
import numpy as np
'''
GM function 是传统的灰色预测模型,网上代码挺多的,可以自己根据需要去改
参数x是原始数据列表
参数year是你要预测的年份数,我一次只预测一年,那么year = 1
'''
def GM(x, year):
###我这里就不把传统的GM代码放上来了,返回第一次预测值给新陈代谢GM就好。
return x_predict #返回预测值,供新城代谢GM使用
'''
XCDX_GM function 是新陈代谢灰色预测模型
参数x是原始数据列表
x_predict 是利用GM模型得到的预测值,然后根据你的需要自己可以改下面贴的代码,year只能是1.
'''
def XCDX_GM(x, x_predict, year):
new_x_predict = []
new_x_predict = x_predict
for i in range(5): #循环预测5年的数据,你自己在这里改吧,想预测几年,就range(几年)。
del x[0]
x.append(new_x_predict[-1])
new_x_predict = GM(x, year)
new_x_predict = list(new_x_predict)
print(type(new_x_predict))
print("this is predict value of i-th for XCDX_GM :",i)
for j in range(len(new_x_predict)):
print(j,round(new_x_predict[j],3))
if __name__ == '__main__':
x= [1,2,3,4,5,6,7,8,9,10,11,12] #改成你的数据就好了
year = 1 #每次只预测后一年的数据,再将其加入前面的原始值的最后一个,再剔除原始序列的第一个值
x_predict = GM(x, year)
for value in x_predict:
print(round(value,3))
XCDX_GM(x, x_predict, year)
#######就这样吧,这个模型可以根具自己的需要改进,例如用加权灰色预测等等。欢迎大家一起交流
|