關聯規則python
算法名稱
|
算法描述
|
---|---|
Apriori | 關聯規則最經常使用也是經典的挖掘頻繁項集的算法,其核心思想是經過鏈接產生候選項及其支持度而後經過剪枝生成頻繁項集 |
FP-Tree | 針對Apriori算法固有的屢次掃描事物數據集的缺陷,提出的不產生候選項頻繁項集的方法.Apriori和FP-Tree都是尋找頻繁項集的算法 |
Eclat算法 | Eclat算法是一種深度優先級算法,採用垂直數據表示形式,在概念格理論的基礎上利用基於前綴的等價關係將搜索空間劃分爲較小的子空間 |
灰色關聯法 | 分析和肯定各因素之間的影響程度或是若干個子因素(子序列)對主因素(母序列)的貢獻度而進行的一種分析方法.算法 |
# -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") """ 使用Apriori算法挖掘菜品訂單關聯規則 """ from __future__ import print_function from apriori import find_common_type import pandas as pd data = pd.read_csv("sales.csv", header=None, sep=",") print(u'\n轉換原始數據至0-1矩陣...') ct = lambda x: pd.Series(1, index=x[pd.notnull(x)]) # 轉換矩陣0-1矩陣的過分函數 b = map(ct, data.as_matrix()) # 用map方式執行 data = pd.DataFrame(list(b)).fillna(0) # 實現矩陣轉換,空值用0填充 print(u'\轉換完畢.') del b support = 0.2 # 最小支持度 confidence = 0.5 # 最小置信度 ms = '--' # 鏈接符,默認'--',用來區分不一樣元素, 如 A--B. 須要保證原始表格中不含有該字符 find_common_type(data, support, confidence, ms).to_csv("sales_1.csv")
模型名稱
|
描述
|
---|---|
ARCH模型 | ARCH模型能準確地模擬時間序列變量的波動性的變化,適用與序列具備異方差性而且異方差函數短時間自相關 |
ARIMA模型 | 許多非平穩序列差分後會顯示出平穩序列的性質,稱這個非平穩序列爲差分平穩序列,對於差分平穩序列可使用ARIMA模型進行擬合 |
ARMA模型 | xt = Φ0 + Φ1xt-1 + Φ2xt-2 + ...+ Φpxt-p + εt - θ1εt-1 - θ2εt-2 - ... - θqεt-q 隨機變量Xt的取值xt不只與前p期的序列值有關,還 與前前q期的然東值有關 |
AR模型 | xt = Φ0 + Φ1xi-1 + Φ2xi-2 + ... + Φpxt-p + εt 之前p期的序列值xt-1,xt-2, ..., +xt-p爲自變量,隨機變量xt的取值,xt爲因變量創建線性迴歸模型 |
GARCH模型及其衍生模型 | GARCH模型稱爲廣義ARCH模型,是ARCH模型的拓展.相比與ARCH模型,GARCH模型機器衍生模型更能反映實際序列中的長期記憶性,信息的非對稱性等. |
MA模型 | xt = µ+εt - θ1εt-1 - θ2εt-2-...-θpxt-q 隨機變量Xt的取值xt與之前各期的序列值無關,創建xt與前q期的素雞擾動εt-1,εt-2,...,εt-q的線性迴歸模型 |
平滑法 | 平滑法經常使用於趨勢分析和預測,利用修均技術,削弱短時間隨機波動對序列的影響,使序列平滑化數據所用平滑技術的不一樣,可具體分爲移動平均法和指數平滑發 |
組合模型 | 時間序列的變化主要受到長期趨勢(T),季節變更(S).週期變更(C)和不規則變更(ε)這4個因素的影響根據序列的特色,可疑構建加法模型和乘法模型 加法模型: xt = Tt + St + Ct + εt 乘法模型: xt = Tt * St * Ct * εt |
趨勢擬合法 | 趨勢擬合法把時間做爲自變量,相應的序列觀察值做爲因變量,創建迴歸模型,根據序列的特徵,可具體分爲線性擬合和曲線擬合 |
統計量
|
性質
|
統計量
|
性質
|
---|---|---|---|
均值 | 常數均值 | 自相關係數(ACF) | 拖尾 |
方差 | 常數方差 | 偏自相關係數(PACF) | ρ階截尾 |
統計量
|
性質
|
統計量
|
性質
|
---|---|---|---|
均值 | 常數均值 | 自相關係數 | q階截尾 |
方差 | 常數方差 | 偏自相關係數 | 拖尾 |
統計量
|
性質
|
統計量
|
性質
|
---|---|---|---|
方差 | 常數方差 | 偏自相關係數(PACF) | 拖尾 |
均值 | 常數均值 | 自相關係數(ACF) | 拖尾 |
模型
|
自相關係數(ACF)
|
偏自相關係數(PACF)
|
---|---|---|
AR(p) | 拖尾 | p階截尾 |
ARMA(p,q) | p階拖尾 | q階拖尾 |
MA(q) | q階截尾 | 拖尾 |
# -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") """ arima時序模型 """ columns = [] import pandas as pd forecastnum = 5 data = pd.read_csv("sales.csv",header=None,sep=",", names=columns) # 時序圖 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Simhei'] # 用來正常顯示中文標籤 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號 data.plot() plt.show() # 自相關圖 from statsmodels.graphics.tsaplots import plot_acf plot_acf(data).show() # 平穩性檢測 from statsmodels.tsa.stattools import adfuller as ADF print(u'原始序列的ADF檢驗結果爲:', ADF(data[u'銷量'])) # 返回值一次爲adf,pvalue,usedlag,nobs,critical,values, icbest, regresults, resstore # 差分後的結果 D_data = data.diff().dropna() # 去掉空值 D_data.columns = [u'銷量差分'] D_data.plot() # 時序圖 plt.show() plot_acf(D_data).show() # 自相關 from statsmodels.graphics.tsaplots import plot_pacf plot_pacf(D_data).show() # 偏自相關圖 print(u'差分序列的ADF檢驗結果爲:', ADF(D_data[u'銷量差分'])) # 平穩性檢測 # 白噪聲檢測 from statsmodels.stats.diagnostic import acorr_ljungbox print(u'差分序列的白噪聲檢驗結果爲:', acorr_ljungbox(D_data, lags=1)) # 返回統計量和p值 from statsmodels.tsa.arima_model import ARIMA # 定階 pamx = int(len(D_data) / 10) # 通常階數不超過length / 10 qmax = int(len(D_data) / 10) # 通常階數不超過length / 10 bic_matrix = [] # bic矩陣 for p in range(pamx + 1): tmp = [] for q in range(qmax + 1): try: # 存在部分報錯,因此用try來跳過報錯 tmp.append(ARIMA(data, (p,1,q)).fit().bic) except: tmp.append(None) bic_matrix.append(tmp) bic_matrix = pd.DataFrame(bic_matrix) # 從中能夠找到最小值 p,q = bic_matrix.stack().idxmin() # 先用stack展平,而後用idxmin找出最小值的位置 print(u'BIC最小值的p值和q值爲: %s,%s' % (p,q)) model = ARIMA(data, (p,1,q)).fit() # 創建ARIMA(0,1,1)模型並訓練 model.summary2() # 給出一份模型報告 model.forecast(5) # 做爲5天的預期,返回預測結果,標準偏差,置信區間
函數名
|
函數功能
|
所屬工具箱
|
---|---|---|
acf() | 計算機相關函數 | statsmodels.tsa.stattools |
acorr_ljungbox() | Ljung-Box檢驗,檢驗是否爲白噪聲 | statsmodels.stats.diagnostic |
adfuller() | 對觀測值序列進行單位根檢驗 | statsmodels.tsa.stattools |
aic/bic/hqic | 計算ARIMA模型的AIC/BIC/HQIC指標值 | ARIMA模型對象自帶的變量 |
ARIMA() | 建立一個ARIMA時序模型 | ststamodels.tsa.arima_model |
duff() | 對觀測值序列進行差分計算 | Pandas對象自帶的方法 |
forecast() | 應用構建的時序模型進行預測 | ARIMA模型對象自帶的變量 |
pacf() | 計算偏相關係數 | statsmodels.tsa.stattools |
plot_acf() | 畫自相關係數圖 | statsmodels.graphics.tsaplots |
plot_pacf() | 畫偏相關係數圖 | statsmodels.graphics.tsaplots |
summary()或summary2 | 給出一份ARIMA模型的報告 | ARIMA模型對象自帶的方法 |