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语言实战实现基于用户的简单的推荐系统(数量较少)的更多相关文章

  1. R语言实战(十)处理缺失数据的高级方法

    本文对应<R语言实战>第15章:处理缺失数据的高级方法 本文仅在书的基础上进行简单阐述,更加详细的缺失数据问题研究将会单独写一篇文章. 处理缺失值的一般步骤: 识别缺失数据: 检查导致数据 ...

  2. R语言实战(九)主成分和因子分析

    本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...

  3. R语言实战(七)图形进阶

    本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...

  4. R 语言实战-Part 4 笔记

    R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...

  5. R 语言实战-Part 3 笔记

    R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...

  6. R语言实战(第二版)-part 1笔记

    说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...

  7. R 语言实战-Part 5-1笔记

    R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ...

  8. R语言实战(三)基本图形与基本统计分析

    本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...

  9. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

随机推荐

  1. HDUOJ----(1084)What Is Your Grade?

    关键是自己没有读懂题目而已,不过还好,终于给做出来了...... What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  2. HDUOJ---Hamming Distance(4712)

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  3. Java使用Selenium几个例子

    零.姿势 Selenium分为两个版本:Selenium RC和Selenium Webdriver.现在用Selenium Webdriver比较多. Selenium是一套工具,而不仅仅是一个操纵 ...

  4. github常见操作和常见错误及其解决办法

    一.常见操作 1. 使用git在本地创建一个项目的过程 $ makdir ~/hello-world //创建一个项目hello-world $ cd ~/hello-world //打开这个项目 $ ...

  5. web development blog(转)

    Top 10 jQuery Mobile Code Snippets that you need to know jQuery Mobile is a framework for mobile web ...

  6. Android SDK目录结构介绍

    Android SDK目录下有很多文件夹,主要都是干什么的呢? 1. add-ons 这里面保存着附加库,比如Google Maps,当然你如果安装了Ophone SDK,这里也会有一些类库在里面. ...

  7. python学习笔记011——内置函数__module__、__name__

    1 __module__描述 __module__ : 如果当前模块为顶层模块执行 则打印__main__ 如果当前模块为被调用模块的时候 打印当前模块的名称 2 __module__示例 def f ...

  8. 下载url地址的图片

    // string url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=cNaaMfvhpb1vmcVRXRAdI ...

  9. UNIX域套接字编程和socketpair 函数

    一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...

  10. Eclipse color theme jsp javascript显示问题

    Q: 在eclipse 中,设置为sublime格式时, 在编辑器中,jsp中嵌套的javascript底色非常难看. A:在如下位置进行设置,Window -> Preferences-> ...