关联规则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模型对象自带的方法 |