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

python構建指數(shù)平滑預測模型示例

 更新時間:2019年11月21日 15:44:50   作者:AlanConstantineLau  
今天小編就為大家分享一篇python構建指數(shù)平滑預測模型示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

指數(shù)平滑法

其實我想說自己百度的…

只有懂的人才會找到這篇文章…

不懂的人…看了我的文章…還是不懂哈哈哈

指數(shù)平滑法相比于移動平均法,它是一種特殊的加權平均方法。簡單移動平均法用的是算術平均數(shù),近期數(shù)據(jù)對預測值的影響比遠期數(shù)據(jù)要大一些,而且越近的數(shù)據(jù)影響越大。指數(shù)平滑法正是考慮了這一點,并將其權值按指數(shù)遞減的規(guī)律進行分配,越接近當前的數(shù)據(jù),權重越大;反之,遠離當前的數(shù)據(jù),其權重越小。指數(shù)平滑法按照平滑的次數(shù),一般可分為一次指數(shù)平滑法、二次指數(shù)平滑法和三次指數(shù)平滑法等。然而一次指數(shù)平滑法適用于無趨勢效應、呈平滑趨勢的時間序列的預測和分析,二次指數(shù)平滑法多適用于呈線性變化的時間序列預測。

具體公式還是百度吧…

材料

1.python3.5

2.numpy

3.matplotlib

4.國家社科基金1995-2015年立項數(shù)據(jù)

需求

預測2016年和2017年國家社科基金項目立項數(shù)量

數(shù)據(jù)

#year time_id number
1994 1 10
1995 2 3
1996 3 27
1997 4 13
1998 5 12
1999 6 13
2000 7 14
2001 8 23
2002 9 32
2003 10 30
2004 11 36
2005 12 40
2006 13 58
2007 14 51
2008 15 73
2009 16 80
2010 17 106
2011 18 127
2012 19 135
2013 20 161
2014 21 149
2015 22 142

代碼

# -*- coding: utf-8 -*-
# @Date  : 2017-04-11 21:27:00
# @Author : Alan Lau (rlalan@outlook.com)
# @Language : Python3.5

import numpy as np
from matplotlib import pyplot as plt

#指數(shù)平滑公式
def exponential_smoothing(alpha, s):
 s2 = np.zeros(s.shape)
 s2[0] = s[0]
 for i in range(1, len(s2)):
  s2[i] = alpha*s[i]+(1-alpha)*s2[i-1]
 return s2

#繪制預測曲線
def show_data(new_year, pre_year, data, s_pre_double, s_pre_triple):
 year, time_id, number = data.T

 plt.figure(figsize=(14, 6), dpi=80)#設置繪圖區(qū)域的大小和像素
 plt.plot(year, number, color='blue', label="actual value")#將實際值的折線設置為藍色
 plt.plot(new_year[1:], s_pre_double[2:],color='red', label="double predicted value")#將二次指數(shù)平滑法計算的預測值的折線設置為紅色
 plt.plot(new_year[1:], s_pre_triple[2:],color='green', label="triple predicted value")#將三次指數(shù)平滑法計算的預測值的折線設置為綠色
 plt.legend(loc='lower right')#顯示圖例的位置,這里為右下方
 plt.title('Projects')
 plt.xlabel('year')#x軸標簽
 plt.ylabel('number')#y軸標簽
 plt.xticks(new_year)#設置x軸的刻度線為new_year
 plt.show()


def main():
 alpha = .70#設置alphe,即平滑系數(shù)
 pre_year = np.array([2016, 2017])#將需要預測的兩年存入numpy的array對象里
 data_path = r'data1.txt'#設置數(shù)據(jù)路徑
 data = np.loadtxt(data_path)#用numpy讀取數(shù)據(jù)
 year, time_id, number = data.T#將數(shù)據(jù)分別賦值給year, time_id, number
 initial_line = np.array([0, 0, number[0]])#初始化,由于平滑指數(shù)是根據(jù)上一期的數(shù)值進行預測的,原始數(shù)據(jù)中的最早數(shù)據(jù)為1995,沒有1994年的數(shù)據(jù),這里定義1994年的數(shù)據(jù)和1995年數(shù)據(jù)相同
 initial_data = np.insert(data, 0, values=initial_line, axis=0)#插入初始化數(shù)據(jù)
 initial_year, initial_time_id, initial_number = initial_data.T#插入初始化年

 s_single = exponential_smoothing(alpha, initial_number)#計算一次指數(shù)平滑
 s_double = exponential_smoothing(alpha, s_single)#計算二次平滑字數(shù),二次平滑指數(shù)是在一次指數(shù)平滑的基礎上進行的,三次指數(shù)平滑以此類推

 a_double = 2*s_single-s_double#計算二次指數(shù)平滑的a
 b_double = (alpha/(1-alpha))*(s_single-s_double)#計算二次指數(shù)平滑的b
 s_pre_double = np.zeros(s_double.shape)#建立預測軸
 for i in range(1, len(initial_time_id)):
  s_pre_double[i] = a_double[i-1]+b_double[i-1]#循環(huán)計算每一年的二次指數(shù)平滑法的預測值,下面三次指數(shù)平滑法原理相同
 pre_next_year = a_double[-1]+b_double[-1]*1#預測下一年
 pre_next_two_year = a_double[-1]+b_double[-1]*2#預測下兩年
 insert_year = np.array([pre_next_year, pre_next_two_year])
 s_pre_double = np.insert(s_pre_double, len(s_pre_double), values=np.array([pre_next_year, pre_next_two_year]), axis=0)#組合預測值

 s_triple = exponential_smoothing(alpha, s_double)

 a_triple = 3*s_single-3*s_double+s_triple
 b_triple = (alpha/(2*((1-alpha)**2)))*((6-5*alpha)*s_single -2*((5-4*alpha)*s_double)+(4-3*alpha)*s_triple)
 c_triple = ((alpha**2)/(2*((1-alpha)**2)))*(s_single-2*s_double+s_triple)

 s_pre_triple = np.zeros(s_triple.shape)

 for i in range(1, len(initial_time_id)):
  s_pre_triple[i] = a_triple[i-1]+b_triple[i-1]*1 + c_triple[i-1]*(1**2)

 pre_next_year = a_triple[-1]+b_triple[-1]*1 + c_triple[-1]*(1**2)
 pre_next_two_year = a_triple[-1]+b_triple[-1]*2 + c_triple[-1]*(2**2)
 insert_year = np.array([pre_next_year, pre_next_two_year])
 s_pre_triple = np.insert(s_pre_triple, len(s_pre_triple), values=np.array([pre_next_year, pre_next_two_year]), axis=0)

 new_year = np.insert(year, len(year), values=pre_year, axis=0)
 output = np.array([new_year, s_pre_double, s_pre_triple])
 print(output)
 show_data(new_year, pre_year, data, s_pre_double, s_pre_triple)#傳入預測值和數(shù)據(jù)


if __name__ == '__main__':
 main()

預測結果

代碼及數(shù)據(jù)

以上這篇python構建指數(shù)平滑預測模型示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 17個Python小技巧分享

    17個Python小技巧分享

    這篇文章主要給大家分享了17個Python小技巧,都是些基礎的非常常用也非常實用的小技巧,這里推薦給大家。
    2015-01-01
  • Python實現(xiàn)cpu并行運算的兩種方式

    Python實現(xiàn)cpu并行運算的兩種方式

    Python?提供了多種庫來支持?CPU?并行運算,其中最常用的是?multiprocessing?和?mpi4py?模塊,這兩個庫允許你在單臺機器上利用多核處理器提高程序的性能,本文通過代碼示例給大家詳細的介紹了這兩種方法,需要的朋友可以參考下
    2024-08-08
  • Python for循環(huán)及基礎用法詳解

    Python for循環(huán)及基礎用法詳解

    這篇文章為大家介紹python for 循環(huán),它常用于遍歷字符串、列表、元組、字典、集合等序列類型,逐個獲取序列中的各個元素
    2019-11-11
  • Python裝飾器如何實現(xiàn)修復過程解析

    Python裝飾器如何實現(xiàn)修復過程解析

    這篇文章主要介紹了Python裝飾器如何實現(xiàn)修復過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Python實現(xiàn)郵件發(fā)送功能的方法詳解

    Python實現(xiàn)郵件發(fā)送功能的方法詳解

    本文將學會各種類型的郵件發(fā)送方式,比如普通文本郵件、帶附件的郵件等等,如何通過程序發(fā)送郵件現(xiàn)在我們還不太了解,接下來就會為大家進行詳細的介紹
    2022-05-05
  • 基于Django?websocket實現(xiàn)視頻畫面的實時傳輸功能(最新推薦)

    基于Django?websocket實現(xiàn)視頻畫面的實時傳輸功能(最新推薦)

    Django?Channels?是一個用于在?Django框架中實現(xiàn)實時、異步通信的擴展庫,本文給大家介紹基于Django?websocket實現(xiàn)視頻畫面的實時傳輸案例,本案例是基于B/S架構的視頻監(jiān)控畫面的實時傳輸,使用django作為服務端的開發(fā)框架,需要的朋友可以參考下
    2023-06-06
  • Numpy中的shape、reshape函數(shù)的區(qū)別

    Numpy中的shape、reshape函數(shù)的區(qū)別

    本文主要介紹了Numpy中的shape、reshape函數(shù)的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • python創(chuàng)建子類的方法分析

    python創(chuàng)建子類的方法分析

    這篇文章主要介紹了python創(chuàng)建子類的方法,結合實例形式分析了Python子類的具體定義與使用方法,需要的朋友可以參考下
    2019-11-11
  • python爬蟲請求頭設置代碼

    python爬蟲請求頭設置代碼

    在本篇文章里小編給大家整理的是一篇關于python爬蟲請求頭如何設置內(nèi)容,需要的朋友們可以學習下。
    2020-07-07
  • numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式

    numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式

    這篇文章主要介紹了numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論

荣昌县| 宿松县| 新兴县| 兴山县| 恭城| 德州市| 资中县| 米脂县| 阳江市| 遂平县| 黄陵县| 化德县| 宣汉县| 武义县| 聂拉木县| 应城市| 广昌县| 广宗县| 达尔| 长寿区| 宁南县| 抚顺县| 大理市| 集安市| 尉氏县| 集安市| 长子县| 凌海市| 长子县| 通辽市| 阳东县| 都安| 东丰县| 花垣县| 广东省| 健康| 肥东县| 怀宁县| 虞城县| 南汇区| 平顺县|