$data=array('a'=>array('a'=> 2.5, 'b'=> 3.5, 'c'=> 3.0,'d'=> 3.5, 'e'=> 2.5, 'f'=> 3.0),
'b'=>array('a'=> 3.0, 'b'=> 3.5, 'c'=> 1.5, 'd'=> 5.0, 'f'=> 3.0, 'e'=> 3.5),
'c'=>array('a'=> 2.5, 'b'=> 3.0, 'd'=> 3.5,'f'=> 4.0),
'd'=>array('b'=> 3.5, 'c'=> 3.0, 'f'=> 4.5,'d'=> 4.0, 'e'=> 2.5),
'e'=>array('a'=> 3.0, 'b'=> 4.0, 'c'=> 2.0,'d'=> 3.0, 'f'=> 3.0, 'e'=> 2.0),
'f'=>array('a'=> 3.0, 'b'=> 4.0, 'f'=> 3.0,'d'=> 5.0, 'e'=> 3.5),
'g'=>array('b'=> 4.5,'e'=> 1.0,'d'=> 4.0),
'h'=>array('aa'=> 5.0 ));
function test($arr,$person,$anotherPerson){
if(!array_key_exists($person, $arr) || !array_key_exists($anotherPerson, $arr)){
return 0;
}
$mark = 0;
$result = 0;
foreach($arr[$person] as $key=>$value){
if(array_key_exists($key,$arr[$anotherPerson])){
$mark++;
$result += pow($value-$arr[$anotherPerson][$key],2);
}
}
if($mark == 0){
return 0;
}
return 1/(1+sqrt($result));
}
$result = test($data,'a','b');
echo 'similarity is:'.$result;
欧几里得相似度
最新推荐文章于 2024-04-16 15:26:51 发布