2017-01-22 40 views
0

Я пытаюсь сделать пользовательскую рекомендацию в R с помощью пакета recommenderlab, но все время я получаю прогноз 0 (нет) из модели.Пользовательская рекомендация в R

мой код:

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) 

Я использую данные пользователя строки из этой ссылке: https://drive.google.com/file/d/0BxANCLmMqAyIQ0ZWSy1KNUI4RWc/view В этой колонке данных A содержит идентификатор пользователя и, кроме того, все это рейтинг фильма для каждого названия фильма.

Спасибо.

+0

Как я могу воспроизвести результат 'character (0)' на моей машине? У меня нет «UUCF Assignment Spreadsheet_user_row.csv», и чтение диска google почему-то не работает (вы попробовали?) – lukeA

+0

Привет, @lukeA FYI, пожалуйста, загрузите данные с https://docs.google.com/spreadsheets/д/1JHI_xYOPWnzfsVyUxLJ6CmO5pdE1WuuVZcEcwllnIBo/редактировать # GID = 871073012 – anindya

ответ

0

Линия кода 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."     

 Смежные вопросы

  • Нет связанных вопросов^_^