R语言:关联规则(apriori)
2015-06-21 22:17
381 查看
本文数据是来自datacastle网站上的一道竞赛题,是基于关联规则进行商品推荐之类的题目
数据集中还包含了对商品的评分和购买时间两个额外变量,下面这篇文章并没有使用到这一个变量,
特别是对商品的评分这个变量,包含了很多有用的信息。
所以说,这篇文章还是一个半成品,有空会补上。
> inspect(myrules[1:10])#查看具体的规则
lhs rhs support confidence lift
1 {118} => {121} 0.1102863 0.6797386 2.693250
2 {121} => {118} 0.1102863 0.4369748 2.693250
3 {118} => {181} 0.1039236 0.6405229 1.755852
4 {181} => {118} 0.1039236 0.2848837 1.755852
5 {275} => {50} 0.1113468 0.5833333 1.432509
6 {50} => {275} 0.1113468 0.2734375 1.432509
更详尽的知识可以参考http://blog.csdn.net/gjwang1983/article/details/45015203
数据集中还包含了对商品的评分和购买时间两个额外变量,下面这篇文章并没有使用到这一个变量,
特别是对商品的评分这个变量,包含了很多有用的信息。
所以说,这篇文章还是一个半成品,有空会补上。
#读入数据 data = read.csv("数据.csv",stringsAsFactors=F) data = data[1:57528,] #取训练集 write.table(data,'shopping.txt') #导出成txt,为导入成transactions做准备 #导出后,在txt文件中,进行替换查找,格式如下:<pre name="code" class="plain">分别是行名,id,商品,评分,购买时间
1 1 1 5 874965758 2 1 3 4 878542960 3 1 4 3 876893119 4 1 5 3 889751712 5 1 7 4 875071561 6 1 9 5 878543541 7 1 13 5 875071805 8 1 15 5 875071608 9 1 16 5 878543541 10 1 18 4 887432020 11 1 19 5 875071515
library(arules) #读入成transactions数据格式 shopping = read.transactions('shopping.txt',format='single',cols=c(2,3)) #可以通过dim(shopping) summary(shopping)来查看数据集的基本情况 #size()查看每个交易的商品数 basketSize = size(shopping) #查看每个item支持度 itemFreq = sort(itemFrequency(shopping),decreasing=T) #将支持度排序 itemFreq[1:5] #查看前五个item的支持度 sum(itemFreq)#本质上代表"平均一个transaction购买的item个数" #根据需要,筛选购买两件以上的交易 shopping[size(shopping) > 1] #运用apriori函数生成规则 myrules = apriori(shopping,parameter=list(support=0.1,confidence=0.25,minlen=2)) #使用summary函数查看规则的汇总信息 summary(myrules) inspect(myrules[1:10])#查看具体的规则具体的规则如下:
> inspect(myrules[1:10])#查看具体的规则
lhs rhs support confidence lift
1 {118} => {121} 0.1102863 0.6797386 2.693250
2 {121} => {118} 0.1102863 0.4369748 2.693250
3 {118} => {181} 0.1039236 0.6405229 1.755852
4 {181} => {118} 0.1039236 0.2848837 1.755852
5 {275} => {50} 0.1113468 0.5833333 1.432509
6 {50} => {275} 0.1113468 0.2734375 1.432509
#按指标对规则进行排序 sort(myrules,by='lift') #搜索规则 subset(myrules,items %in% "12") subset(myrules,lhs %in% "12")#前项含“12”的规则 subset(myrules,rhs %in% "12")#后项含“12”的规则 # %in%是精确匹配 # %pin%是部分匹配,也就是说只要item like '%A%' or item like '%B%' # %ain%是完全匹配,也就是说itemset has ’A' and itemset has ‘B' #保存挖掘结果 #write是arules包函数 write(myrules,'myrules.csv',sep=",", quote=TRUE, row.names=FALSE) write(myrules,'myrules.txt',sep=",", quote=TRUE, row.names=FALSE)#还是csv文件清晰好看 #或者转换成data.frame,再做进一步处理 myrules_df = as(myrules,'data.frame')规则如下:
> head(myrules_df) rules support confidence lift 1 {118} => {121} 0.1102863 0.6797386 2.693250 2 {121} => {118} 0.1102863 0.4369748 2.693250 3 {118} => {181} 0.1039236 0.6405229 1.755852 4 {181} => {118} 0.1039236 0.2848837 1.755852 5 {275} => {50} 0.1113468 0.5833333 1.432509 6 {50} => {275} 0.1113468 0.2734375 1.432509
更详尽的知识可以参考http://blog.csdn.net/gjwang1983/article/details/45015203
相关文章推荐
- Maven常用命令
- 读后感
- ArchLinux - 安装指南
- 团队项目——总结
- 日常3--ueitor
- 自学Swift-斯坦福笔记整理(五)
- java基础—FileWriter 的使用
- COJ 0981 WZJ的数据结构(负十九)树综合
- 黑马程序员--Try...catch...finally语句总结
- 华为历年机试题型总结系列(三)
- 《人,绩效和职业道德》 读后感
- jqery选择器
- win8 64+theano+keras
- java学习之多态和动态捆绑
- hdu 1037
- 自动化测试理念
- 数据库系统概论之查询
- HDU 5273 Dylans loves numbers(水题)
- Python核心编程笔记---- print
- Effective C++ 条款4