利用mlxtend进行数据关联分析

guan

大数据挖掘最深入人心的一个故事应该是“啤酒与尿布”,这个规律就是用关联分析发现的。今天我们就来点关联分析,刚刚学到的,现学现分享?。下面假设是某超市的交易记录(我编造的)

640?wx_fmt=png

基本概念

我们在关联分析之前先了解几个基本概念。

找出频繁一起出现的物品集的集合,我们称之为频繁项集。比如一个超市的频繁项集可能有{{啤酒,尿布},{鸡蛋,牛奶},{香蕉,苹果}}

640?wx_fmt=png

mlxtend安装

mlxtend是python的机器学习扩展库,在数据科学中也会经常遇到。在本文主要是使用其中的关联分析一些方法

!pip3 install mlxtend

编码

这块跟sklearn文本分析的contvertorizer和tfidfvectorizer差不多,都是从数据中学到 空间

import pandas as pd	
from mlxtend.preprocessing import TransactionEncoder	
#测试数据	
records = [['牛奶', '洋葱', '猪肉', '鸡蛋', '洋葱', '酸奶'],	
           ['洋葱', '豆角', '酸奶', '鸡蛋', '苹果'],	
           ['牛奶', '苹果', '豆角', '鸡蛋'],	
           ['牛奶', '玉米', '胡萝卜', '豆角', '酸奶'],	
           ['玉米', '洋葱', '豆角', '冰激凌', '鸡蛋']]	
Encoder = TransactionEncoder()	
encoded_data = Encoder.fit_transform(records)	
df = pd.DataFrame(encoded_data, columns=Encoder.columns_)	
df

640?wx_fmt=png

频繁项

找出频繁项,这里会用到 mlxtend.frequent_patterns 中的 apriori 函数

apriori(df, minsupport=0.5, usecolnames=False, max_len=None)

  • df:编码后的dataframe,如上图

  • min_support:给定的最小支持度

  • use_colnames:默认False,则返回的物品组会用编号显示,为True的话直接显示物品名称。

  • max_len=None:最大物品组合数,默认是None,不做限制。

我们设置minsupport=0.05, usecolnames=True, 需要计算最多四个物品组合的话,便将max_len这个值设置为4。

from mlxtend.frequent_patterns import apriori	
frequent_items = apriori(df, min_support=0.05, use_colnames=True, max_len=4).sort_values(by='support', ascending=False)	
frequent_items

640?wx_fmt=png

求关联规则

mlxtend.frequent_patterns里封装有关联规则函数 association_rules ,我们可以直接使用该函数帮助我们找到关联规则

associationrules(df, metric='confidence', minthreshold=0.8)

  • df: 频繁项dataframe

  • metric:默认是confidence

  • min_threshold:给选定的metric设定最低阈值

from mlxtend.frequent_patterns import association_rules	
ass_rule = association_rules(frequent_items, metric='confidence', min_threshold=0.8)	
ass_rule.sort_values(by='leverage', ascending=False, inplace=True)  	
ass_rule

640?wx_fmt=png

从上面看,买了苹果的人,会再买鸡蛋和豆角。可能这人爱吃苹果,主食会来来豆角炒鸡蛋?

编的数据,所以解读就当笑话吧~

近期文章

课件获取方式,请在公众号后台回复关键词“20191015

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值