R语言实战实现基于用户的简单的推荐系统(数量较少)
R语言实战实现基于用户的简单的推荐系统(数量较少)
a<-c(1,1,1,1,2,2,2,2,3,3,3,4,4,4,5,5,5,5,6,6,7,7)
b<-c(1,2,3,4,2,3,4,5,4,1,2,3,2,4,5,2,6,4,1,2,3,4)
da<-data.frame(a,b)
a<-c(1,1,2,2,3,3,3,3,3,4,4,5,5,5,6,6,7,7)
b<-c(2,5,7,2,6,4,7,1,8,6,3,3,4,1,2,4,4,9)
da2<-data.frame(a,b)
ax<-unique(da$a)
bx<-unique(da$b)
m<-matrix(0,max(ax),max(ax))
for(i in 1:max(ax))
{
for(j in 1:max(ax))
{
if(i==j)
{
m[i,j]=0
}else{
m[i,j]=length(intersect(t(da[which(da$a==i),][2]),t(da[which(da$a==j),][2])))
}
}
}
m
myfun<-function(da,k,da2,m)
{
uid<-unique(c)
pre=0
recall=0
for (mm in 1:max(uid))
{
aa<-which(rank(-m[mm,])<k)
bb<-unique(da[unlist(lapply(da$a,function(x){
length(intersect(x,aa))!=0
})),][2])
movie<-setdiff(t(bb),t((da[which(da$a==mm),][2])))
movie2<-t(da2[da2$a==mm,][2])
p<-length(intersect(movie,movie2))/length(movie)
r<-length(intersect(movie,movie2))/length(movie2)
pre<-pre+p
recall<-recall+r
if(mm==1)
{
user_top1<-which(rank(-m[mm,])<k)
movie_top2<-sort(movie[rank(movie)<k])
print(user_top1)
print(movie_top2)
}
}
preA<-pre/length(uid);
recallA<-recall/length(uid);
dataframe<-data.frame(c(k),preA,recallA)
return(dataframe)
}
df<-myfun(da,4,da2,m);
preA<-c()
recallA<-c()
k<-c()
daa<-data.frame(k,preA,recallA)
for(i in 3:7)
{
df<-myfun(da,i,da2,m);
daa<-rbind(daa,df)
}
daa
library(ggplot2)
qplot(preA,recallA,data=daa ,geom = c("point", "smooth"))
preA<-c()recallA<-c()k<-c()daa<-data.frame(k,preA,recallA)
R语言实战实现基于用户的简单的推荐系统(数量较少)的更多相关文章
- R语言实战(十)处理缺失数据的高级方法
本文对应<R语言实战>第15章:处理缺失数据的高级方法 本文仅在书的基础上进行简单阐述,更加详细的缺失数据问题研究将会单独写一篇文章. 处理缺失值的一般步骤: 识别缺失数据: 检查导致数据 ...
- R语言实战(九)主成分和因子分析
本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...
- R语言实战(七)图形进阶
本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...
- R 语言实战-Part 4 笔记
R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...
- R 语言实战-Part 3 笔记
R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...
- R语言实战(第二版)-part 1笔记
说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...
- R 语言实战-Part 5-1笔记
R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ...
- R语言实战(三)基本图形与基本统计分析
本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...
- R语言实战(四)回归
本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
随机推荐
- Swing(Java)--维基百科
Swing是一个为Java设计的GUI工具包.Swing是Java基础类的一部分.Swing包括了图形用户界面(GUI)组件如:文本框,文本域,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏 ...
- nyoj-----前缀式计算
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀 ...
- C#中Windows Media Player控件使用实例|方法
Windows Media Player控件Windows Media Player是一种媒体播放器,可以播放当前最流行的音频.视频文件和大多数混合型的多媒体文件.为了便于程序的开发,Visual S ...
- RabbitMQ消息队列(五):Routing 消息路由 2[原]
上一篇文章使用的是Direct的Exchange,但是没有指定Queue的名字,这样只能是先运行Consumer之后,Producer在运行发消息Consumer才能收到,否则先运行Producer发 ...
- LINUX使用DVD光盘或者ISO作为本地YUM源
先把光盘或 ISO 文件挂载到文件系统: # mkdir /media/iso 挂载光盘: # mount /dev/cdrom /media/iso 或挂载 ISO 文件: mount -o loo ...
- 计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
程序猿都非常懒.你懂的! java程序猿在实际的开发中会遇到非常多的单位换算问题.今天我给大家带来的是关于计算机硬盘大小的换算.多数情况下.一般要求b,kb,mb,gb,tb,pb之间的大小转换,我们 ...
- debian更新源时找不到公钥的解决办法
W: GPG error: http://mirrors.163.com jessie-updates InRelease: The following signatures couldn't be ...
- js面向对象编程:this究竟代表什么?
在js中this的使用方法非常让人迷惑.有些像Java或者C#中的this,但又不全然一样.依照流行的说法this总是指向调用方法的对象. 1.纯粹函数调用. function ListCommon2 ...
- 使用python执行linux命令
python版本是2.7.12 一.简单的获取linux命令的执行结果,比如:获取一个PID的进程树结构,linux命令是pstree -p pid,在python中有一个模块可以方便的获取.至于有时 ...
- django找不到模板(TemplateDoesNotExist at)的异常处理案例
一.django的渲染模板时报如下错: TemplateDoesNotExist at 二.定位问题: 1.由上面报的错.一开始以为是找不到模板(自己路径写的不对).后来发现我的路径写的是正确的. 2 ...