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 |
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 |