用python实现Apriori算法

Apriori算法实战

用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值