精华内容
下载资源
问答
  • 数学建模——灰色预测模型Python代码 “”" Spyder Editor This is a temporary script file. “”" import numpy as np import math history_data = [724.57,746.62,778.27,800.8,827.75,871.1,912.37,954.28,995....

    请添加图片描述

    数学建模——灰色预测模型Python代码

    “”"
    Spyder Editor

    This is a temporary script file.
    “”"
    import numpy as np
    import math

    history_data = [724.57,746.62,778.27,800.8,827.75,871.1,912.37,954.28,995.01,1037.2]
    n = len(history_data)
    X0 = np.array(history_data)

    #累加生成
    history_data_agg = [sum(history_data[0:i+1]) for i in range(n)]
    X1 = np.array(history_data_agg)

    #计算数据矩阵B和数据向量Y
    B = np.zeros([n-1,2])
    Y = np.zeros([n-1,1])
    for i in range(0,n-1):
    B[i][0] = -0.5*(X1[i] + X1[i+1])
    B[i][1] = 1
    Y[i][0] = X0[i+1]

    #计算GM(1,1)微分方程的参数a和u
    #A = np.zeros([2,1])
    A = np.linalg.inv(B.T.dot(B)).dot(B.T).dot(Y)
    a = A[0][0]
    u = A[1][0]

    #建立灰色预测模型
    XX0 = np.zeros(n)
    XX0[0] = X0[0]
    for i in range(1,n):
    XX0[i] = (X0[0] - u/a)*(1-math.exp(a))math.exp(-a(i));

    #模型精度的后验差检验
    e = 0 #求残差平均值
    for i in range(0,n):
    e += (X0[i] - XX0[i])
    e /= n

    #求历史数据平均值
    aver = 0;
    for i in range(0,n):
    aver += X0[i]
    aver /= n

    #求历史数据方差
    s12 = 0;
    for i in range(0,n):
    s12 += (X0[i]-aver)**2;
    s12 /= n

    #求残差方差
    s22 = 0;
    for i in range(0,n):
    s22 += ((X0[i] - XX0[i]) - e)**2;
    s22 /= n

    #求后验差比值
    C = s22 / s12

    #求小误差概率
    cout = 0
    for i in range(0,n):
    if abs((X0[i] - XX0[i]) - e) < 0.6754*math.sqrt(s12):
    cout = cout+1
    else:
    cout = cout
    P = cout / n

    if (C < 0.35 and P > 0.95):
    #预测精度为一级
    m = 10 #请输入需要预测的年数
    #print(‘往后m各年负荷为:’)
    f = np.zeros(m)
    for i in range(0,m):
    f[i] = (X0[0] - u/a)*(1-math.exp(a))math.exp(-a(i+n))
    else:
    print(‘灰色预测法不适用’)

    请添加图片描述

    展开全文
  • 灰色预测模型Python代码.txt
  • 灰色预测python程序.py

    2020-06-09 17:28:57
    灰色预测模型适合小样本时间序列预测。
  • 可解决灰色预测问题,里面为python代码+测试数据
  • 灰色预测模型代码

    2017-11-17 15:45:28
    灰色预测模型GM(1,n)模型的matlab源代码,包括预测模型的建立,以及模型的精度检验指标c,p的计算。
  • 利用python灰色系统进行预测适用于短期预测,对长期预测效果并不是很好。

    灰色系统

    我们称信息完全未确定的系统为黑色系统,称信息完全确定的系统为白色系统,灰色系统就是这介于这之间,一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。

    特点

    • 用灰色数学处理不确定量,使之量化。
    • 充分利用已知信息寻求系统的运动规律。
    • 灰色系统理论能处理贫信息系统。

    直接上代码

    首先引入所需要的库

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    
    data = pd.read_excel("E:/桌面/灰色预测.xlsx",sheet_name=1)
    list1 = data["序列"]
    tlist1 = [2014,2015,2016,2017,2018]

    完整代码。

    编写函数GM11(x,n)

    fy = []
    def GM11(x,n):
        '''
        灰色预测
        x:序列,numpy对象
        n:需要往后预测的个数
        '''
        x1 = x.cumsum()#一次累加  
        z1 = (x1[:len(x1) - 1] + x1[1:])/2.0#紧邻均值  
        z1 = z1.reshape((len(z1),1))  
        B = np.append(-z1,np.ones_like(z1),axis=1)  
        Y = x[1:].reshape((len(x) - 1,1))
        #a为发展系数 b为灰色作用量
        [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)#计算待估参数  
        result = (x[0]-b/a)*np.exp(-a*(n-1))-(x[0]-b/a)*np.exp(-a*(n-2))  #预测方程
        S1_2 = x.var()#原序列方差
        e = list()#残差序列
        for index in range(1,x.shape[0]+1):
            predict = (x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2))
            e.append(x[index-1]-predict)
            print(predict)    #预测值
            fy.append(predict)
        print("后验差检验")
        S2_2 = np.array(e).var()#残差方差
        C = S2_2/S1_2#后验差比
        if C<=0.35:
            assess = '后验差比<=0.35,模型精度等级为好'
        elif C<=0.5:
            assess = '后验差比<=0.5,模型精度等级为合格'
        elif C<=0.65:
            assess = '后验差比<=0.65,模型精度等级为勉强'
        else:
            assess = '后验差比>0.65,模型精度等级为不合格'
        #预测数据
        predict = list()
        for index in range(x.shape[0]+1,x.shape[0]+n+1):
            predict.append((x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2)))
        predict = np.array(predict)
      
    
        return {
                'a':{'value':a,'desc':'发展灰数'},
                'b':{'value':b,'desc':'控制灰数'},
                'predict':{'value':result,'desc':'第%d个预测值'%n},
                'C':{'value':C,'desc':assess},
                'predict':{'value':predict,'desc':'往后预测%d个的序列'%(n)},
                }
        
     
        
    if __name__ == "__main__":
        data = np.array(list1)
        x = data[0:5]#输入数据
        #y = data[0:]#需要预测的数据
        result = GM11(x,1)
        predict = result['predict']['value']
        predict = np.round(predict,1)
        #print('真实值:',x)
        print('预测值:',predict)
        print(result)
    
    print("残差检验")
    a = []
    for i in range(5):
        a.append(abs(fy[i]-list1[i]))
        print('%.5f%%' % ((abs(fy[i]-list1[i]))/list1[i]))
    print("关联度检验")
    c= []
    for i in range(5):
        b = (min(a)+0.5*max(a))/(abs(a[i])+0.5*max(a))
        c.append(b)
    print("ρ = 0.5 关联度为:",np.mean(c))
    #print(y)
    print(predict)
    fy.append(3.8)

    检验

    后验差检验,关联度检验,残差检验。解释(上面代码已经包含)

     print("后验差检验")
        S2_2 = np.array(e).var()#残差方差
        C = S2_2/S1_2#后验差比
        if C<=0.35:
            assess = '后验差比<=0.35,模型精度等级为好'
        elif C<=0.5:
            assess = '后验差比<=0.5,模型精度等级为合格'
        elif C<=0.65:
            assess = '后验差比<=0.65,模型精度等级为勉强'
        else:
            assess = '后验差比>0.65,模型精度等级为不合格'

    后验差检验检验结果判定

     关联度与残差检验。

    print("残差检验")
    a = []
    for i in range(5):
        a.append(abs(fy[i]-list1[i]))
        print('%.5f%%' % ((abs(fy[i]-list1[i]))/list1[i]))
    print("关联度检验")
    c= []
    for i in range(5):
        b = (min(a)+0.5*max(a))/(abs(a[i])+0.5*max(a))
        c.append(b)
    print("ρ = 0.5 关联度为:",np.mean(c))

    关联度检验结果大于0.6即可。

    输出结果。

     对结果与源数据进行对比

    #作图
    import numpy as np
    import matplotlib.pyplot as plt
    x1 = np.array([2014,2015,2016,2017,2018])
    y1 = np.array(x)
    x2 = np.array([2014,2015,2016,2017,2018,2019])
    y2 = np.array(fy)
    
    plt.plot(x1,y1,'r*-',label='真实值曲线')   #真实值
    plt.plot(x2,y2,'b+-',label='预测值曲线')   #预测值
    plt.xlabel('年份')
    plt.ylabel('值')
    plt.legend()
    plt.plot()
    plt.show()

     利用python对灰色系统进行预测适用于短期预测,对长期预测效果并不是很好。若需要长期预测可使用ARIMA(p,d,q)模型。

    展开全文
  • 对于一个热衷于编程的人,看到这个想起了我实训做的预测模型,(但这个模型的代码是比较简单的,如果你学了numpy,pandas的基础,并了解一下numpy的矩阵运算即可),所以编程实现的必须的。import numpy as np ...

    游戏没做出来,关于pygame制作游戏,虽然已经搞到了素材库(图片),但还缺少一些素材库(数据)如果自己算的话,可能很难,又没找比较好的测量工具,所以对于做地图的话就很难了,加上对于一个比较好的小游戏需要进行面向对象编程,所以需要开始设计好所以的元素(但我又不太熟悉),需要一定的编写经验才可以编出来。所以我还需要对面向对象编程进行进一步的学习加上对于pygame一些函数进行学习才有能力编写出来。(但以后一定会做出这样来的,暂时先放置在这吧)

    太难了

    但我也不能什么都不写的,所以更好今天在数学建模导师学长(感谢学长,花自己周末时间来教我们知识)学到一个预测趋势的模型。接下来我就把它的使用方法讲述出来吧,我会尽量讲的详细,加上我遇到的问题和理解,希望对大家有帮助。

    首先,这个模型叫做灰色模型——特点:小数据建模,不用考虑其内部因素

    比如:给出你4个数据15.1,15.4,15.3,15.8(要求前后比值较小,具体多小可以自己了解下)那么下一个数字是多少,我们可以通过这个模型预测出来,第5个数字按这个模型可能的数据。

    第一步:需要生产三个数据序列,用于后面的计算

    PS:注意这里的z是由累加序列

    进行前后相加取均值求出来的而不是原序列

    前后取均值求出来的.

    第二步:我将给出预测公式并给出计算方法。(我觉得大家可以先了解怎么用,在去了解一下原理是什么)

    第三步:我将给出参数a,b的计算方法。(涉及到矩阵与第一步求出的数据)

    PS:注意这里的x是原序列

    的x并且是第二个开始,两个矩阵都是n-1行.

    将a,b代入即可得到预测的数据,想要了解更加深入可以看下面我找的资料。数学建模灰色模型 - 百度文库​wenku.baidu.com灰色模型_百度百科​baike.baidu.com

    接下来就完了吗,不存在的。

    对于一个热衷于编程的人,看到这个想起了我实训做的预测模型,(但这个模型的代码是比较简单的,如果你学了numpy,pandas的基础,并了解一下numpy的矩阵运算即可),所以编程实现的必须的。import numpy as np

    import pandas as pd

    import math

    df = pd.read_excel("美国_GDP_1947-2020.xlsx",index_col='序号')

    array1 = df['美国:GDP:现价:折年数'].values[3:7][::-1]

    array2 = np.cumsum(array1)

    array3 = pd.Series(array2).rolling(2,axis=0).mean().dropna().values[::-1]

    B = np.c_[(-array3),[1 for i in range(len(array3))]]

    Y = array1[1:]

    u = (np.linalg.inv(B.T.dot(B)).dot(B.T)).dot(Y)

    a=u[0]

    b=u[1]

    x_t=(array1[0]-b/a)math.exp(-a* len(array1))+b/a

    x(0)_t=x_t-np.sum(array1)

    其中

    =np.linalg.inv(B)来求逆,B.T来求转置,AB=A.dot(B)或者是np.dot(A,B).

    对于求前后均值用Series.rolling(2).mean(),即表示它本身加上他前面的那个值的平均值,如果是第一个的话(由于前面没值)则为空,后面去掉空即留下n-1个数。

    我实现的代码图片将如下:导入并查看

    昨天团建(讲个好玩的事情,昨天团建玩狼人杀最后一盘,我从开始就被一个狼跳预言家的人骗了,骗的我帮她除了真的预言家,又帮她除了几个平民,但最后公布莫名其妙狼人获胜的时候人都傻了,几乎全部人都被三狼骗了,但感觉我是被骗的最惨的因为她说她第一晚查的是我,我坚信不疑。。。),加上晚上回来在做游戏又没做出个东西,所以昨天没更新。

    今天的如果有什么问题,或者需要数据想做的话可以找我,我可以提供帮助。

    Hope you can learn something from my writing。

    展开全文
  • 【数学建模】灰色预测Python实现

    万次阅读 多人点赞 2019-03-14 15:52:49
    关键词:灰色预测、Python、pandas、numpy 一、前言 ...用等时距观测到的反映预测对象特征的一系列数量(如产量、销量、人口数量、存款数量、利率等)构造灰色预测模型,预测未来某一时刻的特...

    关键词:灰色预测、Python、pandas、numpy

    一、前言

      本文的目的是用Python和类对灰色预测进行封装

    二、原理简述

    1.灰色预测概述

      灰色预测是用灰色模型GM(1,1)来进行定量分析的,通常分为以下几类:
        (1) 灰色时间序列预测。用等时距观测到的反映预测对象特征的一系列数量(如产量、销量、人口数量、存款数量、利率等)构造灰色预测模型,预测未来某一时刻的特征量,或者达到某特征量的时间。
        (2) 畸变预测(灾变预测)。通过模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。
        (3) 波形预测,或称为拓扑预测,它是通过灰色模型预测事物未来变动的轨迹。
        (4) 系统预测,对系统行为特征指标建立一族相互关联的灰色预测理论模型,在预测系统整体变化的同时,预测系统各个环节的变化。
      上述灰色预测方法的共同特点是:
        (1)允许少数据预测;
        (2)允许对灰因果律事件进行预测,例如:
          灰因白果律事件:在粮食生产预测中,影响粮食生产的因子很多,多到无法枚举,故为灰因,然而粮食产量却是具体的,故为白果。粮食预测即为灰因白果律事件预测。
          白因灰果律事件:在开发项目前景预测时,开发项目的投入是具体的,为白因,而项目的效益暂时不很清楚,为灰果。项目前景预测即为灰因白果律事件预测。
        (3)具有可检验性,包括:建模可行性的级比检验(事前检验),建模精度检验(模型检验),预测的滚动检验(预测检验)。

     

    2.GM(1,1)模型理论

      GM(1,1)模型适合具有较强的指数规律的数列,只能描述单调的变化过程。已知元素序列数据:x^{(0)}=(X^{(0)}(1),X^{(0)}(2),...,X^{(0)}(n))

    做一次累加生成(1-AGO)序列:

    x^{(1)}=(X^{(1)}(1),X^{(1)}(2),...,X^{(1)}(n))
    其中

    x^{(1)}(k)=\sum_{i=1}^kx^{(0)}(i), \quad k=1,...,n

    Z^{(1)}X^{(1)}的紧邻均值生成序列:

    Z^{(1)}=(z^{(1)}(2), z^{(1)}(3), ...,z^{(1)}(n))

    其中,

    z^{(1)}(k)=0.5x^{(1)}(k)+0.5x^{(1)}(k-1)

    建立GM(1,1)的灰微分方程模型为:

    x^{(0)}(k)+az^{(1)}(k)=b

    其中,a为发展系数,b为灰色作用量。设\hat{a}为待估参数向量,即\hat{a}=(a,b)^T,则灰微分方程的最小二乘估计参数列满足\hat{a}=(B^TB)^{-1}B^TY_n

    其中

    B=\left[ \begin{matrix} -z^{(1)}(2) , 1 \\ -z^{(1)}(3) , 1 \\ ... , ... \\ -z^{(1)}(n) , 1 \end{matrix}\right], Y_n=\left[ \begin{matrix} x^{(0)}(2)\\ x^{(0)}(3) \\ ... , \\ x^{(0)}(n) \end{matrix}\right]
    再建立灰色微分方程的白化方程(也叫影子方程):

    \frac{dx^{(1)}}{dt}+ax^{(1)}=b

    白化方程的解(也叫时间响应函数)为

    \hat{x}^{(1)}(t)=(x^{(1)}(0)-\frac{b}{a})e^{-at}+\frac{b}{a}

    那么相应的GM(1,1)灰色微分方程的时间响应序列为:

    \hat{x}^{(1)}(k+1) = [x^{(1)}(0)-\frac{b}{a}]e^{-at}+\frac{b}{a}x^{(1)}(0)=x^{(0)}(1)

    \hat{x}^{(1)}(k+1)=[x^{(0)}(1)-\frac{b}{a}]e^{-ak}+\frac{b}{a},\quad k=1,....n-1

    再做累减还原可得

    \hat{x}^{(0)}(k+1)=\hat{x}^{(1)}(k+1)-\hat{x}^{(1)}(k)=[x^{(0)}(1)-\frac{b}{a}](1-e^a)e^{-ak}, \quad k=1,...,n-1即为预测方程。

    注1:原始序列数据不一定要全部使用,相应建立的模型也会不同,即ab不同;

    注2:原始序列数据必须要等时间间隔、不间断。

    3.算法步骤

    (1) 数据的级比检验
      为了保证灰色预测的可行性,需要对原始序列数据进行级比检验。
      对原始数据列X^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(3))

    计算序列的级比:\lambda(k)=\frac{x^{0}(k-1)}{x^{(0)}(k)}, \quad k=2,...,n  

    若所有的级比\lambda(k)都落在可容覆盖\Theta=(e^{-2/(n+1)},e^{2/(n+2)})内,则可进行灰色预测;否则需要对X^{(0)}做平移变换,Y^{(0)}=X^{(0)}+c,使得Y^{(0)}满足级比要求。

    (2) 建立GM(1,1)模型,计算出预测值列。

    (3) 检验预测值:

    ① 相对残差检验,计算

    \varepsilon(k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)}, \quad k=2,...,n  

    \varepsilon(k)<0.2 ,则认为达到一般要求,若\varepsilon(k)<0.1 ,则认为达到较高要求;

    ② 级比偏差值检验

      根据前面计算出来的级比\lambda(k), 和发展系数a, 计算相应的级比偏差:

    \rho(k)=1-(\frac{1-0.5a}{1+0.5a})]\lambda(k)  

    \rho(k)<0.2, 则认为达到一般要求,若\rho(k)<0.1, 则认为达到较高要求。

    (4) 利用模型进行预测。

    三、程序实现

    1.引入需要的包

    import pandas as pd
    import numpy as np
    
    %matplotlib inline
    import matplotlib.pyplot as plt
    import matplotlib
    matplotlib.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
    matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
    

      下面的matplotlib是作图用的,如果不做图可以不用引入

    2.构建大致框架

      灰色建模的主体应该分为几步:
        (1)引入、整理数据
        (2)校验数据是否合格
        (3)GM(1,1)建模
        (4)将最新的预测数据当做真实值继续预测
        (5)输出结果
      因此打好的框架如下:

    class GrayForecast():
    #初始化
        def __init__(self, data, datacolumn=None):
            pass
    #级比校验
        def level_check(self):
            pass
    #GM(1,1)建模
        def GM_11_build_model(self, forecast=5):
            pass
    #预测
        def forecast(self, time=5, forecast_data_len=5):
            pass
    #打印日志
        def log(self):
            pass
    #重置
        def reset(self):
            pass
    #作图
        def plot(self):
            pass
    

    3.__init__

      作为初始化的方法,我们希望它能将数据格式化存储,并且可使用的类型越多越好,在这里我先实现能处理三种类型:一维列表、DataFrame、Series。如果处理DataFrame可能会出现不止一维的情况,于是设定一个参数datacolumn,用于处理传入DataFrame不止一列数据到底用哪个的问题

    def __init__(self, data, datacolumn=None):
    
        if isinstance(data, pd.core.frame.DataFrame):
            self.data=data
            try:
                self.data.columns = ['数据']
            except:
                if not datacolumn:
                    raise Exception('您传入的dataframe不止一列')
                else:
                    self.data = pd.DataFrame(data[datacolumn])
                    self.data.columns=['数据']
        elif isinstance(data, pd.core.series.Series):
            self.data = pd.DataFrame(data, columns=['数据'])
        else:
            self.data = pd.DataFrame(data, columns=['数据'])
    
        self.forecast_list = self.data.copy()
    
        if datacolumn:
            self.datacolumn = datacolumn
        else:
            self.datacolumn = None
        #save arg:
        #        data                DataFrame    数据
        #        forecast_list       DataFrame    预测序列
        #        datacolumn          string       数据的含义
    

    4.level_check

      按照级比校验的步骤进行,最终返回是否成功的bool类型值

    def level_check(self):
        # 数据级比校验
        n = len(self.data)
        lambda_k = np.zeros(n-1)
        for i in range(n-1):
            lambda_k[i] = self.data.ix[i]["数据"]/self.data.ix[i+1]["数据"]
            if lambda_k[i] < np.exp(-2/(n+1)) or lambda_k[i] > np.exp(2/(n+2)):
                flag = False
        else:
            flag = True
    
        self.lambda_k = lambda_k
    
        if not flag:
            print("级比校验失败,请对X(0)做平移变换")
            return False
        else:
            print("级比校验成功,请继续")
            return True
    
    #save arg:
    #        lambda_k            1-d list
    

    5.GM_11_build_model

      按照GM(1,1)的步骤进行一次预测并增长预测序列(forecast_list)
      传入的参数forecast为使用forecast_list末尾数据的数量,因为灰色预测为短期预测,过多的数据反而会导致数据精准度变差

    def GM_11_build_model(self, forecast=5):
        if forecast > len(self.data):
            raise Exception('您的数据行不够')
        X_0 = np.array(self.forecast_list['数据'].tail(forecast))
    #       1-AGO
        X_1 = np.zeros(X_0.shape)
        for i in range(X_0.shape[0]):
            X_1[i] = np.sum(X_0[0:i+1])
    #       紧邻均值生成序列
        Z_1 = np.zeros(X_1.shape[0]-1)
        for i in range(1, X_1.shape[0]):
            Z_1[i-1] = -0.5*(X_1[i]+X_1[i-1])
    
        B = np.append(np.array(np.mat(Z_1).T), np.ones(Z_1.shape).reshape((Z_1.shape[0], 1)), axis=1)
        Yn = X_0[1:].reshape((X_0[1:].shape[0], 1))
    
        B = np.mat(B)
        Yn = np.mat(Yn)
        a_ = (B.T*B)**-1 * B.T * Yn
    
        a, b = np.array(a_.T)[0]
    
        X_ = np.zeros(X_0.shape[0])
        def f(k):
            return (X_0[0]-b/a)*(1-np.exp(a))*np.exp(-a*(k))
    
        self.forecast_list.loc[len(self.forecast_list)] = f(X_.shape[0])
    

    6.forecast

      预测函数只要调用GM_11_build_model就可以,传入的参数time为向后预测的次数,forecast_data_len为每次预测所用末尾数据的条目数

    def forecast(self, time=5, forecast_data_len=5):
        for i in range(time):
            self.GM_11_build_model(forecast=forecast_data_len)
    

    7.log

      打印当前预测序列

    def log(self):
        res = self.forecast_list.copy()
        if self.datacolumn:
            res.columns = [self.datacolumn]
        return res
    

    8.reset

      初始化序列

    def reset(self):
        self.forecast_list = self.data.copy()
    

    9.plot

      作图

    def plot(self):
        self.forecast_list.plot()
        if self.datacolumn:
            plt.ylabel(self.datacolumn)
            plt.legend([self.datacolumn])
    

    四、使用

      首先读入数据,最近11年的电影票房

    f = open("电影票房.csv", encoding="utf8")
    df = pd.read_csv(f)
    df.tail()
    

    11条数据

     

      构建灰色预测对象,进行10年预测输出结果并作图

    gf = GrayForecast(df, '票房')
    gf.forecast(10)
    gf.log()
    

    原来的11条数据+10条预测结果

    gf.plot()
    

    全体数据作图

    五、总结

      我们看数据的后面几条,高达数千万,或许10年前我们也想不到现在的电影票房是曾经原来的20倍。
      这么快的增长已经接近指数增长了,然而它很可能就像人口一样,它并非是指数增长,而是没有达到增速减少的阈值罢了,用灰色预测很难看到如此长远的情况,或许可以将数据改为用sigmoid函数拟合,或许能达到更加准确的结果。

     

    sigmoid函数



    作者:crossous
    链接:https://www.jianshu.com/p/a35ba96d852b
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    https://blog.csdn.net/qq547276542/article/details/77865341/

    展开全文
  • [TOC]程序简介利用灰色预测GM11模型预测股票收盘价,由于灰色预测模型适合短期预测和小样本,所以程序输入数据为5个,输出为1个,进行动态建模 程序输入:原序列、需要往后预测的个数 程序输出:预测值、模型结构(后...
  • 超级干货:一文读懂灰色预测模型

    千次阅读 2020-12-06 13:39:18
    灰色预测模型可针对数量非常少(比如仅4个),数据完整性和可靠性较低的数据序列进行有效预测,其利用微分方程来充分挖掘数据的本质,建模所需信息少,精度较高,运算简便,易于检验,也不用考虑分布规律或变化趋势等...
  • 灰色预测模型GM(1,1)的全面讲解及python实现

    万次阅读 多人点赞 2020-05-27 10:21:03
    1. 灰色预测的概念 (1)灰色系统、白色系统和黑色系统 白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的。 黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联系来...
  • GM(1,1)模型灰色预测模型 ( Gray Forecast Model )是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法当我们应用运筹学的思想方法解决实际问题,制定发展战略和政策、进行重大问题的决策时,都...
  • 转载并整理自: ...灰色关联度分析 # -*- coding: utf-8 -*- from sklearn.preprocessing import StandardScaler import pandas as pd import numpy as np import os ... '''灰色关联度分析模型''' d
  • 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式...用等时距观测到的反映预测对象特征的一系列数量(如产量、销量、人口数量、存款数量、利率等)构造灰色预测模型,预测未来某一时...
  • 人口预测模型灰色预测

    千次阅读 2020-12-06 13:39:19
    灰色理论概况社会、经济、农业、工业、生态、生物等许多系统,是根据研究对象所属的领域和范围命名的,而灰色系统却是按颜色命名的。用“黑’’表示信息未知,用“白”表示信息完全明确,用“灰"表示部分信息明确、...
  • 利用python实现灰色预测GM(1,1)

    千次阅读 2020-07-19 15:51:23
    GM(1,1)预测模型 GM(1,1)表示模型是一阶微分方程,且只含1个预测变量的灰色模型。造成一个一个结果的原因是多种多样的,他们占的权重我们有时也是无从只晓得的,但是再不出现意外的情况下,我们可以用结果去估计结果...
  • 现在我想做的事,对这个矩阵数列进行灰色预测![图片说明](https://img-ask.csdn.net/upload/202007/08/1594175232_278413.png)像这种,请问应该怎样input呢?才能让矩阵在这个文件中实现灰色预测
  • python 实现灰色预测模型GM(1,1)及新陈代谢GM(1,1)

    千次阅读 热门讨论 2021-01-06 15:42:14
    python 实现灰色预测模型GM(1,1)及新陈代谢GM(1,1) 新陈代谢GM(1,1)预测 新陈代谢GM(1,1)也叫做等维灰数递补动态GM(1,1)。灰色预测模型GM(1,1)的简介就不再多叙述,其优点及缺点在其他博文中均有所体现(可参考:...
  • 灰色预测,灰色预测模型,Python源码
  • python版多变量灰色预测

    千次阅读 2018-10-12 17:08:47
    应同学邀请,运行程序生成多变量灰色预测结果。因为很久没用过MATLAB,对它不熟,遂花了点时间,把该程序转成python版的。 原版MATLAB程序(省略部分注释): clc,clear all; format long g; fprintf(2, 'OBGM(1,...
  • 降水量的灰色马尔科夫预测模型,霍贝,,降水过程中既表现出灰色秉性,同时也有强烈的随机性。灰色GM(1,1)模型不适合长期的、随机和波动性较大的数据系列预测,但是马�
  • 为揭示灰色Verhulst 模型的建模精度在系统原始特征序列数乘变换前后的变化规律, 降低其建模复杂性, 研 究了灰色Verhulst 模型的建模参数在系统原始特征序列经过数乘变换前后的量化关系以及数乘变换对该模型建模...
  • 灰色预测分类及特点二、灰色预测模型GM(1,1)1.几个理论1.1 累加生成数(1-AGO)1.2 累减生成数(IAGO)1.3 邻值生成数2.GM(1,1)2.1 灰微分方程模型2.2 白化方程3.算法步骤3.1 数据的检验与处理3.2 建立模型,求出预测...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,218
精华内容 887
关键字:

灰色预测模型python

python 订阅