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. std::copy 和 std::back_inserter

    #define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ cout<<*iter&l ...

  2. 狄斯奎诺(dijkstra 模板)

    /*狄斯奎诺算法(dijkstra)<邻接表> */ #include<stdio.h> #include<string.h> #include<stdlib ...

  3. Block全面分析

    1.第一部分 定义和使用Block, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - (void)view ...

  4. TortoiseSVN 清空已保存的用户信息

    http://blog.csdn.net/zb358983019/article/details/72898231.如果使用的是安装版的SVN,则打开系统开始菜单中Tortoise下的Settings ...

  5. [转]Splay Tree

    转自:http://blog.sina.com.cn/s/blog_7c4c33190100sg9r.html Splay Tree(又叫伸展树)本质上也是一棵二叉查找树.它不是严格平衡的,但通过一种 ...

  6. RHEL7 -- RPM包命名规则

    rpm软件包文件采用软件包名称组合name-version-release.architecture的方式进行命名  以下面的rpm包为例: kernel-devel--.el7.x86_64 ·na ...

  7. ASP.NET Helper

  8. ASP.NET的一些小问题

    如何获取网站当前绝对路径? string path = HttpRuntime.AppDomainAppVirtualPath; 注:该路径结尾不含'/'.

  9. 2015小米暑期实习笔试题_风口的猪-中国牛市(dp)

    风口之下.猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回想历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i] ...

  10. 跟我一起学习VIM - vim插件合集

    2016-06-14 15:04 13333人阅读 评论(0) 收藏 举报 分类: Linux(104)  目录(?)[+]  前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教 ...