Spark MLlib基本数据类型

1.本地向量 Local Vector

import org.apache.spark.mllib.linalg.{Vector,Vectors}
/*
* 本地向量 Local Vector
* */
object scalaTest {
  def main(args: Array[String]): Unit = {
    // 创建一个稠密本地向量
    val dv: Vector = Vectors.dense(3.0, 0.0, 6.0,0.0,9.0)
    // 创建一个稀疏本地向量
    // 方法第二个参数数组指定了非零元素的索引,而第三个参数数组则给定了非零元素值
    val sv1: Vector = Vectors.sparse(5, Array(0, 2, 4), Array(3.0, 6.0, 9.0))

    // 另一种创建稀疏本地向量的方法
    // 方法的第二个参数是一个序列,其中每个元素都是一个非零值的元组:(index,elem)
    val sv2: Vector = Vectors.sparse(5, Seq((0, 3.0), (2, 6.0),(4, 9.0)))
    println(dv)
    println(sv1.toDense)
    println(sv2)
  }
}

2.标注点 LabeledPoint

import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
/*
* 标注点 LabeledPoint
* 是一种带标签的本地向量,通常用于监督学习中,标签是双精度浮点型
* 在实际的机器学习问题中,大多数是稀疏向量数据,MLlib提供了读取LIBSVM格式数据的支持,
* 该格式被广泛用于LIBSVM、LIBLINEAR等机器学习库。
* */
object LabeledPointTest {
  def main(args: Array[String]): Unit = {
    val pos = LabeledPoint(1.0, Vectors.dense(3.0, 0.0, 6.0,0.0,9.0))
    val neg = LabeledPoint(0.0, Vectors.sparse(5, Array(0, 2, 4), Array(3.0, 6.0, 9.0)).toDense)
    println(pos)
    println(neg)

    // 用loadLibSVMFile方法读入LIBSVM格式数据
    //!!!注意:如果在Windows上执行,指定Hadoop的Home
    System.setProperty("hadoop.home.dir", "D:\\temp\\hadoop-2.4.1\\hadoop-2.4.1")
    //不打印日志
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
    val conf = new SparkConf().setAppName("LogisticRegressionExample").setMaster("local")
    val sc = new SparkContext(conf)
    // sample_libsvm_data.txt为spark自带的一个示例,位于$SPARK_HOME$/data/mllib/sample_libsvm_data.txt
    val examples = MLUtils.loadLibSVMFile(sc, "D:\\maven\\repository\\spark-2.1.0\\data\\mllib\\sample_libsvm_data.txt")
    println(examples)  //返回的是组织成RDD的一系列LabeledPoint
    println(examples.collect().head)  //examples.collect()把rdd转换为了向量,并取第一个元素的值。每个标注点共有692个维,其中第127列对应的值是51.0,第128列对应的值是159.0,依此类推。
  }
}

猜你喜欢

转载自blog.csdn.net/Muzi_Water/article/details/89416365