labeled point 是一个局部向量,要么是密集型的要么是稀疏型的,用一个label/response进行关联。在MLlib里,labeled points 被用来监督学习算法。我们使用一个double数来存储一个label,因此我们能够使用labeled points进行回归和分类。在二进制分类里,一个label可以是 0(负数)或者 1(正数)。在多级分类中,labels可以是class的索引,从0开始:0,1,2,......
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
// Create a labeled point with a positive label and a dense feature vector.
// 使用一个正的label和具有密集特性的向量来创建一个labeled point
val pos = LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0))
// Create a labeled point with a negative label and a sparse feature vector.
// 用一个负的label和一个稀疏型向量来定义一个labeled point。
val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)))
在实际应用中使用稀疏型训练数据非常常见。MLlib支持读取以LIBSVM格式存储的训练样例,默认的格式是使用 LIBSVM 和 LIBLINEAR 。 它是一种文本格式,使用下面的格式存储,每行表示一个labeled稀疏型向量:
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.rdd.RDD
val examples: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt")