数据集描述
上周数据挖掘学习了关联规则,今天来练习一下。
回顾一下一些重要的名词:
数据集是Foodmart1997年和1998年的购物篮数据(合并为了一个数据集sales.txt),购物篮items用编号表示;编号对应的具体商品列表在productList.txt
参考:https://blog.csdn.net/gjwang1983/article/details/45015203
关联规则和可视化用的R语言,主要是arules和arulesViz两个包,但部分对数据集的处理用的Python(R我用得不太熟练),以下代码若无额外说明都是R语言
# 导入我们需要用到的包
library(arules) # association rules
library(arulesViz) # data visualization of association rules
library(RColorBrewer) # color palettes for plots
library(shinythemes) # 交互式的绘图需要
# 读取交易数据集(这里我已经将97和98年数据手动合并成了sales.txt)
sales <- read.transactions("Sales.txt", format = "basket", sep =" ")
summary(sales)
output:
summary的含义:
- 第一段:总共有54600条交易记录,1559种商品。density = 0.00295表示在稀疏矩阵中1的百分比。
- 第二段:最频繁出现的商品item,以及其出现的次数。可以计算出最大支持度。
- 第三段:每笔交易包含的商品数目,以及其对应的5个分位数和均值的统计信息。如:4003条交易仅包含了1个商品,7825条交易购买了2件商品,1条交易购买了27件商品。第一分位数是3,意味着25%的交易包含不超过3个item。中位数是4。所有的交易平均购买4.6件商品。
- 第四段:如果数据集包含Item之外的其他的列(如,交易的时间,用户ID等等),会显示在这里。
查看一下数据集的前5行:
inspect(sales[1:5]) # 查看数据
items
1 {1441,326,932}
2 {1038,1148,555}
3 {327,377,653,942}
4 {118,1227,1383,390,673,761}
5 {113,1401,363,452,525,768}
初步探索
对交易数据进行一些简单的描述统计吧,比如计算一个每个商品item出现的频数和频率。频率可以用itemFrequency()这个函数直接计算得到,通过itemFrequencyPlot()可以画出最频繁被购买的商品
itemFreq <- itemFrequency(sales) # ItemFrequency是这个item的支持度(在transaction中出现的频率)
basketSize = size(sales) # 每个transaction包含item的数目
itemCount <- (itemFreq/sum(itemFreq))*sum(basketSize) # 每个item出现的次数
sum(itemFreq) # 平均一个transaction购买的item个数
orderedItemFreq <- sort(itemFrequency(sales)