Spark MLlib随笔(1)----向量类型

MLlib使用的本地化存储类型是向量,这里的向量主要由两类构成:稀疏型数据集(spares)和密集型数据集(dense)

  • MLlib库的基本类型:向量类型 Vector
  • 主要向Spark提供一组可进行操作的数据集合

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.linalg.Vectors

object VectorsTest {
  def main(args: Array[String]): Unit = {
    //
    val v1 = Vectors.dense(1.2, 2.3, 4.5)
    println(v1)
    println(v1(0))
    // 通过Array[Double]的方式传入
    val v2 = Vectors.dense(Array[Double](1.2, 3.4, 34.1))
    println(v2)

    //处理vector.txt文件 RDD[String]->RDD[Vector]
    val conf = new SparkConf().setMaster("local").setAppName("vector")
    val sc = new SparkContext(conf)
    val data = sc.textFile("d://data/ml/vector.txt")

    val v3 = data.map{line=>line.split(" ").map{str=>str.toDouble}}
      .map{arr=>Vectors.dense(arr)}
    v3.foreach(println)
  }

}

  • MLlib库的基本类型:向量标签类型 LabeledPoint
  • 让用户能够分类不同的数据集合
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
object LabeledPointTest {
  def main(args: Array[String]): Unit = {

    val v1 = Vectors.dense(1.2,1.3,1.6)
    //创建标签类型:参数①:标签值  参数②:向量
    val lb1 = LabeledPoint(1,v1)
    //获取标签值
    println(lb1.label)
    //获取向量
    println(lb1.features)

    //处理vector.txt  RDD[String] -> RDD[LabeledPoint]
    val conf = new SparkConf().setMaster("local").setAppName("vector2")
    val sc = new SparkContext(conf)
    val data = sc.textFile("d://data/ml/vector.txt")
//    val lb2 = data.map{line=>line.split(" ").map(str => str.toDouble)}
//      .map(arr=>Vectors.dense(arr))
//      .map(vector => LabeledPoint(vector(0),vector))

    val lb2 = data.map{line=>
      val info = line.split(" ")
      val lable =info(0).toDouble  //标签值也为Double
      val vector = info.drop(1).map{str=>str.toDouble}

      LabeledPoint(lable,Vectors.dense(vector))
    }
    lb2.foreach(println)
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值