Apriori算法进行关联分析

基础知识

1.创建DataFrame对象
 传入数据可以是字典和嵌套列表。字典的创建为DataFrame对象的列名,值为数据
 列表元素作为DataFrame对象的行数据显示,从0开始
 pd.DataFrame(data,columns=[’ ‘,’ ‘,’ ']),columns为列表时,与传入DataFrame列表元素长度一致。
 对列索引(列名)进行重新赋值。data.columns = [‘a’,‘b’,‘c’]——(新列名)
2.默认按升序对数据进行排列:
 data.sort_values(by=‘列名’)
 单列排序:data[‘列名’].sort_values()
3.重置索引

参数说明示例
drop布尔值:默认为False,保留原索引;值为True,去掉原索引data.reset_index(drop=True)

4.数值四舍五入
 data[‘列名’]=round(data[‘列名’],2)
 round(data,ndigits)函数,data为要进行四舍五入的数据,ndigits为要保留的小数位数,默认为0
5.agg()方法
 定义函数 new_func()(函数名随意)
 使用agg()方法将操作列的每个数据传入new_func()函数进行计算,并取得函数的返回值
 传入自定义函数时,只需要写上函数名,不需要加上括号以及函数参数。agg(new_func)
 方法内传入字典:dict={‘columns’:‘sum’,‘columns’:‘mean’}
 eg:data.groupby(‘名称’).agg(dict)

关联分析

1.①:关联分析
 各组数据之间的联系
 交易中不同物品可称为一个项,k个项组成的项集,叫k项集,项集内不存在相同的项
 每条交易记录可称为一个事务
 ②:支持度:
 项集在事务中出现的概率(频率)
 {X}的支持度={X}在事务中出现的次数 / 事务总数
 人为设定支持度,名为最小支持度>=最小支持度的项集被称为频繁项集。
 ③:关联规则
 探索数据之间的联系(某种关联)
 {X}(前件)----->{Y}(后件)(X和Y之间存在相同项)
 ④:置信度
 衡量关联关系的可靠程度,在前件出现的情况下,后件出现的概率。
 关联规则{X}----->{Y}的置信度={X,Y}的支持度 / {X}的支持度
 人为设定置信度,名为最小置信度>=最小置信度叫做强关联规则
 ⑤:提升度
 事务各自的影响程度
 {X}---->{Y}的提升度={X}---->{Y}的置信度 / {Y}的支持度
 ={X,Y}的支持度 / {X}、{Y}的支持度
 提升度<1,抑制关系
 提升度>1,促进关系
 提升度=1,前件不影响后件
⑥:一个k项数据集,能产生(2^k - 1)个非空频繁项集
一个k项的频繁项集,能产生(2^k - 2)个关联规则
2.Apr算法
 步骤:确定最小支持度和最小置信度(取值范围在0-1之间);找出所有频繁项集和强关联规则
 执行apriori算法,,返回包含关联规则的数据apriori(transactions,min_support,min_confidence,min_lift)

参数含义
transactions事务集合
min_support最小支持度
min_confidence最小置信度
min_lift最小提升度

导入apyori模块下apriori函数
 from apyori import apriori
 是一个生成器对象,通过循环遍历访问其数据。
关系记录:RelationRecord:频繁项集,支持度,统计列表(ordered_statistics)
核心算法

list1 = []#空列表

#遍历结果数据(调用apriori函数后)
for result in results:
    
    #获取支持度并保留3位小数
    support = round(result.support,3)

    #遍历ordered_statistics对象
    for rule in result.ordered_statistics:

        #获取前件和后件并转化成列表
        head_set = list(rule,items_base)
        tail_set = list(rule,items_add)

        #跳过前件为空的数据
        if head_set == []:continue

        #将前后件拼接成关联规则的形式
        related_catogory = str(head_set) + '--->' + str(tail_set)

        #提取置信度并保留3位小数
        confidence = round(rule.confidence,3)

        #提取提升度并保留3位小数
        lift = round(rule.lift,3)

        #查看强关联规则
        list1.append(related_catogory,support,confidence,lift)

        #转变成DataFrame对象,按支持度排序
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值