Apriori算法规则实现

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值