聚类分析
# 图的聚类分析
提示
用于评估节点集合,它意在寻找组内成员关系建立数量较多的社群。识别相关社区有利于揭示不同节点集群,孤立族群和网络结构。社区发现算法有助于推断同龄群体的相似行为或偏好、估算弹性,并为其他分析工作准备数据。
# 支持的聚类分析算法
算法类型 | 算法名称 | 使用场景说明 |
---|---|---|
louvain | Louvain聚类算法 | 社交网络是一个由若干个体构成的交互网络,这些个体之间存在着不同的连接,有的个体之间保存在较为密切的联系,而有的个体之间存在着较少的联系,朋友之间的联系用图中节点之间的边表示,节点之间的边越多,则他们之间的关系越密切。一个大型的社交网络通常是由若干小型网络组成的,因此可以通过Louvain算法对社交网络进行分类,预测判断可能的组织结构。 |
chineseWhisper | 标签传播 | 会根据与自己相连的节点所属的标签改变自己的标签,更改的原则是选择与其相连的节点中所属标签最多的社区标签为自己的社区标签,这就是标签传播的含义,随着社区标签不断传播。最终,连接紧密的节点将有共同的标签。 |
# Louvain聚类算法的实现原理
- Louvain算法包括两个阶段,在步骤一它不断地遍历网络中的结点,尝试将单个结点加入能够使modularity提升最大的社区中,直到所有结点都不再变化。
- 在步骤二,它处理第一阶段的结果,将一个个小的社区归并为一个超结点来重新构造网络,这时边的权重为两个结点内所有原始结点的边权重之和。迭代这两个步骤直至算法稳定。
# chineseWhisper聚类算法的实现原理
- 首先,所有的节点都分成不同的类。
- 然后对节点进行少量的迭代处理,并继承它邻近节点中最大的类别,即对当前节点的边权重值最大的节点所在的类。如果有多个最大的类别,则随机选择一个。
- 同一类的区域在迭代过程中趋于稳定,直到到达另一个类的稳定区域边界为止。
# 组件库聚类分析是使用
直接通过接口 graphVis.community(type)
计算图中节点的聚类结果,每一个分类对应一组节点对象的集合。
//通过组件库客户端调用聚类分析接口,计算节点聚类结果
var clusterNodesMap = graphVis.community('louvain');
//给聚类的群组设置不同的颜色或者添加分组进行区分
clusterNodesMap.forEach((nodes,cluster) => {
var color = graphVis.randomColor(); // 随机颜色
//nodes.forEach(node => node.fillColor = color);//节点变更颜色
//将同一个分组的节点加入分组
graphVis.addNodesInGroup(nodes,{
shape:'circle',
color:color,
alpha : 0.3
});
});
graphVis.refreshView();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19