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章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
随机推荐
- 网络工程实训_4RIP路由(动态路由)
实验4:RIP路由.包括RIPv1:RIPv2 动态路由协议包括距离向量路由协议和链路状态路由协议.RIP(Routing Information Protocol,路由信息协议)是使用最广泛的距离向 ...
- 运行shell出错: 没有那个文件或目录
http://blog.163.com/zhangjie_0303/blog/static/99082706201136114548840/
- python学习笔记——线程threading (二)重写run()方法和守护进程daemon()
1 run()方法 1.1 单个线程 在threading.Thread()类中有run()方法. from time import ctime,sleep import threading # 定义 ...
- Maven + Eclipse + Tomcat - 开启项目调试之旅(转载)
本文的读者需要拥有一些Maven基础知识和实践,如果没有,请直接绕过或者先看一些关于Maven教程,比如Juven翻译的<Maven权威指南>,google一下便知. 开门见山,首先抛出一 ...
- 内存管理算法--Buddy伙伴算法【转】
转自:http://blog.csdn.net/orange_os/article/details/7392986 Buddy算法的优缺点: 1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是 ...
- 进程枚举之PSAPI函数
使用PSAPI (Process StatusAPI)函数 这是一种Windows NT/2000下的方法.核心是使用EnumProcesses函数.它的原型如下: BOOL EnumProcesse ...
- C# 基础知识 (四).C#简单介绍及托管代码
暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了非常多东西,也学到了非常多东西,也认识到了非常多不足之处!闲暇之余我准备又一次进一步巩固C#相关知识,包含 ...
- eclipse逆向生成实体类注解方式或者xml方式
转载自:http://www.2cto.com/database/201501/372023.html http://blog.csdn.net/wangpeng047/article/details ...
- ubuntu16.4搭建tensorflow环境
1 说明: 本机配置:显卡gtx970,ubuntu16.4.1+cuda8.0+cudnn v5+tensorflow0.11 1. 下载 1.1 系统镜像 由于我尝试了ubuntu14.04,安装 ...
- svnserve配置文件详析
svnserve是SVN自带的一个轻型服务器,客户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务 器,实现远程访问SVN版本库. svnserve可以通过配置文 ...