首页 > 解决方案 > 带有标签和特征的 PySpark Row 与 LabeledPoint

问题描述

我看到了一个 PySpark Spark SQL 示例,其中该语法用于执行类似于在 Spark Mllib 中创建 LabeledPoint 的操作:

from pyspark.sql import Row
from pyspark.mllib.linalg import Vectors

rdd2 = rdd1.map(lambda x: Row(label=float(x[-1]), features=Vectors.dense(x[:-1]))

rdd2.take(2)

[Row(features=DenseVector([540.0, 0.0, 0.0, 162.0, 2.5, 1040.0, 676.0, 28.0]), label=79.99),
 Row(features=DenseVector([540.0, 0.0, 0.0, 162.0, 2.5, 1055.0, 676.0, 28.0]), label=61.89)]

Spark Mllib 的替代方法是:

from pyspark.mllib.regression import LabeledPoint

rdd3 = rdd1.map(lambda x: LebeledPoint(label=float(x[-1]), features=Vectors.dense(x[:-1])))

rdd3.take(2)

[LabeledPoint(79.99, [540.0,0.0,0.0,162.0,2.5,1040.0,676.0,28.0]),
 LabeledPoint(61.89, [540.0,0.0,0.0,162.0,2.5,1055.0,676.0,28.0])]

我想知道这两个示例是否有任何区别,是否一个比另一个更好?

标签: pythonpysparkrddpyspark-sqlapache-spark-mllib

解决方案


推荐阅读