python关联分析代码_1行代码实现关联分析(Apriori)算法

本文不涉及关联分析算法的计算原理,只注重代码实现。

最近公司分了个任务,要求写一篇面向python初学者的关联分析演习材料。遇到这种情况,我的解决办法当然是优先使用已有模块,然后写一篇模块使用方法指南,最后10行以内的代码搞定啦。

出于习惯,我先用中文搜了一下,发现大部分人都是直接自己上手编写,很简单,毕竟也就4个步骤:导入数据,并将数据预处理

计算频繁项集

根据各个频繁项集,分别计算支持度和置信度

根据提供的最小支持度和最小置信度,输出满足要求的关联规则

代码写起来确实很简单,但是我的目标客户可是python初学者(甲方爸爸们),要求他们动手编程显然是不实际的。

中文输入搜索时,基本没有找到直接使用已有模块的样例。这么古老的算法,不应该呀!于是切换到英文输入~找到啦~

apyori模块提供了apriori算法:apyori: Simple Apriori algorithm Implementation.​pypi.org

使用pip即可立即安装。

(虽然官网说只支持Python 2.7 和 3.3 - 3.5,但我的python是3.6版,目测完全没有问题)

pip install apyori

安装好后,使用import即可调用。

from apyori import apriori

apriori算法一行搞定~

附python源代码:

# -*- coding: utf-8 -*-

import pandas as pd

header = ['user_id', 'item_id', 'rating', 'timestamp']

df = pd.read_csv('../data/ml-1m/ratings.dat', sep='::', names=header,engine='python')

# 考虑到执行时间,只选取前10000行作为输入数据

df = df.iloc[:10000]

# 用户种类

users = df['user_id'].unique()

# 电影种类

items = df['item_id'].unique()

# 用户种类数

users_num = users.shape[0]

# 电影种类数

items_num = items.shape[0]

print('用户种类数: ' + str(users_num) + ' \n电影种类数: ' + str(items_num))

# 输入数据格式转换

# apyori.apriori模块要求输入数据的格式为list的list

# 例如:[[itemA, itemB], [itemA, itemC], [itemD, itemE]]

from functools import partial

def items_to_list(data, user_id):

item_list = data.loc[data['user_id']==user_id]['item_id'].tolist()

return item_list

func = partial(items_to_list, df)

item_list_list = list(map(func, users))

# 使用apyori.apriori模块

from apyori import apriori

associations = apriori(item_list_list, min_support = 0.2, min_confidence = 1.0, min_lift = 4)

rule = list(associations)

# 查看规则

itemA = list(rule[0][2][0][0])

itemB = list(rule[0][2][0][1])

print(f'关联规则: \n\t观看 电影{itemA} 的人会观看 电影{itemB}')

print(f'评估结果:\n\tSupport: {rule[0][1]:.3}\n\tConfidence: {rule[0][2][0][2]:.3}\n\tLift : {rule[0][2][0][3]:.3}')

itemC = list(rule[1][2][0][0])

itemD = list(rule[1][2][0][1])

print(f'\n关联规则: \n\t观看 电影{itemC} 的人会观看 电影{itemD}')

print(f'评估结果:\n\tSupport: {rule[1][1]:.3}\n\tConfidence: {rule[1][2][0][2]:.3}\n\tLift : {rule[1][2][0][3]:.3}')

后记:

被前辈指出这个apyori模块的star数和contributor数比较少,而且文档也不是很全面,最近更新为2018年3月,比较久远。

建议使用mlxtend模块:star数和contributor数远多于apyori模块,文档总结很全面,而且指标中不止支持度、置信度、lift值,还增加了leverage和conviction。

安装也很简单,pip直接安装:

pip install mlxtend

或使用anaconda:

conda install mlxtend --channel conda-forge

代码块待更新~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Apriori关联分析算法Python调包代码,您可以按照以下步骤进操作: 1. 首先,安装所需的Python包。您可以使用pip或conda来安装相关的包。在命令中输入以下命令来安装所需的包: ``` pip install efficient-apriori ``` 2. 导入所需的包和函数。在Python代码中,您需要导入efficient_apriori库和apriori函数。代码如下所示: ```python from efficient_apriori import apriori ``` 3. 准备数据集。您需要准备一个包含所有交易的数据集。每个交易是一个列表,其中包含该交易中的所有物品。例如,数据集可以是以下形式: ```python transactions = [('牛奶', '啤酒', '尿布'), ('牛奶', '啤酒', '咖啡'), ('牛奶', '尿布', '咖啡', '鸡蛋'), ('啤酒', '尿布', '鸡蛋'), ('牛奶', '尿布', '咖啡', '啤酒', '鸡蛋')] ``` 4. 使用apriori函数进关联分析。您可以使用apriori函数来执Apriori算法,找出频繁项集和强关联规则。代码如下所示: ```python itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=0.5) ``` 其中,`transactions`是您准备的数据集,`min_support`是最小支持度阈值,`min_confidence`是最小置信度阈值。您可以根据实际需求调整这些参数。 5. 获取频繁项集和强关联规则。通过上面的代码,您将得到频繁项集和强关联规则。您可以按照以下方式获取它们的结果: ```python print(itemsets) print(rules) ``` 以上就是使用Apriori算法关联分析Python调包代码。您可以根据自己的需求和数据进相应的调整和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值