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章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
随机推荐
- HDUOJ----(1084)What Is Your Grade?
关键是自己没有读懂题目而已,不过还好,终于给做出来了...... What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memor ...
- HDUOJ---Hamming Distance(4712)
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- Java使用Selenium几个例子
零.姿势 Selenium分为两个版本:Selenium RC和Selenium Webdriver.现在用Selenium Webdriver比较多. Selenium是一套工具,而不仅仅是一个操纵 ...
- github常见操作和常见错误及其解决办法
一.常见操作 1. 使用git在本地创建一个项目的过程 $ makdir ~/hello-world //创建一个项目hello-world $ cd ~/hello-world //打开这个项目 $ ...
- web development blog(转)
Top 10 jQuery Mobile Code Snippets that you need to know jQuery Mobile is a framework for mobile web ...
- Android SDK目录结构介绍
Android SDK目录下有很多文件夹,主要都是干什么的呢? 1. add-ons 这里面保存着附加库,比如Google Maps,当然你如果安装了Ophone SDK,这里也会有一些类库在里面. ...
- python学习笔记011——内置函数__module__、__name__
1 __module__描述 __module__ : 如果当前模块为顶层模块执行 则打印__main__ 如果当前模块为被调用模块的时候 打印当前模块的名称 2 __module__示例 def f ...
- 下载url地址的图片
// string url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=cNaaMfvhpb1vmcVRXRAdI ...
- UNIX域套接字编程和socketpair 函数
一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...
- Eclipse color theme jsp javascript显示问题
Q: 在eclipse 中,设置为sublime格式时, 在编辑器中,jsp中嵌套的javascript底色非常难看. A:在如下位置进行设置,Window -> Preferences-> ...