灰色理论,由python实现。
greytheor的Python项目详细描述
关于
灰色理论系统是指系统内部各种因素之间的不确定关系,这种系统中一部分信息是已知的,另一部分是未知的。该理论有三种方法:GM0N、GM1N、GM11。在
Grey Relational Analysis灰色系統理論灰色關聯分析灰色預測法《Grey system theory-based models in time series prediction》2009.改良式 GM(1,1)灰預測模型於台電電量需求預測之研究
如何开始
导入
fromgrey_theoryimportGreyTheorygrey=GreyTheory()
GM0N
^{pr2}$GM1N
gm1n=grey.gm1ngm1n.add_outputs([2.,11.,1.5,2.,2.2,3.],"x1")gm1n.add_patterns([3.,13.5,1.,3.,3.,4.],"x2")gm1n.add_patterns([2.,11.,3.5,2.,3.,2.],"x3")gm1n.add_patterns([4.,12.,2.,1.,2.,1.],"x4")gm1n.add_patterns([1.,10.,5.,2.,1.,1.],"x5")gm1n.analyze()# Looks GM1N the results as below:gm1n.print_analyzed_results()"""Pattern key: 'x1', grey value: 1.4385641363407546, ranking: 0Pattern key: 'x2', grey value: 1.3300049398977922, ranking: 1Pattern key: 'x4', grey value: 0.6084241725675539, ranking: 2Pattern key: 'x3', grey value: 0.5977013008400084, ranking: 3Pattern key: 'x5', grey value: 0.19277457599259723, ranking: 4"""gm1n.print_influence_degrees()"""The keys of parameters their influence degrees (ordering): 'x2 > x4 > x3 > x5'"""
GM11
gm11=grey.gm11gm11.add_pattern(223.3,"a1")gm11.add_pattern(227.3,"a2")gm11.add_pattern(230.5,"a3")gm11.add_pattern(238.1,"a4")gm11.add_pattern(242.9,"a5")gm11.add_pattern(251.1,"a6")gm11.forecast(2)# Default is 1, the parameter means how many next moments need to forcast continually.# Looks GM11 the results for example as below:gm11.print_forecasted_results()"""K = 1From original value 227.3 to forecasted value is 226.08736263692822The error rate is 0.005334964201811667K = 2From original value 230.5 to forecasted value is 231.87637984134398The error rate is 0.005971279138151739K = 3From original value 238.1 to forecasted value is 237.81362611881437The error rate is 0.0012027462460547044K = 4From original value 242.9 to forecasted value is 243.9028969077225The error rate is 0.00412884688234865K = 5From original value 251.1 to forecasted value is 250.14808482949547The error rate is 0.003790980368397134K = 6Forcated next moment value is 256.55318217699795K = 7Forcated next moment value is 263.1222834666411Forcated next moment value is 283.85614494317775The average error rate 0.0040857633673527785"""
GM11卷积预测
# Convolutional forecasting of GM11, forecast_convolution(stride, length)gm11.forecast_convolution(1,4)# To record last forecasted result.last_forecasted_results=gm11.forecasted_outputs# To clean all forecasted results. gm11.clean_forecasted()# In next iteration of forecasting, we wanna continue use last forecasted results to do next forecasting, # but if we removed gm11.forecasted_outputs list before, # we can use continue_forecasting() to extend / recall the last forecasted result come back to be convolutional features. gm11.continue_forecasting(last_forecasted_results)
Z的α
# For example, if you wanna customize alpha value to reduce error-rate of prediction before calculate AGO, # Directly try to setup the alpha value before start .analyze() and .forecast().gm11.alpha=0.8gm11.add_pattern()gm11.forecast()
多处理
- 将gm0n、gm1n或gm11的对象放入它们自己的数组中。在
- 运行特定功能包括:灰色.run.gm0n(阵列),灰色.run.gm1n(阵列)或灰色.run.gm11(数组)。在
- 枚举数组或枚举。运行.gm0n(), .运行.gm1n()和。运行.gm11()返回数组。在
# multiprocessing examples:# for GM0N, GM1Nqueue=[]queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())queue.append(gm0n.deepcopy())grey.run.gm0n(queue)forgminqueue:gm.print_influence_degrees()
# for GM11gm11_queue=[]gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())gm11_queue.append(gm11.deepcopy())grey.run.gm11(gm11_queue)forgmingm11_queue:gm.print_forecasted_results()
版本
1.3版
许可证
麻省理工学院。在
注意
GM11:
- 项目
标签: