私はPHPでベイジアン・レーティング・システムに取り組んでいますが、半分しか動作しません。他のメンバーの大部分が高い格付けを与えているなどの理由で、評価が低いと評価されています。これまでには私は年齢を取っていましたが、今は完全に困惑しています。PHPベイジアン・レーティング・システム(人気投票に基づく)
これは、データベースエントリを設定する前に、数学を理解するためのテストスクリプトです(私は数学ではあまりよくありません)。
<?php
// Item 1 votes
$ratings[0][1] = 10;
$ratings[0][2] = 4;
$ratings[0][3] = 1;
$ratings[0][4] = 72;
$ratings[0][5] = 853; // z0mg, lots of people think this is 5 star material!
// Item 2 votes - it's 50:50, rating should be 3
$ratings[1][1] = 1000;
$ratings[1][2] = 1;
$ratings[1][3] = 1;
$ratings[1][4] = 1;
$ratings[1][5] = 1000;
// Item 3 votes - should also be 3
$ratings[2][1] = 1000;
$ratings[2][2] = 1000;
$ratings[2][3] = 1000;
$ratings[2][4] = 1000;
$ratings[2][5] = 1000;
// Item 4 votes - obviously the best thing ever
$ratings[3][1] = 0;
$ratings[3][2] = 0;
$ratings[3][3] = 0;
$ratings[3][4] = 0;
$ratings[3][5] = 99999999999;
foreach($ratings as $rating)
{
$total_votes = $rating[1] + $rating[2] + $rating[3] + $rating[4] + $rating[5];
$weight[1] = $rating[1]/$total_votes;
$weight[2] = $rating[2]/$total_votes;
$weight[3] = $rating[3]/$total_votes;
$weight[4] = $rating[4]/$total_votes;
$weight[5] = $rating[5]/$total_votes;
// 1.0 == $weight[5] + $weight[4] + $weight[3] + $weight[2] + $weight[1];
$yay = $rating[1] * $weight[1];
$yay += $rating[2] * $weight[2];
$yay += $rating[3] * $weight[3];
$yay += $rating[4] * $weight[4];
$yay += $rating[5] * $weight[5];
echo ($yay/$total_votes) * 5;
echo "\n";
}
/*
RESULTS
4.1472951561793
2.4925205800884
1
5
*/
?>
しかし、もちろん、項目2と3の評価は、両方とも3.0でなければなりません...
ホープ誰かが助けることができます。
何が質問ですか? – rdlowrey
申し訳ありませんが、コードを編集してより明確にしましたが、投稿が失敗し、元に戻しました。 投稿を編集しました... "もちろん、アイテム2とアイテム3のレーティングは両方とも3.0でなければなりません..."。だから私はちょうど何が間違っているか知りたいです とコードの結果は、コメントの一番下にあります – Deji
申し訳ありませんが、jQuery、MySQL、またはAJAXがこのランキング機構に適合する場所は表示されません... – sarnold