日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

neo4j实现Louvain算法

發(fā)布時(shí)間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 neo4j实现Louvain算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 例子一:創(chuàng)建一個(gè)屬性圖(無(wú)權(quán))
  • 一、屬性圖如下
  • 二、實(shí)現(xiàn)算法
    • 1.stream模式執(zhí)行Louvain算法(匿名圖)
    • 2.結(jié)果如下
  • 總結(jié)一:
  • 例子二:創(chuàng)建一個(gè)屬性圖(有權(quán))
  • 一、屬性圖如下
  • 二、算法實(shí)現(xiàn)
    • 1.stream模式執(zhí)行Louvain算法(命名圖)
    • 2.結(jié)果如下
    • 3.帶權(quán)值計(jì)算
    • 4.結(jié)果如下
    • 5.含原始社區(qū)屬性計(jì)算
    • 6.結(jié)果如下
  • 總結(jié)二:


例子一:創(chuàng)建一個(gè)屬性圖(無(wú)權(quán))

這次用的方法是本地load導(dǎo)入的,兩個(gè)代碼塊分別導(dǎo)入節(jié)點(diǎn)、節(jié)點(diǎn)間關(guān)系。

load csv with headers from "file:///sw-nodes.csv" as rowmerge (place:Place{id:row.id}) load csv with headers from "file:///sw-relationships.csv" as rowmatch (origin:Place{id:row.src})match (destination:Place{id:row.dst})merge (origin) - [r:DEPENDS_ON]->(destination)

一、屬性圖如下

二、實(shí)現(xiàn)算法

1.stream模式執(zhí)行Louvain算法(匿名圖)

CALL gds.louvain.stream({nodeProjection: 'Place',relationshipProjection: {TYPE: {type: 'DEPENDS_ON',orientation: 'undirected',aggregation: 'NONE'}},includeIntermediateCommunities:True }) YIELD nodeId, communityId RETURN gds.util.asNode(nodeId).id AS name, communityId ORDER BY name ASC

參數(shù)<>includeIntermediateCommunities:True,為真的時(shí)候,顯示劃分時(shí)出現(xiàn)的中間社團(tuán),結(jié)果最后一列表示該節(jié)點(diǎn)都曾被劃分到哪個(gè)社團(tuán)。中間一列表示節(jié)點(diǎn)最后所在社團(tuán)。

2.結(jié)果如下

總結(jié)一:

如果你熟悉其他算法,會(huì)發(fā)現(xiàn)這個(gè)結(jié)果和連通分量算法(Connected components algorithm)結(jié)果一樣,因?yàn)檫@是屬性圖中只包含了三個(gè)獨(dú)立的社團(tuán),很容易區(qū)分開(kāi)來(lái)。而且這個(gè)屬性圖本身是無(wú)權(quán)的。

例子二:創(chuàng)建一個(gè)屬性圖(有權(quán))

CREATE(nAlice:User {name: 'Alice', seed: 42}),(nBridget:User {name: 'Bridget', seed: 42}),(nCharles:User {name: 'Charles', seed: 42}),(nDoug:User {name: 'Doug'}),(nMark:User {name: 'Mark'}),(nMichael:User {name: 'Michael'}),(nAlice)-[:LINK {weight: 1}]->(nBridget),(nAlice)-[:LINK {weight: 1}]->(nCharles),(nCharles)-[:LINK {weight: 1}]->(nBridget),(nAlice)-[:LINK {weight: 5}]->(nDoug),(nMark)-[:LINK {weight: 1}]->(nDoug),(nMark)-[:LINK {weight: 1}]->(nMichael),(nMichael)-[:LINK {weight: 1}]->(nMark);

一、屬性圖如下

二、算法實(shí)現(xiàn)

1.stream模式執(zhí)行Louvain算法(命名圖)

圖命名:myGraph

CALL gds.graph.create('myGraph','User',{LINK: {orientation: 'UNDIRECTED'}},{nodeProperties: 'seed',relationshipProperties: 'weight'} )

結(jié)果如下:

執(zhí)行算法:

CALL gds.louvain.stream('myGraph',{includeIntermediateCommunities: true} ) YIELD nodeId, communityId, intermediateCommunityIds RETURN gds.util.asNode(nodeId).name AS name, communityId, intermediateCommunityIds ORDER BY name ASC

2.結(jié)果如下

這里劃分兩個(gè)社團(tuán)

3.帶權(quán)值計(jì)算

CALL gds.louvain.stream('myGraph',{ relationshipWeightProperty: 'weight' ,includeIntermediateCommunities: true} ) YIELD nodeId, communityId, intermediateCommunityIds RETURN gds.util.asNode(nodeId).name AS name, communityId, intermediateCommunityIds ORDER BY name ASC

4.結(jié)果如下

帶權(quán)值之后,劃分了三個(gè)社團(tuán)

5.含原始社區(qū)屬性計(jì)算

參數(shù)<>seedProperty:Used to set the initial community for a node. The property value needs to be a number.
用于設(shè)置節(jié)點(diǎn)的初始社區(qū)。屬性值必須是數(shù)字。

CALL gds.louvain.stream('myGraph',{ seedProperty: 'seed',relationshipWeightProperty: 'weight' ,includeIntermediateCommunities: true} ) YIELD nodeId, communityId, intermediateCommunityIds RETURN gds.util.asNode(nodeId).name AS name, communityId, intermediateCommunityIds ORDER BY name ASC

6.結(jié)果如下

其實(shí)僅帶有seedProperty屬性,去掉關(guān)系權(quán)重“relationshipWeightProperty: ‘weight’ ,”這句話,該屬性圖可以直接劃分為兩個(gè)社區(qū),結(jié)果和本例子初次執(zhí)行結(jié)果一致,社團(tuán)【2】【5】。因?yàn)橛袡?quán)重的影響Alice被劃分出去,最終三個(gè)社團(tuán),這更加符合現(xiàn)實(shí)情況。

總結(jié)二:

這個(gè)算法的最優(yōu)解還是需要考慮權(quán)重、迭代次數(shù)等等因素,從而符合最終預(yù)期目標(biāo),如果有需要可以參考文檔(有需要請(qǐng)留言)。

總結(jié)

以上是生活随笔為你收集整理的neo4j实现Louvain算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。