22、python关联规则案例代码

1、关联:(Association)

    把两个或者两个以上在意义上,有密切联系的项组合在一起

关联规则(Association Rules AR)

    用于从大量数据中挖掘出有价值的数据项之间的相关关系
    
协同过滤(Collaborative Filtering,简称CF)

    协同过滤常常被用于分辨某位特定固定可能感兴趣的东西,这些结论来自于对其他相似顾客对哪些产品感兴趣的分析
    

2、关联规则(Association Rules)

    两个不相交的非空集合X、Y,如果有X->Y,就说X->Y是一条关联规则
    
    强度:支持度(support)、自信度(confidence)
    效度:提升度(Lift)
    
3、挖掘定义

    给定一个数据集,找出其中所有支持度support>=min_support、自信度

confidece>=min_confidece的关联规则

4、支持度的计算公式

    suopport(X->Y)=集合X和集合Y中的项在一条记录中同时出现的次数/数据记录的个数
    
    例如:
    
    support({啤酒}->{尿布})
    =啤酒和尿布同时出现的次数/记录数
    =3/5=60%
      
5、自信度(Confidence)

confidence(X->Y)=集合X与集合Y中的项在一条记录中同时出现的次数/集合X出现的个数

例如:

confidence({啤酒}->{尿布})
=啤酒喝尿布同时出现的次数/啤酒出现的次数=3/3=100%


6、自信度

    confidence({尿布}->{啤酒})
    =啤酒喝尿布同时出现的次数/尿布出现的次数
    =3/4
    =75%
  
7、提升度(Lift)
    
    度量规则是否可用的指标,描述的是相对于不用规则,使用规则可以提高多少,提升度大于1 ,规则有效
    
    计算公式
    lift({A-B})=confidence({A-B})/supper(B)
    
    例如:
    
    lift({尿布}->{啤酒})
    =confidence({尿布}->{啤酒})/support(啤酒)
    =0.75/0.6=1.25
    
8、 计算步骤

01 扫描数据集,统计一级候选集出现的次数

清除不满足条件的候选相集,得到一级项集(例如:出现次数大于2)

02 从一级项集中,组合二级候选相集,统计数据集中他们出现的次数

清除不满足条件的候选相集,得到二级项集

03 从二级项集中,组合三级候选相集,统计数据集中他们出现的次数(小于确定的3次) 停止挖掘

04 将前面得到的项集作为结果返回

9、案例代码

 

import pandas

import apyori

from apyori import apriori

data=pandas.read_csv('D:\\DATA\\pycase\\number2\\8.1\\Data.csv')

# apriori与pandas包输出数据格式不兼容,所以进行格式转换‘,

# 以列表的形式进行分许

transactions=data.groupby(by='交易ID').apply(
        lambda x: list(x.购买商品)
        )


#min_support -- The minimum support of relations (float).
#min_confidence -- The minimum confidence of relations (float).
#min_lift -- The minimum lift of relations (float).
#max_length

# 调用apriori方法

results=list(
        apriori(
                transactions
                )
# 指出度(support),先输入空列表,再进行赋值
supports=[]
#自信度
confidences=[]
# 提升度
lifts=[]
# 基于项items_base
bases=[]
# 推导项items_add
adds=[]
for r in results:
    supports.append(r.support)
    confidences.append(r.ordered_statistics[0].confidence)
    lifts.append(r.ordered_statistics[0].lift)
    bases.append(list(r.ordered_statistics[0].items_base))
    adds.append(list(r.ordered_statistics[0].items_add))

result = pandas.DataFrame({
    'support': supports,
    'confidence': confidences,
    'lift': lifts,
    'base': bases,
    'add': adds
})

# 选择支持度大于0.5,自信度大于0.5,提升度大于1

r=result[(result.lift>1)&(result.support>0.5)&(result.confidence>0.5)]



  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

你可能感兴趣的:(数据挖掘实战)