亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python構建指數平滑預測模型示例

發布時間:2020-10-02 06:27:20 來源:腳本之家 閱讀:638 作者:AlanConstantineLau 欄目:開發技術

指數平滑法

其實我想說自己百度的…

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

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

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

具體公式還是百度吧…

材料

1.python3.5

2.numpy

3.matplotlib

4.國家社科基金1995-2015年立項數據

需求

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

數據

#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

#指數平滑公式
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)#設置繪圖區域的大小和像素
 plt.plot(year, number, color='blue', label="actual value")#將實際值的折線設置為藍色
 plt.plot(new_year[1:], s_pre_double[2:],color='red', label="double predicted value")#將二次指數平滑法計算的預測值的折線設置為紅色
 plt.plot(new_year[1:], s_pre_triple[2:],color='green', label="triple predicted value")#將三次指數平滑法計算的預測值的折線設置為綠色
 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,即平滑系數
 pre_year = np.array([2016, 2017])#將需要預測的兩年存入numpy的array對象里
 data_path = r'data1.txt'#設置數據路徑
 data = np.loadtxt(data_path)#用numpy讀取數據
 year, time_id, number = data.T#將數據分別賦值給year, time_id, number
 initial_line = np.array([0, 0, number[0]])#初始化,由于平滑指數是根據上一期的數值進行預測的,原始數據中的最早數據為1995,沒有1994年的數據,這里定義1994年的數據和1995年數據相同
 initial_data = np.insert(data, 0, values=initial_line, axis=0)#插入初始化數據
 initial_year, initial_time_id, initial_number = initial_data.T#插入初始化年

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

 a_double = 2*s_single-s_double#計算二次指數平滑的a
 b_double = (alpha/(1-alpha))*(s_single-s_double)#計算二次指數平滑的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]#循環計算每一年的二次指數平滑法的預測值,下面三次指數平滑法原理相同
 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)#傳入預測值和數據


if __name__ == '__main__':
 main()

預測結果

python構建指數平滑預測模型示例

python構建指數平滑預測模型示例

代碼及數據

以上這篇python構建指數平滑預測模型示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯昌县| 沧州市| 玛沁县| 翁牛特旗| 华池县| 惠来县| 乌兰察布市| 桦甸市| 大方县| 浮梁县| 罗定市| 苍山县| 大渡口区| 通渭县| 许昌县| 香格里拉县| 长乐市| 丰都县| 香港| 巴林右旗| 即墨市| 邳州市| 吴江市| 潮安县| 黄冈市| 江山市| 高平市| 宕昌县| 江达县| 台山市| 松滋市| 寻乌县| 天水市| 平湖市| 平安县| 镇远县| 龙海市| 贵德县| 临武县| 临江市| 台江县|