该文档涉及的组件

Louvain社区发现(LouvainBatchOp)

Java 类名:com.alibaba.alink.operator.batch.graph.LouvainBatchOp

Python 类名:LouvainBatchOp

功能介绍

Louvain社区发现

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
edgeSourceCol 边表中起点所在列 边表中起点所在列 String ✓
edgeTargetCol 边表中终点所在列 边表中终点所在列 String ✓
changedNodeNumThreshold 改变社区节点个数阈值 改变社区节点个数的阈值,低于阈值则进行图压缩 Integer 10000
edgeWeightCol 边权重列 表示边权重的列 String null
maxIter 最大迭代步数 最大迭代步数,默认为 10。 Integer 10

代码示例

Java 代码

import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
import com.alibaba.alink.testutil.AlinkTestBase;
import org.apache.flink.types.Row;
import org.junit.Test;

public class LouvainBatchOpTest extends AlinkTestBase {

    @Test
    public void test() throws Exception {
        Row[] edges = new Row[]{
            Row.of(1L, 2L, 1D),
            Row.of(1L, 3L, 1D),
            Row.of(1L, 4L, 1D),
            Row.of(2L, 3L, 1D),
            Row.of(2L, 4L, 1D),
            Row.of(3L, 4L, 1D),
            Row.of(4L, 5L, 1D),
            Row.of(5L, 6L, 1D),
            Row.of(5L, 7L, 1D),
            Row.of(5L, 8L, 1D),
            Row.of(6L, 7L, 1D),
            Row.of(6L, 8L, 1D),
            Row.of(7L, 8L, 1D)
        };
        BatchOperator edgeData = new MemSourceBatchOp(edges, new String[]{"source", "target", "weight"});
        LouvainBatchOp louvainBatchOp = new LouvainBatchOp()
            .setEdgeSourceCol("source")
            .setEdgeTargetCol("target")
            .setEdgeWeightCol("weight")
            .setChangedNodeNumThreshold(4)
            .setMaxIter(10)
            .linkFrom(edgeData);
        louvainBatchOp.print();
    }
}

输出结果

vertex label
6 6
5 6
1 3
8 6
7 6
3 3
4 3
2 3