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 |