数据挖掘概念与技术 原书第三版 习题6.6
实现用apriori算法找出频繁项集。
代码可在Matlab R2018a中直接运行。
% 数据集
data = {['M', 'O', 'N', 'K', 'E','Y'];
['D', 'O', 'N', 'K', 'E','Y'];
['M', 'A', 'K', 'E'];
['M', 'U', 'C', 'K', 'Y'];
['C', 'O', 'O', 'K', 'I', 'E']};
% 设置最小支持度(和最小置信度)
min_sup = 0.6; %min_conf = 0.8;
% 用cellfun函数将数据集中所有项转化为单个字符串,然后存储在一个字符串类型的数组str_data中,
str_data = cellfun(@(x) join(x,''),data,'UniformOutput',false);
%使用join函数将每个单元格中的字符数组连接成一个单个字符串。
% 根据最小支持度获取频繁一项集
one_itemset = containers.Map; %创建对象one_itemset,用于存储每个项出现的次数
for i = 1:length(str_data)
for j = 1:length(str_data{i})
if isKey(one_itemset,str_data{i}(j))
one_itemset(str_data{i}(j)) = one_itemset(str_data{i}(j)) + 1;
else
one_itemset(str_data{i}(j)) = 1;
end
end
end %遍历数据集中的每个字符串,对其中的每个字符进行计数
remove_item