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 ---悼念512汶川大地震遇难同胞——来生一起走
悼念512汶川大地震遇难同胞——来生一起走 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 学习Tkinter
tutorial point这个网站教程很多,无所不包.还包括一堆在线IDE,值得收藏 一.第一个tkinter程序 import tkinter top = tkinter.Tk() # Code ...
- 分布式缓存技术memcached学习系列(三)——memcached内存管理机制
几个重要概念 Slab memcached通过slab机制进行内存的分配和回收,slab是一个内存块,它是memcached一次申请内存的最小单位,.在启动memcached的时候一般会使用参数-m指 ...
- Google C++单元测试框架之宏
一.概述 gtest中,断言的宏可以理解分为两类,一类是ASSERT系列,一类是EXPECT系列: 1.ASSERT_*系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例) 2.EXCE ...
- X-Forwarded-For的一些理解
X-Forwarded-For 是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址(其实这个真实未必是真实的,后面会说到). 那为什么 Web 服务器只有通过 X- ...
- Python lstrip() 方法
描述 Python lstrip() 方法用于删除字符串头部指定的字符,默认字符为所有空字符,包括空格.换行(\n).制表符(\t)等. 语法 lstrip() 方法语法: S.lstrip([cha ...
- tomcat配置外部静态资源映射路径
一.背景 1.有一个录音软件每天生成很多新的录音文件. 2.现在想通过一个WEB项目页面下载这些录音文件. 3.很显然这些录音文件放在WEB项目下不是很合适(WEB项目更新是个大麻烦,海量的录音文件要 ...
- ios app 实现热更新(无需发新版本号实现app加入新功能)
眼下可以实现热更新的方法,总结起来有下面三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的ios应用 ios app能够在执行时从server拉取最新的js ...
- UHF RFID编码之TPP编码
GB/T 39768通信交互模型 读写器使用TPP对基带数据进行编码,使用DSB-ASK或者SSB-ASK方式调制射频载波,向一个或者多个标签发送命令.命令发送后,读写器继续发送未经调制的射频载波,并 ...
- Struts如何获取客户端ip地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...