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,依此類推。
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章