查看原文
其他

利用mlxtend进行数据关联分析

大邓 大邓和他的Python 2022-07-09

guan

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

基本概念

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

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

mlxtend安装

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

  1. !pip3 install mlxtend

编码

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

  1. import pandas as pd

  2. from mlxtend.preprocessing import TransactionEncoder


  3. #测试数据

  4. records = [['牛奶', '洋葱', '猪肉', '鸡蛋', '洋葱', '酸奶'],

  5. ['洋葱', '豆角', '酸奶', '鸡蛋', '苹果'],

  6. ['牛奶', '苹果', '豆角', '鸡蛋'],

  7. ['牛奶', '玉米', '胡萝卜', '豆角', '酸奶'],

  8. ['玉米', '洋葱', '豆角', '冰激凌', '鸡蛋']]


  9. Encoder = TransactionEncoder()

  10. encoded_data = Encoder.fit_transform(records)

  11. df = pd.DataFrame(encoded_data, columns=Encoder.columns_)

  12. df

频繁项

找出频繁项,这里会用到 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。

  1. from mlxtend.frequent_patterns import apriori


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

  3. frequent_items

求关联规则

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

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

  • df: 频繁项dataframe

  • metric:默认是confidence

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

  1. from mlxtend.frequent_patterns import association_rules


  2. ass_rule = association_rules(frequent_items, metric='confidence', min_threshold=0.8)


  3. ass_rule.sort_values(by='leverage', ascending=False, inplace=True)


  4. ass_rule

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

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

近期文章

python爬虫与文本数据分析 系列课

pip安装问题解决办法

tabulate:好看的字符串表格库

如何理解pandas中的transform函数

计算社会经济学

免费视频课《Python快速入门》

初学Python常见异常错误

Python 函数式编程指北,不只是面向对象哦

一行pandas代码生成哑变量

顺利开班 | python爬虫分析2019年杭州国庆工作坊顺利开班

圆满落幕 | Python 爬虫分析杭州国庆工作坊圆满落幕

文本数据分析文章汇总(2016-至今)


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



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存