3

我的培训数据库中有 3 个集合——用户、企业和评论。我想使用斜率一来预测其他项目的评级,但我不确定如何最好地从 MongoDB 收集企业之间的评级差异。

我在评论集合中有 200,000 个评分,我只想比较具有共享类别的企业。因此,我找到了所有对这些类别下的企业进行评论的用户。

business = businesses.find({'categories':{"$in" : business_categories}},{'business_id'})

for biz in all_businesses:
    biz_list.append(biz['business_id'])
reviews = training_reviews.find({'business_id':{"$in" : biz_list}})

for review in reviews:
    review_list.append(review['user_id'])

available_users = users.find({'user_id':{"$in": review_list}})

一旦我有了我的用户,我需要建立一个包含他们所有评分的矩阵,这样我就可以计算每个企业之间的差异。我的最小尺寸矩阵将是 10k x 10k,并且因为我将为我提出的每个建议都有几个类别,所以我必须为每个建议重做它。

在python中有没有一种有效的方法来做到这一点?导出所有企业的评级矩阵然后从中预测评级会更好吗?

谢谢。

4

1 回答 1

2

我想说,如果您正在寻找效率,您应该尝试将所有相关信息放入评论集合中的嵌入式文档中。

这意味着您可以在 MongoDB 中进行聚合

有关使用嵌入式文档进行建模而不是规范化和一般主题数据模型的讨论,请参阅Model One-to-Many Relations with Embedded Documents

于 2013-11-19T16:34:05.387 回答