"PHP Jaccard 유사성 지수 구현"의 두 판 사이의 차이

잔글 (로봇: 자동으로 텍스트 교체 (-http://jmnote.com/php/ +http://zetawiki.com/ex/php/))
잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
3번째 줄: 3번째 줄:


==함수==
==함수==
<source lang='php'>
<syntaxhighlight lang='php'>
function jaccard_index($set1, $set2) {
function jaccard_index($set1, $set2) {
$union_cnt = count(array_unique(array_merge($set1, $set2)));
$union_cnt = count(array_unique(array_merge($set1, $set2)));
10번째 줄: 10번째 줄:
return $intersect_cnt / $union_cnt;
return $intersect_cnt / $union_cnt;
}
}
</source>
</syntaxhighlight>


==예제==
==예제==
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
function jaccard_index($set1, $set2) {
function jaccard_index($set1, $set2) {
49번째 줄: 49번째 줄:
}
}
echo "</table>";
echo "</table>";
</source>
</syntaxhighlight>
*http://zetawiki.com/ex/php/jaccard_index.php
*http://zetawiki.com/ex/php/jaccard_index.php
<source lang='text'>
<syntaxhighlight lang='text'>
구분 A B C D
구분 A B C D
A - 0.40 0.14 0.50
A - 0.40 0.14 0.50
57번째 줄: 57번째 줄:
C 0.14 0.33 - 0.25
C 0.14 0.33 - 0.25
D 0.50 0.78 0.25 -
D 0.50 0.78 0.25 -
</source>
</syntaxhighlight>
:→ 집합 B와 D는 유사성 0.78 → 상당히 유사함
:→ 집합 B와 D는 유사성 0.78 → 상당히 유사함



2020년 11월 2일 (월) 02:34 기준 최신판

PHP Jaccard 유사성 지수 구현
PHP 자카드 유사도

1 함수[ | ]

function jaccard_index($set1, $set2) {
	$union_cnt = count(array_unique(array_merge($set1, $set2)));
	if($union_cnt < 1) return 1;
	$intersect_cnt = count(array_intersect($set1, $set2));
	return $intersect_cnt / $union_cnt;
}

2 예제[ | ]

<?php
function jaccard_index($set1, $set2) {
	$union_cnt = count(array_unique(array_merge($set1, $set2)));
	if($union_cnt < 1)return 1;
	$intersect_cnt = count(array_intersect($set1, $set2));
	return $intersect_cnt / $union_cnt;
}

$sets = array();
$sets['A'] = array(3,5,6,7,8);
$sets['B'] = array(1,2,3,4,5,6,8,9,10);
$sets['C'] = array(2,3,9);
$sets['D'] = array(1,2,3,4,5,6,8);

$cnt = count($sets);
echo "<table>";
echo "<th>구분</th>";
foreach(array_keys($sets) as $i) {
	echo "<th>$i</th>";
}
foreach($sets as $i => $set1) {
	echo "<tr>";
	echo "<th>$i</th>";
	foreach($sets as $j => $set2) {
		if($i == $j) {
			$j_index = '-';
		} else {
			$j_index = jaccard_index($set1, $set2);
			$j_index = number_format($j_index, 2);
		}
		echo "<td>$j_index</td>";
	}
	echo "</tr>";
}
echo "</table>";
구분	A	B	C	D
A	-	0.40	0.14	0.50
B	0.40	-	0.33	0.78
C	0.14	0.33	-	0.25
D	0.50	0.78	0.25	-
→ 집합 B와 D는 유사성 0.78 → 상당히 유사함

3 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}