最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Python灰色預測模型實現(xiàn)示例

 更新時間:2023年02月15日 10:35:49   作者:fanstuck  
這篇文章主要為大家介紹了Python灰色預測模型實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

博主參與過大大小小十次數(shù)學建模比賽,也獲得了不少建模獎項。對于一些小批量樣本數(shù)據(jù)去做預測或者是評估其規(guī)律性的話,比較適合的模型一般都是選擇灰色預測模型。該模型解釋性強而且易于理解,建模手段也比較簡單。在一些不確定是否存在相關標量或者是存在位置特征的時候,用灰色預測模型尤為明顯,牽扯太多變量時候可以以量曾量減的方式顯現(xiàn)其變化規(guī)律,是建模比較好用的算法和思路。但是首先我們要明白該模型的使用場景以及優(yōu)缺點才能更好的解釋建模的效果。故為接下來的美賽,我將把一些常用建模的模型和代碼補上。

一、模型理論

灰色預測模型是通過少量的、不完全的信息,建立數(shù)學模型做出預測的一種預測方法。是基于客觀事物的過去和現(xiàn)在的發(fā)展規(guī)律,借助于科學的方法對未來的發(fā)展趨勢和狀況進行描述和分析,并形成科學的假設和判斷。

我們稱信息完全未確定的系統(tǒng)為黑色系統(tǒng),稱信息完全確定的系統(tǒng)為白色系統(tǒng),灰色系統(tǒng)就是這介于這之間,一部分信息是已知的,另一部分信息是未知的,系統(tǒng)內各因素間有不確定的關系。

不知道大家知不知道白盒測試和黑盒測試,我們可以這樣通俗的理解,黑色系統(tǒng)就好比一個黑色的盒子你看不到里面裝著幾個小球,從里面拿出幾個小球或者是章魚都是未知數(shù)。而白色系統(tǒng)就像是透明的盒子,你能很清楚的看到里面是什么你想要拿什么出來拿多少個。而這個灰色系統(tǒng)介于他們之間,盒子是灰色的,只能模糊的看到一些小球,看不到幾個或者是有除了小球以外的其他東西。

灰色預測通過鑒別系統(tǒng)因素之間發(fā)展趨勢的相異程度,即進行關聯(lián)分析,并對原始數(shù)據(jù)進行生成處理來尋找系統(tǒng)變動的規(guī)律,生成有較強規(guī)律性的數(shù)據(jù)序列,然后建立相應的微分方程模型,從而預測事物未來發(fā)展趨勢的狀況。其用等時距觀測到的反映預測對象特征的一系列數(shù)量值構造灰色預測模型,預測未來某一時刻的特征量,或達到某一特征量的時間。

特點

  • 用灰色數(shù)學處理不確定量,使之量化。
  • 充分利用已知信息尋求系統(tǒng)的運動規(guī)律。
  • 灰色系統(tǒng)理論能處理貧信息系統(tǒng)。

二、模型場景

1.預測種類

  • 灰色時間序列預測;即用觀察到的反映預測對象特征的時間序列來構造灰色預測模型,預測未來某一時刻的特征量,或達到某一特征量的時間。
  • 畸變預測;即通過灰色模型預測異常值出現(xiàn)的時刻,預測異常值什么時候出現(xiàn)在特定時區(qū)內。
  • 系統(tǒng)預測;通過對系統(tǒng)行為特征指標建立一組相互關聯(lián)的灰色預測模型,預測系統(tǒng)中眾多變量間的相互協(xié)調關系的變化。
  • 拓撲預測;將原始數(shù)據(jù)作曲線,在曲線上按定值尋找該定值發(fā)生的所有時點,并以該定值為框架構成時點序列,然后建立模型預測該定值所發(fā)生的時點。

2.適用條件

灰色預測模型可針對數(shù)量非常少(比如僅4個),數(shù)據(jù)完整性和可靠性較低的數(shù)據(jù)序列進行有效預測,其利用微分方程來充分挖掘數(shù)據(jù)的本質,建模所需信息少,精度較高,運算簡便,易于檢驗,也不用考慮分布規(guī)律或變化趨勢等。但灰色預測模型一般只適用于短期預測,只適合指數(shù)增長的預測,比如人口數(shù)量,航班數(shù)量,用水量預測,工業(yè)產值預測等。

三、建模流程

總體建模流程可以參考:

1.級比校驗

trong>數(shù)據(jù)累加和微分方程構造

3.系數(shù)求解

數(shù)據(jù)向量Y:

 4.殘差檢驗與級比偏差檢驗

四、Python實例實現(xiàn)

我們通過得到的周數(shù)擁堵車輛數(shù)據(jù)進行測試:

import numpy as np
import pandas as pd
from decimal import *
import matplotlib.pyplot as plt
def Grade_ratio_test(X0):
    lambds = [X0[i - 1] / X0[i] for i in range(1, len(X0))]
    X_min = np.e ** (-2 / (len(X0) + 1))
    X_max = np.e ** (2 / (len(X0) + 1))
    for lambd in lambds:
        if lambd < X_min or lambd > X_max:
            print('該數(shù)據(jù)未通過級比檢驗')
            return False
    print('該數(shù)據(jù)通過級比檢驗')
    return True
def model_train(X0_train):
    #AGO生成序列X1
    X1 = X0_train.cumsum()
    Z= (np.array([-0.5 * (X1[k - 1] + X1[k]) for k in range(1, len(X1))])).reshape(len(X1) - 1, 1)
    # 數(shù)據(jù)矩陣A、B
    A = (X0_train[1:]).reshape(len(Z), 1)
    B = np.hstack((Z, np.ones(len(Z)).reshape(len(Z), 1)))
    # 求灰參數(shù)
    a, u = np.linalg.inv(np.matmul(B.T, B)).dot(B.T).dot(A)
    u = Decimal(u[0])
    a = Decimal(a[0])
    print("灰參數(shù)a:", a, ",灰參數(shù)u:", u)
    return u,a
def model_predict(u,a,k,X0):
    predict_function =lambda k: (Decimal(X0[0]) - u / a) * np.exp(-a * k) + u / a 
    X1_hat = [float(predict_function(k)) for k in range(k)]
    X0_hat = np.diff(X1_hat)
    X0_hat = np.hstack((X1_hat[0], X0_hat))
    return X0_hat
'''
根據(jù)后驗差比及小誤差概率判斷預測結果
:param X0_hat: 預測結果
:return:
'''
def result_evaluate(X0_hat,X0):
    S1 = np.std(X0, ddof=1)  # 原始數(shù)據(jù)樣本標準差
    S2 = np.std(X0 - X0_hat, ddof=1)  # 殘差數(shù)據(jù)樣本標準差
    C = S2 / S1  # 后驗差比
    Pe = np.mean(X0 - X0_hat)
    temp = np.abs((X0 - X0_hat - Pe)) < 0.6745 * S1    
    p = np.count_nonzero(temp) / len(X0)  # 計算小誤差概率
    print("原數(shù)據(jù)樣本標準差:", S1)
    print("殘差樣本標準差:", S2)
    print("后驗差比:", C)
    print("小誤差概率p:", p)
if __name__ == '__main__':
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 步驟一(替換sans-serif字體)
    plt.rcParams['axes.unicode_minus'] = False  # 步驟二(解決坐標軸負數(shù)的負號顯示問題)
        # 原始數(shù)據(jù)X
    data = pd.read_excel('./siwei_day_traffic.xlsx')
    X=data[data['week_day']=='周五'].jam_num[:5].astype(float).values
    print(X)
    # 訓練集
    X_train = X[:int(len(X) * 0.7)]
    # 測試集
    X_test = X[int(len(X) * 0.7):]
    Grade_ratio_test(X_train)  # 判斷模型可行性
    a,u=model_train(X_train)  # 訓練
    Y_pred = model_predict(a,u,len(X),X)  # 預測
    Y_train_pred = Y_pred[:len(X_train)]
    Y_test_pred = Y_pred[len(X_train):]
    score_test = result_evaluate(Y_test_pred, X_test)  # 評估
    # 可視化
    plt.grid()
    plt.plot(np.arange(len(X_train)), X_train, '->')
    plt.plot(np.arange(len(X_train)), Y_train_pred, '-o')
    plt.legend(['負荷實際值', '灰色預測模型預測值'])
    plt.title('訓練集')
    plt.show()
    plt.grid()
    plt.plot(np.arange(len(X_test)), X_test, '->')
    plt.plot(np.arange(len(X_test)), Y_test_pred, '-o')
    plt.legend(['負荷實際值', '灰色預測模型預測值'])
    plt.title('測試集')
    plt.show()

總結

模型優(yōu)點:數(shù)據(jù)少且無明顯規(guī)律時可用,利用微分方程挖掘數(shù)據(jù)本質規(guī)律。

模型缺點:灰色預測只適合短期預測、指數(shù)增長的預測。

以上就是一文詳解Python灰色預測模型實現(xiàn)示例的詳細內容,更多關于Python灰色預測模型的資料請關注腳本之家其它相關文章!

相關文章

  • django如何通過類視圖使用裝飾器

    django如何通過類視圖使用裝飾器

    這篇文章主要介紹了django如何設計裝飾器過濾黑名單,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • pyinstaller打包遇到的問題解決

    pyinstaller打包遇到的問題解決

    本文主要介紹了pyinstaller打包遇到的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 一文帶你玩轉Python中的倒排索引

    一文帶你玩轉Python中的倒排索引

    倒排索引是一種索引機制,廣泛應用于信息檢索和數(shù)據(jù)庫系統(tǒng)中,本文主要為大家介紹了Python中倒排索引的原理與實戰(zhàn),感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • Python+OpenCV實現(xiàn)圖像識別替換功能詳解

    Python+OpenCV實現(xiàn)圖像識別替換功能詳解

    OpenCV-Python是一個Python庫,旨在解決計算機視覺問題。本文將利用Python+OpenCV實現(xiàn)圖像識別替換功能,感興趣的小伙伴可以動手嘗試一下
    2022-07-07
  • Python 中數(shù)組和數(shù)字相乘時的注意事項說明

    Python 中數(shù)組和數(shù)字相乘時的注意事項說明

    這篇文章主要介紹了Python 中數(shù)組和數(shù)字相乘時的注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Python3.6連接Oracle數(shù)據(jù)庫的方法詳解

    Python3.6連接Oracle數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Python3.6連接Oracle數(shù)據(jù)庫的方法,較為詳細的分析了cx_Oracle模塊安裝及Python3.6使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫的具體操作步驟與相關注意事項,需要的朋友可以參考下
    2018-05-05
  • python實現(xiàn)的登錄與提交表單數(shù)據(jù)功能示例

    python實現(xiàn)的登錄與提交表單數(shù)據(jù)功能示例

    這篇文章主要介紹了python實現(xiàn)的登錄與提交表單數(shù)據(jù)功能,結合實例形式分析了Python表單登錄相關的請求與響應操作實現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • Python Flask全棧項目實戰(zhàn)構建在線書店流程

    Python Flask全棧項目實戰(zhàn)構建在線書店流程

    這篇文章主要為大家介紹了Python Flask全流程全棧項目實戰(zhàn)之在線書店構建實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • python 深入了解GIL鎖詳細

    python 深入了解GIL鎖詳細

    這篇文章主要介紹了python 深入了解GIL鎖,python的使用者都知道Cpython解釋器有一個弊端,真正執(zhí)行時同一時間只會有一個線程執(zhí)行,這是由于設計者當初設計的一個缺陷,里面有個叫GIL鎖的,但他到底是什么,接下來和小編一起進入下面文章詳細內容吧
    2021-10-10
  • Python中pygal繪制雷達圖代碼分享

    Python中pygal繪制雷達圖代碼分享

    這篇文章主要介紹了Python中pygal繪制雷達圖代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

资源县| 龙山县| 白沙| 油尖旺区| 吉首市| 新蔡县| 临漳县| 陈巴尔虎旗| 蕲春县| 赤水市| 册亨县| 郁南县| 莎车县| 五华县| 梅州市| 盐边县| 樟树市| 伊宁县| 文登市| 江源县| 凭祥市| 延吉市| 房产| 乐东| 尉氏县| 丽水市| 申扎县| 曲沃县| 澄迈县| 寻甸| 石嘴山市| 花莲市| 大英县| 固安县| 阳西县| 班戈县| 镇宁| 大庆市| 子洲县| 博白县| 屏边|