3

それぞれ 2 つの配列のデータベースから 2 人のユーザーのレコードを取得しました。記録は、ツイッターと同じように他の人をフォローしている人のものです。2 人のユーザーが異なる数のユーザーをフォローしている可能性があるためです。したがって、2 つの配列の長さは異なります。私は一般の人々を格納する新しい配列を作成しました(人の後に両方のユーザーが続きます)。2 人のユーザーの類似度 % を取得するにはどうすればよいですか。2 人のユーザーに共通のフォロワーが 5 人いる場合、2 人のユーザーに共通のフォロワーが 2 人いる場合よりも類似性が高いとします。

foreach($common as $row){
//do events
echo $row['name']."<br>";
$count_common++;
}
echo "total common ".$count_common;
$similarity = (count($common)/(count($user1_follows))*100);

上記の式は、同じ長さの配列に基づいているため、正しい結果を計算しません。これは、 PHPで2つの配列の類似性の割合を取得するための関連する質問です

4

1 に答える 1

10
$p1 = array("foo", "bar", "grep");
$p2 = array("foo", "buzz", "fizz", "bar");
$similar = array_intersect($p1, $p2);
$p1_perc = count($similar) / count($p1); // 0.66..
$p2_perc = count($similar) / count($p2); // 0.5

1 つの番号を取得するには:

$perc = 2 * count($similar) / (count($p1) + count($p2)); // 0.5714..
于 2013-01-02T17:14:50.450 に答える