计算斜率来自MongoDB的一个差异

时间:2013-08-05 04:33:58

标签: python mongodb recommendation-engine collaborative-filtering

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

我在Review系列中有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中有一种有效的方法吗?为所有业务导出评级矩阵然后从中预测评级会更好吗?

感谢。

1 个答案:

答案 0 :(得分:2)

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

这意味着你可以在MongoDB中聚合

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