该文档涉及的组件

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