2017-04-14 9 views
0

Cypherではユークリッド距離ではなくJaccard距離Djを考慮するためにk-meansをどのように変更しますか?k-平均クラスタリングのJaccard

ジャカードの距離がDjの= 1-ように定義されて

(|A∪B|)(| |A∩B)/

+0

このグラフを確認してくださいhttp://gp://www4j.com/graphgist/49a2b9874b37b4a2da4a/ –

答えて

0

はここ(Recommendations Neoj Sandboxから)サイファーとジャカードの距離を計算する方法の例です:

MATCH (m:Movie {title: "Inception"})-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE]-(other:Movie) 
WITH m, other, COUNT(g) AS intersection, COLLECT(g.name) AS i 
MATCH (m)-[:IN_GENRE]->(mg:Genre) 
WITH m,other, intersection,i, COLLECT(mg.name) AS s1 
MATCH (other)-[:IN_GENRE]->(og:Genre) 
WITH m,other,intersection,i, s1, COLLECT(og.name) AS s2 
WITH m,other,intersection,s1,s2 
WITH m,other,intersection,s1+filter(x IN s2 WHERE NOT x IN s1) AS union, s1, s2 
RETURN m.title, other.title, s1,s2,((1.0*intersection)/SIZE(union)) AS jaccard ORDER BY jaccard DESC LIMIT 100 

これを計算したら、k平均アルゴリズムで使用できます。どうやってk平均を走っているの? Cypherでも?

+0

ありがとうございます!はい、これは結局neo4jクエリになります。 – ProdBot

関連する問題