CBA算法---基于关联规则进行分类的算法

更多数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm

介绍

CBA算法全称是Classification base of Association,就是基于关联规则进行分类的算法,说到关联规则,我们就会想到Apriori和FP-Tree算法都是关联规则挖掘算法,而CBA算法正是利用了Apriori挖掘出的关联规则,然后做分类判断,所以在某种程度上说,CBA算法也可以说是一种集成挖掘算法。

算法原理

CBA算法作为分类算法,他的分类情况也就是给定一些预先知道的属性,然后叫你判断出他的决策属性是哪个值。判断的依据就是Apriori算法挖掘出的频繁项,如果一个项集中包含预先知道的属性,同时也包含分类属性值,然后我们计算此频繁项能否导出已知属性值推出决策属性值的关联规则,如果满足规则的最小置信度的要求,那么可以把频繁项中的决策属性值作为最后的分类结果。具体的算法细节如下:

1、输入数据记录,就是一条条的属性值。

2、对属性值做数字的替换(按照列从上往下寻找属性值),就类似于Apriori中的一条条事务记录。

3、根据这个转化后的事务记录,进行Apriori算法计算,挖掘出频繁项集。

4、输入查询的属性值,找出符合条件的频繁项集(需要包含查询属性和分类决策属性),如果能够推导出这样的关联规则,就算分类成功,输出分类结果。

这里以之前我做的CART算法的测试数据为CBA算法的测试数据,如下:

Rid Age Income Student CreditRating BuysComputer
1 13 High No Fair CLassNo
2 11 High No Excellent CLassNo
3 25 High No Fair CLassYes
4 45 Medium No Fair CLassYes
5 50 Low Yes Fair CLassYes
6 51 Low Yes Excellent CLassNo
7 30 Low Yes Excellent CLassYes
8 13 Medium No Fair CLassNo
9 9 Low Yes Fair CLassYes
10 55 Medium Yes Fair CLassYes
11 14 Medium Yes Excellent CLassYes
12 33 Medium No Excellent CLassYes
13 33 High Yes Fair CLassYes
14 41 Medium No Excellent CLassNo
属性值对应的数字替换图:

Medium=5, CLassYes=12, Excellent=10, Low=6, Fair=9, CLassNo=11, Young=1, Middle_aged=2, Yes=8, No=7, High=4, Senior=3
体会之后的数据变为了下面的事务项:

Rid Age Income Student CreditRating BuysComputer 
1 1 4 7 9 11 
2 1 4 7 10 11 
3 2 4 7 9 12 
4 3 5 7 9 12 
5 3 6 8 9 12 
6 3 6 8 10 11 
7 2 6 8 10 12 
8 1 5 7 9 11 
9 1 6 8 9 12 
10 3 5 8 9 12 
11 1 5 8 10 12 
12 2 5 7 10 12 
13 2 4 8 9 12 
14 3 5 7 10 11 
把每条记录看出事务项,就和Apriori算法的输入格式基本一样了,后面就是进行连接运算和剪枝步骤等Apriori算法的步骤了,在这里就不详细描述了,Apriori算法的实现可以
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是使用 Python 实现关联规则分类的示例代码: ```python from efficient_apriori import apriori # 准备数据 dataset = [ ['牛奶', '面包', '尿布'], ['可乐', '面包', '尿布', '啤酒'], ['牛奶', '尿布', '啤酒', '鸡蛋'], ['面包', '牛奶', '尿布', '啤酒'], ['面包', '牛奶', '尿布', '可乐'] ] # 使用 Apriori 算法找出频繁项集 itemsets, _ = apriori(dataset, min_support=0.5) # 打印频繁项集 print(itemsets) # 使用 Apriori 算法找出关联规则 _, rules = apriori(dataset, min_support=0.5, min_confidence=1) # 打印关联规则 print(rules) ``` 这段代码将会输出两个结果:频繁项集和关联规则。 频繁项集是经过 Apriori 算法处理后得到的一组包含任意项数的项集,它们出现的频率超过了预设的最小支持度阈值。在这个示例中,出现频率超过了 50% 的项集为 {'尿布'},{'面包'},{'牛奶'}。 关联规则是由频繁项集派生的一组规则,它们包含条件和结论两个部分,中间用箭头连接。条件和结论都是项集,而且条件和结论不能同时为空。在这个示例中,满足最小置信度阈值(这里设为 100%)的关联规则为:{'尿布'} → {'面包'}、{'面包'} → {'尿布'}、{'牛奶'} → {'尿布'}、{'尿布'} → {'牛奶'}、{'啤酒'} → {'尿布'}、{'尿布'} → {'啤酒'}、{'啤酒'} → {'牛奶'}、{'牛奶'} → {'啤酒'}、{'可乐'} → {'尿布'}、{'尿布'} → {'可乐'}、{'面包', '尿布'} → {'牛奶'}、{'牛奶', '尿布'} → {'面包'}、{'面包', '牛奶'} → {'尿布'}、{'尿布', '牛奶'} → {'面包'}、{'面包', '尿布'} → {'牛奶'}、{'牛奶', '面包'} → {'尿布'}。 这些关联规则可以发挥出关联规则分类的作用,例如可以根据顾客购买了哪些商品,推测他们可能对哪些商品感兴趣,并根据此做出适当的营销策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值