Apriori算法规则实现
数据仓库里面包含以下5个记录。设支持度>0.5,置信度>0.7。
|
id |
购买的商品 |
|
1 |
K,C,M,Y,E |
|
2 |
E,O,L,M,D,Y |
|
3 |
A,M,K,E |
|
4 |
K,Y,M,D,L |
|
5 |
C,O,K,L,E |
使用Apriori 算法找出频繁项集,通过最终结果形成一个方案建议(即告诉老板,接下来的商品销售策略)。
1-项集支持度计算
|
1-项集 |
支持度计数 |
支持度 |
|
K |
4 |
0.8 |
|
C |
2 |
0.4 |
|
M |
4 |
0.8 |
|
Y |
3 |
0.6 |
|
E |
4 |
0.8 |
|
O |
2 |
0.4 |
|
L |
3 |
0.6 |
|
D |
2 |
0.4 |
|
A |
1 |
0.2 |
比较候选支持度计数与最小值支持度(2),筛选出1-频繁项集,支持度>0.5。
|
2-项集 |
支持度计数 |
支持度 |
|
K |
4 |
0.8 |
|
M |
4 |
0.8 |
|
Y |
3 |
0.6 |
|
E |
4 |
0.8 |
|
L |
3 |
0.6 |
由1-项集产生候选的2-项集
|
2-项集 |
支持度计数 |
支持度 |
置信度 |
|
{K,M} |
3 |
0.6 |
0.75 |
|
{K,Y} |
2 |
0.4 |
0.5 |
|
{K,E} |
3 |
0.6 |
0.75 |
|
{K,L} |
2 |
0.4 |
0.5 |
|
{M,Y} |
3 |
0.6 |
0.75 |
|
{M,E} |
3 |
0.6 |
0.75 |
|
{M,L} |
2 |
0.4 |
0.5 |
|
{Y,E} |
2 |
0.4 |
0.66 |
|
{Y,L} |
2 |
0.4 |
0.66 |
|
{E,L} |
2 |
0.4 |
0.5 |
筛选出2-频繁项集,置信度>0.7
|
2-项集 |
支持度计数 |
支持度 |
置信度 |
提升度 |
|
{K,M} |
3 |
0.6 |
0.75 |
0.9375 |
|
{K,E} |
3 |
0.6 |
0.75 |
0.9375 |
|
{M,Y} |
3 |
0.6 |
0.75 |
1.25 |
|
{M,E} |
3 |
0.6 |
0.75 |
0.9375 |
M与Y有联系,可放在一起销售。
import numpy as np
import pandas as pd
import itertools
data=pd.read_table('C://Users//Administrator//Desktop//新建文本文档.txt',engine='python',header=None,sep=' ')
#数值化
#频繁集计算
#取DataFrame行和列
#取行
#取出矩阵中所有涉及到的元素,去重,
ulist=[]
for i in np.arange(data.shape[0]):
temp=data.loc[i]
ulist.extend(temp)
ulist
#定义一个最小的支持度 min(support)=3
#算所有去重之后的商品的支持度
#存放1项集数据
data1=[] #初始化矩阵
for value in ulist:
#遍历交易记录
count=0
for j in np.arange(data.shape[0]):
#算单个商品的支持度
if(np.sum(data.loc[j]==value)>0):
count+=1
#单个商品支持度算完,保存结果
#print(str(value)+"\t"+str(count))
if(count>=3):
data1.append(value)
#I1=data.loc[0]
data1Unique=list(set(data1))
data2=list(itertools.permutations(data1Unique,2)) #排列组合
#data2=np.array(list(itertools.permutations(data1Unique,2)))
#for j in np.arange(data2.shape[0]):
#先求出1项集的集合及其支持计数,注意此处C1是字典,key为项集,value是计数,与下不同,下的C是列表只有计数
#I1.unique() 取出所有元素(一次)
#取列
#data[0]
根据Apriori算法,分析购物记录数据,筛选频繁项集和强关联规则。发现{M,Y}
1万+

被折叠的 条评论
为什么被折叠?



