Java 类名:com.alibaba.alink.operator.batch.graph.VertexClusterCoefficientBatchOp
Python 类名:VertexClusterCoefficientBatchOp
对于给定的图,计算图中的每个顶点,输出其邻居个数,其邻点间的边数,以及每个点的聚类系数。
该组件有一个输入桩,表示图的边集。组件有一个输出桩,输出图中所有顶点,其邻点个数,其邻点间的边数,以及其对应的聚类系数。
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
|---|---|---|---|---|---|---|
| edgeSourceCol | 边表中起点所在列 | 边表中起点所在列 | String | ✓ | ||
| edgeTargetCol | 边表中终点所在列 | 边表中终点所在列 | String | ✓ | ||
| asUndirectedGraph | 是否为无向图 | 是否为无向图 | Boolean | true |
from pyalink.alink import *
import pandas as pd
useLocalEnv(1)
df = pd.DataFrame([[1, 2],
[1, 3],
[1, 4],
[1, 5],
[1, 6],
[2, 3],
[4, 3],
[5, 4],
[5, 6],
[5, 7],
[6, 7]])
data = BatchOperator.fromDataframe(df, schemaStr="source double, target double")
vertexClusterCoefficient = VertexClusterCoefficientBatchOp() \
.setEdgeSourceCol("source") \
.setEdgeTargetCol("target")
vertexClusterCoefficient.linkFrom(data).print()
import org.apache.flink.types.Row;
import com.alibaba.alink.operator.batch.BatchOperator;
import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
import org.junit.Test;
public class VertexClusterCoefficientBatchOpTest {
@Test
public void test() throws Exception {
Row[] rows = new Row[] {
Row.of(1, 2),
Row.of(1, 3),
Row.of(1, 4),
Row.of(1, 5),
Row.of(1, 6),
Row.of(2, 3),
Row.of(4, 3),
Row.of(5, 4),
Row.of(5, 6),
Row.of(5, 7),
Row.of(6, 7)
};
BatchOperator <?> inData = new MemSourceBatchOp(rows, "source int, target int");
VertexClusterCoefficientBatchOp op = new VertexClusterCoefficientBatchOp()
.setEdgeSourceCol("source")
.setEdgeTargetCol("target")
.linkFrom(inData);
op.print();
}
}
| vertexId | vertexDegree | edgeNum | coefficient |
|---|---|---|---|
| 2 | 2 | 1 | 1.0000 |
| 1 | 5 | 4 | 0.4000 |
| 7 | 2 | 1 | 1.0000 |
| 5 | 4 | 3 | 0.5000 |
| 3 | 3 | 2 | 0.6667 |
| 4 | 3 | 2 | 0.6667 |
| 6 | 3 | 2 | 0.6667 |