用python实现Apriori算法
Apriori算法是一种关联规则挖掘算法,用来找频繁项集和关联规则,Apriori算法利用了频繁项集的子集也一定是频繁的这一思想,例如,如果{A,B} 是频繁项集,则 {A}和{B} 也一定是频繁项集
从1到k(k项集)递归查找频繁项集,再用得到的频繁项集生成关联规则
例题
在这里,我用如下一题进行讲述:
提取以下购物篮数据中的频繁项集和强关联规则(参数设置:最小支持度计数 = 4,最小置信度 = 0.6)
| 事务ID | 购买商品 |
|---|---|
| 001 | 面包,黄油,尿布,啤酒 |
| 002 | 咖啡,糖,小甜饼,鲑鱼,啤酒 |
| 003 | 面包,黄油,咖啡,尿布,啤酒,鸡蛋 |
| 004 | 面包,黄油,鲑鱼,鸡 |
| 005 | 鸡蛋,面包,黄油 |
| 006 | 鲑鱼,尿布,啤酒 |
| 007 | 面包,茶,糖鸡蛋 |
| 008 | 咖啡,糖,鸡,鸡蛋 |
| 009 | 面包,尿布,啤酒,盐 |
| 010 | 茶,鸡蛋,小甜饼,尿布,啤酒 |
首先我们将数据放入到文件当中,如下:
面包,黄油,尿布,啤酒
咖啡,糖,小甜饼,鲑鱼,啤酒
面包,黄油,咖啡,尿布,啤酒,鸡蛋
面包,黄油,鲑鱼,鸡
鸡蛋,面包,黄油
鲑鱼,尿布,啤酒
面包,茶,糖,鸡蛋
咖啡,糖,鸡,鸡蛋
面包,尿布,啤酒,盐
茶,鸡蛋,小甜饼,尿布,啤酒
导入一些需要用到的模块
import pandas as pd
import numpy as np
import itertools
读取文件中数据并进行处理
#读取数据并进行编号和转换
def load_dataSet():
#利用pandas读取数据
data = pd.read_csv('test4-1.csv', header=None, sep='\t', encoding='UTF-8')
# print(data.values)
# print('----')
goods = []
goodsList = {
}
change_data= []
#对商品进行编号
for key in data.values:
key = key[0]
key = key.split(',')
for i in key:
if i not in goods:
goods.append(i)
for key in range(len(goods)):
goodsList[goods[key]] = key + 1
#输出商品的编号
print('商品编号:', goodsList)
#转换数据
for key in data.values:
key_num = []
key = key[0].split(',')
for i in key:
key_num.append(goodsList[i])
key_num.sort()
change_data.append(key_num)
#输出转换后的数据
print('\n转换后的数据:', change_data)
return goodsList, change_data
加载数据并处理的结果如下

算法中需要将商品进行排列组合,代码如下
#separate函数用于将data中的数据进行排列组合,i是组合的大小
def separate(data, i):
a = []
b = []
for k in data:
for j in range(len(k)):
if k
Apriori算法实战

最低0.47元/天 解锁文章
246

被折叠的 条评论
为什么被折叠?



