我使用以下代码为我的产品评论提供贝叶斯平均值:
@bayesian = (((Review.count * Review.average(:score)) + (style.reviews.count +style.reviews.average(:score)))/(Review.count+style.reviews.count)).to_int
根据此讨论(向下滚动第三页):
http://blog.linkibol.com/2010/05/07/how-to-build-a-popularity-algorithm-you-can-be-proud-of/
奇怪的是,这些是我在页面上看到的结果:
显然,根据文章的逻辑,我应该看到一个产品有4票,平均得分为59%,贝叶斯比一票多产,平均为50%。
我的实施在这里有问题吗?
答案 0 :(得分:1)
对不起大家,答案很简单。我应该写:
@bayesian = (((Review.count * Review.average(:score)) + (style.reviews.count *style.reviews.average(:score)))/(Review.count+style.reviews.count)).to_int
只需将该+更改为* *:
style.reviews.count * style.reviews.average(:score)