1

我正在尝试在R. 数据集如下: https ://drive.google.com/file/d/1FVh-Xg3NBtzKgZHnDTi7IjaATW_fPmW9/view?usp=sharing

beer_data <- read.csv("beer_data.csv", stringsAsFactors = F)
library(recommenderlab)
r <- as(beer_data, "realRatingMatrix")

现在,如果我们检查每个对象中的评论数量,两者都不匹配

nrow(beer_data)  # 475984
length(getRatings(r)) # 474560

而且评级范围也不匹配:

> range(beer_data_master$review_overall)

[1] 0 5

> range(getRatings(r))

[1] 0 15

我也检查了其他数据集,没有出现问题。

4

1 回答 1

1

我得到了答案:

数据中有一些用户对同一种啤酒进行了多次评分(两次/三次……等)。因此,recommenderLabs 在将数据强制转换为 realRatingMatrix 时会添加此类行的评分,这就是评分值大于 5 且 getRatings 的长度小于 beer_data 的 nrow 的原因。

例如样品 beer_data

beer_beerid、review_profilename、review_overall

19667, 57md, 3.5 19667, 57md, 4.0

所以在 realRatingMatrix 中 user="57md" 和 item = "19667" 评级 = 3.5+4 = 7.5 并且 1 行在 realRatingMatrix 中减少。

由于同样的原因,beer_beerid 和 rating 的非唯一组合被组合,这导致对象、dataframe 和 realRatingMatrix 中的评分计数不匹配。

于 2018-05-10T02:56:04.593 回答