#Python3组数据挖掘实战总结8、9、X章#
2018-01-28 本文已影响0人
DrBear_smile
关联
概念
- 关联:两个或多个
- 关联规则 Association Rules, AR
- 协同过滤 Collaborative Filtering, CF
关联规则
- 支持度support(x->y) = 集合x与集合y中的项在一条记录中同时出现的次数/数据记录的个数
相当于P(x,y)
- 自信度confidence(置信度?) confidence(x->y)=集合X和集合Y中的项在一条记录中同事出现的次数/集合x出现的个数
- 相当于P(x,y)|P(x)
- P(x,y)|P(x) != P(y,x)|P(y)
- 提升度Lift,度量规则是否可用的指标:描述的是相对于不用规则,使用规则可以提高多少,提升度大于1,规则有效。
lift({A->B}) = confidence({A->B})/supper(B)
- ? supper vs support
计算步骤
- 一级项集-> 二级项集 注意筛选阈值
- ->生成三级项集,迭代至阈值位置
- 得到有价值的项集
code:
pip install apyori
from apyori import apriori
apyori.apriori(transactions)
transactions = array([
[a,b],[a,b,c],
...],dtype=object)
协同过滤
常被用于分别某位特定顾客可能你感兴趣的东西,结论来自于对相似顾客对那些产品感兴趣的分析
- 用户评分向量(User Rating Vector)
- 商品评分向量(Item Rating Vector)
用户或商品的相似度
- 距离计算|欧式距离
- 相似度Similarity
sim(x,y)=\frac{1}{1+d(x,y)}
- 相似邻居计算
- 固定数量的邻居(K-Neighborhoods)
- 基于相似度门槛的邻居(Threshold-based neighborhoods), 类似于K-Means的计算方式
时间序列分析
时间序列是均匀时间间隔上的观测值序列
- 趋势分析
- 序列分解
- 序列预测
时间序列分解(Time-Series Decomposition)
- 非季节性时间序列:趋势部分、不规则部分
- 季节性时间序列:趋势部分、不规则部分、季节性部分
非季节性时间序列分解
- MA(Moving Average)
移动平均是一种简单平滑技术,它通过在时间序列上逐项推移取一定相数的均值,来表现指标的长期变化和发展趋势
- SMA(Simple Moving Average)
{SMA}_n = \frac{x_1+x_2+...+x_n}{n}
- WMA(Weighted Moving Average)
{WMA}_n = w_1x_1 + w_2x_2 + ... + w_nx_n
pandas.rolling_mean(ts,step)
# ts: time series data
# step: moving step
pandas.rolling(ts).aggregate(function)
#ts: time series data
#function: function aggregation
季节性时间序列分解
时间序列中,n个时间间隔后,具有以n为周期的季节性特性
- 趋势部分
- 季节性部分
- 不规则部分
import statsmodels.api as sm
sm.tsa.seasonal_decompose(ts,freq)
# ts: data
# freq: cycle
序列预测
-
forecast
-
Time Series Forecasting 时间序列预测
经过分析时间序列,根据时间序列所反映出来的发展过程、方向、趋势,进行类推或预测 -
平稳性时间序列(Stationary Time Series)
差分(integrated)
- 让时间序列数据平稳的常用手段
\Delta f(x_k) = f(x_{k+1})-f(x_k)
- AR(p)模型(Autoregressive Model)
X_t = c + \sum^p_{i=1}{\varphi_i X_{t-1}}+\varepsilon_t
- MA(q)模型(Moving Average Model)
X_t = \mu + \sum^q_{i=1}{\theta_i \varepsilon_{t-i}}+\varepsilon_t
- ARIMA模型(Autoregressive Integrated Moving Average Model)
将非平稳时间序列化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。
X_t = c + \sum^p_{i=1}\varphi_iX_{t-1}+
\sum^q_{i=1}{\theta_i \varepsilon_{t-i}}+\varepsilon_t
import statsmodels.api as sm
# 评估是否为平稳时间序列
sm.tsa.stattools.adfuller(ts)
# diff
diff_ts = ts.diff(d)
# d:差分的步数
sm.tsa.arma_order_select_ic(
diff_ts,
max_ar,#p
max_ma,#q
ic, # 参数最优评判指标,待选aic,bic,hqic
trend
)
armaModel = sm.tsa.ARMA(data,(p,q))
armaModel.fit()
armaModel.predict(start, end)
# start, end: 预测的开始和结束日期
# revert diff
模型持久化
Persistence:瞬时数据持久化
- 保存模型
- 恢复模型
# based on sklearn
from sklearn.externals import joblib
sklearn.externals.joblib.dump(model, filePath)
model = sklearn.externals.joblib.load(filepath)
pandas.crosstab(x,X)