考虑事务数据集 data_set = [['面包','牛奶'], ['面包','尿布','啤酒','鸡蛋'], ['牛奶','尿布','啤酒','可乐'], ['面包','牛奶','尿布','啤酒'], ['面包','牛奶','尿布','啤酒']] (2)定义最小支持度,编写程序得到候选项集并生成频繁项集 (3)定义最小置信度,编写程序提取符合要求的关联规则
时间: 2023-06-27 09:02:05 浏览: 170
(2)根据 Apriori 算法,我们需要先生成候选项集,再通过筛选得到频繁项集。
首先,我们需要定义最小支持度,假设最小支持度为 2,即出现次数大于等于 2 次的项集才是频繁项集。然后,我们可以按照以下步骤来生成候选项集和频繁项集:
1. 生成 1-项集,即每个物品作为一个项集。
C1 = [['面包'], ['牛奶'], ['尿布'], ['啤酒'], ['鸡蛋'], ['可乐']]
2. 根据 1-项集生成 2-项集。
C2 = [['面包', '牛奶'], ['面包', '尿布'], ['面包', '啤酒'], ['牛奶', '尿布'], ['牛奶', '啤酒'], ['尿布', '啤酒']]
3. 根据上一步的结果生成 3-项集。
C3 = [['面包', '牛奶', '尿布'], ['面包', '牛奶', '啤酒'], ['面包', '尿布', '啤酒'], ['牛奶', '尿布', '啤酒']]
4. 根据上一步的结果生成 4-项集。
C4 = [['面包', '牛奶', '尿布', '啤酒']]
5. 对每个候选项集统计其出现次数,筛选出满足最小支持度的频繁项集。
L1 = [['面包'], ['牛奶'], ['尿布'], ['啤酒']]
L2 = [['面包', '牛奶'], ['面包', '尿布'], ['面包', '啤酒'], ['牛奶', '尿布'], ['牛奶', '啤酒'], ['尿布', '啤酒']]
L3 = [['面包', '牛奶', '尿布'], ['面包', '牛奶', '啤酒'], ['面包', '尿布', '啤酒'], ['牛奶', '尿布', '啤酒']]
L4 = [['面包', '牛奶', '尿布', '啤酒']]
(3)定义最小置信度,假设最小置信度为 0.7,即置信度大于等于 0.7 的关联规则才是强关联规则。我们可以按照以下步骤来提取符合要求的关联规则:
1. 对于每个频繁项集,生成其所有非空子集。
对于 L3,其非空子集为 {['面包', '牛奶'], ['面包', '尿布'], ['面包', '啤酒'], ['牛奶', '尿布'], ['牛奶', '啤酒'], ['尿布', '啤酒'], ['面包', '牛奶', '尿布'], ['面包', '牛奶', '啤酒'], ['面包', '尿布', '啤酒'], ['牛奶', '尿布', '啤酒']}
2. 对于每个非空子集,计算其关联规则的置信度,并筛选出满足最小置信度要求的强关联规则。
以 {['面包', '牛奶'], ['面包', '尿布'], ['面包', '啤酒'], ['牛奶', '尿布'], ['牛奶', '啤酒'], ['尿布', '啤酒'], ['面包', '牛奶', '尿布'], ['面包', '牛奶', '啤酒'], ['面包', '尿布', '啤酒'], ['牛奶', '尿布', '啤酒']} 中的一个非空子集 {['面包', '牛奶', '尿布']} 作为例子,其关联规则为 {'面包', '牛奶'} -> {'尿布'},计算置信度的公式为 support(['面包', '牛奶', '尿布', '尿布']) / support(['面包', '牛奶']),其中 support 表示支持度。根据我们之前计算出的频繁项集,可得 support(['面包', '牛奶', '尿布', '尿布']) = 3,support(['面包', '牛奶']) = 4,故置信度为 0.75,大于最小置信度要求,因此该关联规则为强关联规则。
综上,我们得到了最终的强关联规则:{'面包', '牛奶'} -> {'尿布'},{'面包', '尿布'} -> {'牛奶'},{'面包', '啤酒'} -> {'牛奶'},{'牛奶', '啤酒'} -> {'面包'},{'尿布', '啤酒'} -> {'牛奶'},{'面包', '牛奶'} -> {'尿布', '啤酒'},{'面包', '尿布'} -> {'牛奶', '啤酒'},{'面包', '啤酒'} -> {'牛奶', '尿布'}。
阅读全文