我试图通过使用recommenderlab包在R中做基于用户的推荐,但是我总是从模型中得到0(no)的预测。
我的代码是:
library("recommenderlab")
# Loading to pre-computed affinity data
movie_data<-read.csv("D:/course/Colaborative filtering/data/UUCF Assignment Spreadsheet_user_row.csv")
movie_data[is.na(movie_data)] <- 0
rownames(movie_data) <- movie_data$X
movie_data$X <- NULL
# Convert it as a matrix
R<-as.matrix(movie_data)
# Convert R into realRatingMatrix data structure
# realRatingMatrix is a recommenderlab sparse-matrix like data-structure
r <- as(R, "realRatingMatrix")
r
rec=Recommender(r[1:nrow(r)],method="UBCF", param=list(normalize = "Z-score",method="Cosine",nn=5, minRating=1))
recom <- predict(rec, r["1648"], n=5)
recom
as(recom, "list")我每次出来的时候都会说:
as(recom, "list")
$`1648`
character(0)我正在使用这个链接中的用户行数据:数据列A中的https://drive.google.com/file/d/0BxANCLmMqAyIQ0ZWSy1KNUI4RWc/view包含用户id,除此之外,所有这些都是每个电影名称的电影评级。
谢谢。
发布于 2017-01-22 17:41:24
代码行movie_data[is.na(movie_data)] <- 0是错误的来源。对于realRatingMatrix (与binaryRatingMatrix不同),未被用户评定的电影应该是NA值,而不是零值。例如,以下代码提供了正确的预测:
library("recommenderlab")
movie_data<-read.csv("UUCF Assignment Spreadsheet_user_row.csv")
rownames(movie_data) <- movie_data$X
movie_data$X <- NULL
R<-as.matrix(movie_data)
r <- as(R, "realRatingMatrix")
rec=Recommender(r,method="UBCF", param=list(normalize = "Z-score",method="Cosine",nn=5, minRating=1))
recom <- predict(rec, r["1648"], n=5)
as(recom, "list")
# [[1]]
# [1] "X13..Forrest.Gump..1994." "X550..Fight.Club..1999."
# [3] "X77..Memento..2000." "X122..The.Lord.of.the.Rings..The.Return.of.the.King..2003."
# [5] "X1572..Die.Hard..With.a.Vengeance..1995." https://stackoverflow.com/questions/41792260
复制相似问题