labeled point
laneled point是与标签/响应相关联的局部矢量(密集或稀疏)。在MLlib中,标注点用于监督学习算法。我们使用double 存储标签,所以我们可以在回归和分类中使用标记点。对于二进制分类,标签应为0(负)或1(正)。对于多类分类,标签应该是从零开始的类索引:0, 1, 2, ...。
Scala
labeled point 的case class是 LabeledPoint。
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.
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.
val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)))
sparse data
在实践中经常遇到sparse data,MLlib支持读取LIBSVM格式的训练示例。它是一种文本格式,其中每行代表使用以下格式的标记稀疏特征向量:
label index1:value1 index2:value2 ...
其中索引是一个一基预算(one-based)升序排列的。加载后,索引将转换为零基预算。
Scala
导入MLUtils.loadLibSVMFile 来读取LIBSM 格式数据
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")