Pyspark 计算标记点 RDD 的标签的不同值
Pyspark count distinct values of labels of a Labelled point RDD
我在 Spark 中有一个 labeled point 的 RDD。我想计算标签的所有不同值。我试试
from pyspark.mllib.regression import LabeledPoint
train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ])
train_data.reduceByKey(lambda x : x.label).collect()
但是我明白了
TypeError: 'LabeledPoint' object is not iterable
我使用 Spark 2.1 和 python 2.7。感谢您的帮助。
你只需要将你的 LabeledPoint
转换为键值 RDD,然后按键计数:
spark.version
# u'2.1.1'
from pyspark.mllib.regression import LabeledPoint
train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ])
dd = train_data.map(lambda x: (x.label, x.features)).countByKey()
dd
# {1.0: 2, 2.0: 1}
我在 Spark 中有一个 labeled point 的 RDD。我想计算标签的所有不同值。我试试
from pyspark.mllib.regression import LabeledPoint
train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ])
train_data.reduceByKey(lambda x : x.label).collect()
但是我明白了
TypeError: 'LabeledPoint' object is not iterable
我使用 Spark 2.1 和 python 2.7。感谢您的帮助。
你只需要将你的 LabeledPoint
转换为键值 RDD,然后按键计数:
spark.version
# u'2.1.1'
from pyspark.mllib.regression import LabeledPoint
train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ])
dd = train_data.map(lambda x: (x.label, x.features)).countByKey()
dd
# {1.0: 2, 2.0: 1}