• 登录
Skip to content

一起大数据-技术文章心得

一起大数据网由数据爱好者发起并维护,专注数据分析、挖掘、大数据相关领域的技术分享、交流。不定期组织爱好者聚会,期待通过跨行业的交流和碰撞,更好的推进各领域数据的价值落地。

Menu
  • 首页
  • 大数据案例
  • 数据&电子书
  • 视频
    • Excel视频
    • VBA视频
    • Mysql视频
    • 统计学视频
    • SPSS视频
    • R视频
    • SAS视频
    • Python视频
    • 数据挖掘视频
    • 龙星计划-数据挖掘
    • 大数据视频
    • Machine Learning with Python
  • 理论
    • 统计学
    • 数据分析
    • 机器学习
    • 大数据
  • 软件
    • Excel
    • Modeler
    • Python
    • R
    • SAS
    • SPSS
    • SQL
    • PostgreSQL
    • KNIME
  • 技术教程
    • SQL教程
    • SPSS简明教程
    • SAS教程
    • The Little SAS Book
    • SAS EG教程
    • R语言教程
    • Python3教程
    • IT 技术速查手册
    • Data Mining With Python and R
    • SAS Enterprise Miner
  • 问答社区
  • 我要提问
Menu

使用Python mlxtend 实现购物篮分析

Posted on 2022年2月15日

作者:橘猫吃不胖

链接:https://www.jianshu.com/p/cdf90ce7100c

购物篮分析零售行业经常做的分析,最近也接到了这个需求,正好彻底研究一下。其实,也就是相关分析,挖掘下商品间的关联关系。

购物篮就是我们逛超市的时候,手里推的那个小车,手里提的那个篮子,从数据层面来看也就是每一笔订单就可以当成一个购物篮。购物篮分析要做的就是,用户在每一次消费时,喜欢买哪些商品,哪些商品会组合购买,如果买了商品A,用户还会买什么,就是发现商品与商品之间的联系。

最经典的例子就要数那个啤酒与尿布的故事了。

基本概念

在关联分析中,有些指标我们需要先理解下

支持度(Support)
其实就是出现的概率,在这里就是购买了某个商品的订单数占比

Support(X)=\frac {购买商品X的订单数} {总订单数}

Support(X,Y)=\frac {同时购买商品X、Y的订单数} {总订单数}

置信度(Confidence)
置信度已经涉及关联规则了,同时购买商品X、Y的订单数占购买商品X的订单数的比例,这里说明的就是,“如果购买了X,那么购买Y的概率是多少”

Confidence(X->Y)=\frac {同时购买商品X、Y的订单数} {购买商品X的订单数}

Confidence(Y->X)=\frac {同时购买商品X、Y的订单数} {购买商品Y的订单数}

提升度(Lift)
我没有找到一个很好地定义方式,这个提升度主要是用来衡量X与Y的相关性的

  • 提升度 >1 且越高表明正相关性越高;
  • 提升度 <1 且越低表明负相关性越高;
  • 提升度 =1 表明没有相关性。

Lift(X->Y)=\frac {Confidence(X->Y)} {Support(Y)} = \frac {\frac {同时购买商品X、Y的订单数} {购买商品X的订单数}} {\frac {购买商品Y的订单数} {总订单数}}


我们来简单整理一下,我们要做相关分析,这里就是购物篮分析,通过支持度,我们可以知道哪些商品或者组合商品出现的概率比较高;当我们要思考商品连带性的时候,是买了X,会再去买Y,还是买了Y再去买X的概率更高,置信度就用上了;有了置信度还得看看提升度,看看他们之间的相关性到底强不强,有多强。

实现方式

要实现购物篮分析,其实有很多种方法,上面的几种考核指标都很清晰了,我们使用SQL也是可以统计的,只不过有点儿麻烦,需要手动做一个商品的组合,或者使用商品间笛卡尔积作为基础表,但是这还得看组合数量,如果只组合2种还好,组合3种、4种呢?
再就是使用Python或者R来做了,可以选择自己代码实现,也可以使用现有的开源包,我们只要用就行了,这里我也是直接使用了Python中的mlxtend拓展包。

数据处理

这里把数据处理单独拎出来说一下,做关联分析,需要注意下数据的选取,比如有些行业需要考虑场景,如早中晚这种,每种场景下用户购物偏好不一样,每种场景都有适合的商品组合;
再比如最近的打折促销的商品要剔除掉,因为要走量,所以可能很多订单都有这件商品,会影响我们的最后结论;
还有就是一些附赠品,试用品,新人优惠的商品,都是会影响我们结论的一些数据。

Python实现代码

好了,到了这里,来分享下代码,其实很简单,兜风装好了,直接调用就行了

 

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 26 16:40:36 2019

@author: 橘猫吃不胖

购物篮分析实例
"""

import pandas as pd

# 引入订单数据
df = pd.read_csv('D:/tmall_basket_series.csv')

# 转换成指定的格式
basket = (df.groupby(['ORDER_NO', 'PROD_NAME'])['ORDER_NO']
          .count().unstack()
          .fillna(0))

def encode_units(x):
    if x <= 0:
        return 0
    if x >= 1:
        return 1

# 将数据填充为0、1的格式
basket_sets = basket.applymap(encode_units)   

from mlxtend.frequent_patterns import apriori

# 生成频繁项目集,指定最小支持度为0.5
frequent_itemsets=apriori(basket_sets, min_support=0.5, use_colnames=True)
frequent_itemsets.to_csv('D:/tmall_basket_series_support.csv')


from mlxtend.frequent_patterns import association_rules
# 生成关联规则,最小置信度为0.01
rules=association_rules(frequent_itemsets, metric="confidence", min_threshold=0.01)
rules.to_csv('D:/tmall_basket_series_bi.csv')

这里核心的都是调用mlxtend来实现的,我们要做的就是对数据进行处理。

 

 

恭喜你,又看完一篇文章,扫码领个红包吧!图片

推荐访问

欢迎加入我们的付费交流社群,增长见识,互帮互助! 自2023-05-01起正式运营。
图片

数据分析交流:数据分析交流
Excel学习: Excel学习交流
Python交流:一起学习Python(数据分
SQL交流:一起学习SQL(数据分析
微博:一起大数据

最新提问

  • 统计方面的3个Python包
  • 更新R及Rstudio
  • TFP CausalImpact:一个Python包,用于估计设计干预对时间序列的因果效应
  • 根据公式的结构,写出计算的表达式,并结算结果
  • excel中提取超级链接公式中的链接地址
  • 用python解析公式并进行可视化
  • Python设置镜像源默认为清华的方法
  • VAR、VMA、VARMA 和 ARIMA
  • Python 的表达式解析库来解析公式
  • PandasAI:一个Python库,将生成式AI能力集成到Pandas中,允许进行高级数据分析任务,例如数据合成和增强

文章标签

AMOS CBC Excel GBDT KNN Modeler Mysql pandas PostgreSQL python python数据可视化 R SAS sklearn SPSS SQL SVM Tableau TensorFlow VBA 主成分分析 关联规则 决策树 协同过滤 可视化 因子分析 大数据 大数据分析 推荐系统 数据分析 数据可视化 数据挖掘 数据透视表 文本挖掘 时间序列 机器学习 深度学习 神经网络 结构方程 统计学 联合分析 聚类 聚类分析 逻辑回归 随机森林
©2023 一起大数据-技术文章心得 | Design: Newspaperly WordPress Theme