0

次のコードを使用して、製品レビューのベイジアン平均を計算しています。

@bayesian = (((Review.count * Review.average(:score)) + (style.reviews.count +style.reviews.average(:score)))/(Review.count+style.reviews.count)).to_int

この議論に従って(ページを3分の1下にスクロールします):

http://blog.linkibol.com/2010/05/07/how-to-build-a-popularity-algorithm-you-can-be-proud-of/

奇妙なことに、これらは私のページに表示されている結果です。

ここに画像の説明を入力

明らかに記事の論理からすると、4 票で平均スコアが 59% の製品は、1 票で平均 50% の製品よりも高いベイジアンで表示されるはずです。

ここでの実装に問題はありますか?

4

1 に答える 1

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)
于 2012-08-04T22:46:33.927 に答える