linkurious.js实现Louvain社区发现算法
来源:互联网 发布:淘宝网店图片处理软件 编辑:程序博客网 时间:2024/06/05 20:21
linkurious.js实现Louvain社区发现算法 - sigma.statistics.louvain
原文:linkurious.js/plugins/sigma.statistics.louvain at linkurious-version · Linkurious/linkurious.js
阅读:
Louvain社区发现算法 - AllanSpark - 博客园
模块度与Louvain社区发现算法 - CodeMeals - 博客园
- community API — Community detection for NetworkX 2 documentation
插件jLouvain由Corneliu Sugar开发。Sébastien Heymann把它移植到Linkurious。
Contact: seb@linkurio.us
代码说明
完整版的代码在这里:
请在这个文件夹下包含所有js文件,然后按如下方式执行。
var louvainInstance = sigma.plugins.louvain(sigmaInstance.graph);
你可以提供一个中介社区划分分配(intermediary community partition assignement)
:
// Object with ids of nodes as properties and community number assigned as value.var partitions_init = {'n1':0, 'n2':0, 'n3': 1};var louvainInstance = sigma.plugins.louvain(sigmaInstance.graph, { partitions: partitions_init});
获取和设置社区
Communities are denoted by numerical identifiers, which are assigned to the nodes at the _louvain key unless an optional setter function is passed:
社区由数字标识,在_louvain
关键字分配给节点,除非选择setter函数传递:
var louvainInstance = sigma.plugins.louvain(sigmaInstance.graph);// get community of node 'n0': var c = sigmaInstance.graph.nodes('n0')._louvain;// run with a setter argument:var louvainInstance = sigma.plugins.louvain(sigmaInstance.graph, { setter: function(communityId) { this.my_community = communityId; }});// get community of node 'n0': var c = sigmaInstance.graph.nodes('n0').my_community;
执行算法
执行如下代码,调用sigma.plugins.louvain():
louvainInstance.run();
可以提供一个社区划分分配的媒介(intermediary)
:
// Object with ids of nodes as properties and community number assigned as value.var partitions_init = {'n1':0, 'n2':0, 'n3': 1};louvainInstance.run({ partitions: partitions_init });
计算层次(levels of hierarchy)
The algorithm generates partitions of the graph (i.e. “communities”) at multiple levels, with partitions at lower levels being included in partitions of the upper levels to form a dendogram. The higher level in the hierarchy the fewer partitions.
该算法生成的图形分区(即“社区”的多层次分区),在较低的水平,包括在上层隔板形成一个树状图(dendogram)。在层次结构中的更高层次的较少的分区
代码如下:
var nbLevels = louvainInstance.countLevels();
分区
可以提取在层次结构中指定级别的分区:
// Get partitions at the highest level:var partitions = louvainInstance.getPartitions();// equivalent to louvainInstance.getPartitions(louvainInstance.countLevels())// Get partitions at the lowest level:var partitions = louvainInstance.getPartitions({level: 1});
计算分区的数量
var partitions = louvainInstance.getPartitions();var nbPartitions = louvainInstance.countPartitions(partitions);
节点的社区分配
最高级别的社区将自动分配给节点。可以指定一个不同的级别的社区,代码如下:
var nbLevels = louvainInstance.setResults({ level: 1});// using a specific setter function:var nbLevels = louvainInstance.setResults({ level: 1 setter: function(communityId) { this.communityLevel1 = communityId; }});// get highest level community of node 'n0': var c = sigmaInstance.graph.nodes('n0').my_community;// get level 1 community of node 'n0': var c = sigmaInstance.graph.nodes('n0').communityLevel1;
小贴士: 怎样给节点添加颜色
- jacomyal/sigma.js: A JavaScript library dedicated to graph drawing
下面的示例演示如何通过社区对颜色节点进行着色,假设有一组颜色:
var colors = ["#D6C1B0", ..., "#9DDD5A"];// 基于社区的分组进行着色sigmaInstance.graph.nodes().forEach(function(node) { node.color = colors[node.my_community];});// 刷新sigma渲染(linkurious.js基于sigma.js开发)sigmaInstance.refresh({skipIndexation: true});
注意
该算法通过寻找关键边的权重考虑关系的强度。
- linkurious.js实现Louvain社区发现算法
- linkurious.js实现Louvain社区发现算法
- Louvain大规模社区发现算法
- 模块度与Louvain社区发现算法
- 模块度与Louvain社区发现算法
- LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
- LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
- Louvain 社团发现算法学习(我的java实现+数据用例)
- 社区发现算法FastUnfolding的GraphX实现
- 利用spark进行层次社团发现(louvain算法测试)
- 社区发现算法总览
- Newman 社区发现算法
- 社区发现算法(一)
- 社区发现算法
- 社区发现算法
- 图处理:rigraph实现边介数社区发现算法(GN)
- 社区发现(Community Detection)算法
- 社区发现(Community Detection)算法
- JavaScript 基础知识
- Codeforces Round #425 (Div. 2)
- Qt实例digitalclock详解
- 交换类排序(冒泡排序及快速排序)
- 第一章:Chrome 浏览器 搭建 selenium 环境
- linkurious.js实现Louvain社区发现算法
- Eclipse进入debug模式提示45s超时的解决办法
- Scala之偏函数
- python代码优化
- 中国科技发展得越快石英晶振的需求量就越大
- Mongodb 数据文件结构
- 总结一下js里面的关键字
- ubuntu 下终端关于调试C++的命令
- 【线段树区间单点更新加约束条件】HDU