Я использую пакет данных yelp и пакет Recommenderlab для совместной фильтрации.review_mx - это realRatingMatrix, где i - это user_no, j - restaurant_no, а x - звезды. Я хочу только оценить пользователя с более чем 10 отзывами, а рестораны получили более 25 отзывов, я использовал следующий код, но он неработает на самом деле
review_r<-review_mx[rowCounts(review_mx)>10,]
review_r<-review_r[,colCounts(review_r)>25]
И когда я создаю схему с использованиемvaluationSchema:
(e<-
evaluationScheme(review_r,method="split",train=0.9,given=1,goodRating=4,k=5))
Возврат ошибки: ошибка в .local (data, ...): некоторые наблюдения имеют размер
Полный код здесь:
review<-read_lines("D:\\research\\R\\yelp_academic_dataset_review.json",n_max=2000000,progress=FALSE)
reviews_combined <- str_c("[", str_c(review, collapse = ", "), "]")
review <- fromJSON(reviews_combined)
nt_review<-review[,c(1:4)]
Тогда nt_review содержит четыре переменные review_id, user_id, business_id и звезды
user_frame<-data.frame(user_no=seq(1:length(unique(nt_review[,"user_id"]))),user_id=unique(nt_review[,"user_id"]))
business_frame<-data.frame(business_no =seq(1:length(unique(nt_review[,"business_id"]))),business_id=unique(nt_review[,"business_id"]))
nt_review<-merge(nt_review,user_frame,by.x='user_id',by.y='user_id')
review<-merge(nt_review,business_frame,by.x='business_id',by.y='business_id')
review_matrix<- sparseMatrix(
i=review$user_no,
j=review$business_no,
x=review$stars,
dimnames=list(levels(review$user_no),levels(review$business_no))
)
review_mx <-as(review_matrix,"realRatingMatrix")
Кто-нибудь знает, как решить эту проблему?Спасибо.