PR
runUntilConvergence API
- API
def runUntilConvergence[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED],tol: Double,resetProb: Double = 0.15): Graph[Double, Double]
- 功能描述
本算法模型基于Spark框架,根据指定的收敛精度,通过残差迭代方式计算图中各节点PageRank值,PageRank值取值范围[0,N],N为节点个数。本算法接口与开源Spark GraphX算法接口完全一致,本算法支持有向无权。
- API描述
- 包名:package org.apache.spark.graphx.lib
- 类名:PageRank
- 方法名:runUntilConvergence
- 输入:graph: Graph[VD,ED]
- 核心参数:
- tol:收敛时允许的容差(通常取值1e-7)
- resetProb:重置概率系数,默认值(0.15)
- 参数详情:
参数名称
参数含义
取值类型
graph
GraphX图数据
Graph[VD,ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知。
tol
收敛时允许的容差
Double如1e-7等,取值范围:大于0
resetProb
重置系数
Double,经验值0.15,取值范围:[0,1]
- 输出:Graph:Graph[Double,Double],节点属性存储该节点的PageRank值,同时,为与开源保持一致,边属性存储源节点出度的倒数。
- 使用样例
val conf = new SparkConf().setAppName("PageRank").setMaster(host) val sc = new SparkContext(conf) val edges = Array(Edge(1,2,1.0), Edge(1,3,1.0), Edge(1,6,1.0), Edge(2,8,1.0), Edge(3,1,1.0),Edge(3,2,1.0), Edge(3,4,1.0), Edge(3,6,1.0), Edge(3,7,1.0), Edge(3,8,1.0), Edge(4,7,1.0), Edge(4,8,1.0),Edge(5,2,1.0), Edge(5,4,1.0), Edge(5,6,1.0), Edge(5,7,1.0), Edge(5,8,1.0), Edge(6,2,1.0), Edge(6,4,1.0),Edge(6,5,1.0), Edge(6,7,1.0), Edge(6,8,1.0), Edge(7,4,1.0),Edge(7,8,1.0), Edge(7,9,1.0), Edge(7,11,1.0),Edge(8,2,1.0), Edge(8,4,1.0), Edge(8,7,1.0), Edge(8,11,1.0), Edge(9,4,1.0), Edge(9,7,1.0), Edge(9,8,1.0), Edge(9,11,1.0),Edge(10,1,1.0), Edge(10,3,1.0), Edge(10,4,1.0), Edge(10,5,1.0), Edge(11,6,1.0), Edge(11,8,1.0), Edge(11,9,1.0)) val g = Graph.fromEdges(sc.parallelize(edges, 3), 1D) PageRank.runUntilConvergence (g, 1e-7, 0.15)
- 样例结果
第一列为节点ID,第二列为PR值。
10,0.15000000000000002 1,0.21632361452756482 3,0.24316669078281006 5,0.2960495884141481 6.0.6716152259655768 9,0.9086302548739689 2,1.0095338325502028 11,1.325458202205165 4,1.5562848351772833 7,1.8027471258784566 8,2.8201906296248227
run API
- API
def run [VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED],numIter: Int,resetProb: Double = 0.15): Graph[Double, Double]
- 功能描述
本算法模型基于Spark框架,根据指定的收敛精度,通过残差迭代方式计算图中各节点PageRank值,PageRank值取值范围[0,N],N为节点个数。本算法接口与开源Spark GraphX算法接口完全一致,本算法支持有向无权。
- API描述
- 包名:package org.apache.spark.graphx.lib
- 类名:PageRank
- 方法名:run
- 输入:graph:Graph[VD,ED]
- 核心参数:
- numIter:迭代次数
- resetProb:重置概率系数,默认值(0.15)
- 参数详情:
参数名称
参数含义
取值类型
graph
GraphX图数据
Graph[VD,ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知。
numIter
迭代次数
Int,取值范围:大于0。
resetProb
重置系数
Double,经验值0.15,取值范围:[0,1]。
- 输出:Graph:Graph[Double,Double],节点属性存储该节点的PageRank值,同时,为与开源保持一致,边属性存储源节点出度的倒数。
- 使用样例
val conf = new SparkConf().setAppName("PageRank").setMaster(host) val sc = new SparkContext(conf) val edges = Array(Edge(1,2,1.0), Edge(1,3,1.0), Edge(1,6,1.0), Edge(2,8,1.0), Edge(3,1,1.0),Edge(3,2,1.0),Edge(3,4,1.0), Edge(3,6,1.0), Edge(3,7,1.0), Edge(3,8,1.0), Edge(4,7,1.0), Edge(4,8,1.0),Edge(5,2,1.0), Edge(5,4,1.0), Edge(5,6,1.0), Edge(5,7,1.0), Edge(5,8,1.0), Edge(6,2,1.0), Edge(6,4,1.0),Edge(6,5,1.0), Edge(6,7,1.0), Edge(6,8,1.0), Edge(7,4,1.0), Edge(7,8,1.0), Edge(7,9,1.0), Edge(7,11,1.0),Edge(8,2,1.0), Edge(8,4,1.0), Edge(8,7,1.0), Edge(8,11,1.0), Edge(9,4,1.0), Edge(9,7,1.0), Edge(9,8,1.0), Edge(9,11,1.0), Edge(10,1,1.0),Edge(10,3,1.0), Edge(10,4,1.0), Edge(10,5,1.0), Edge(11,6,1.0), Edge(11,8,1.0), Edge(11,9,1.0)) val g = Graph.fromEdges(sc.parallelize(edges, 3), 1D) PageRank.run (g, 100, 0.15)
- 样例结果
第一列为节点ID,第二列为PR值。
10,0.15000000000000002 1,0.21632361452756482 3,0.24316669078281006 5,0.2960495884141481 6.0.6716152259655768 9,0.9086302548739689 2,1.0095338325502028 11,1.325458202205165 4,1.5562848351772833 7,1.8027471258784566 8,2.8201906296248227
父主题: 算法API