博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)...
阅读量:6233 次
发布时间:2019-06-22

本文共 1559 字,大约阅读时间需要 5 分钟。

 

 

  不多说,直接上干货!

 

 

Local  vector : 本地向量集

  由两类构成:稀疏型数据集(spares)和密集型数据集(dense)

  (1)、密集型数据集

      例如一个向量数据(9,5,2,7),可以设定为(9,5,2,7)进行存储,数据集被作为一个集合的形式整体存储。

  (2)、稀疏型数据集

      例如一个向量数据(9,5,2,7),可以按向量的大小存储为(4,Array(0,1,2,3),Array(9,5,2,7))

  

 

 

 testVector.scala

package zhouls.bigdata.chapter4import org.apache.spark.mllib.linalg.{Vector, Vectors}object testVector {    /*   * 主函数   */  def main(args: Array[String]) {    val vd: Vector = Vectors.dense(2, 0, 6)     //建立密集向量    println(vd(2))                                //打印密集向量第3个值    val vs: Vector = Vectors.sparse(4, Array(0,1,2,3), Array(9,5,2,7))//建立稀疏向量    println(vs(2))                                             //打印稀疏向量第3个值  }}

  有人会问,为什么会输出来为浮点型数了呢。

  答:对于目前,Spark Mllib,仅支持整数与浮点型数。这是因为与其目的数值计算有关。

 

 

  dense方法,不多赘述。

  sparse方法,第一个参数4是代表输入数据的大小,一般要求大于等于输入的数据值。

        第二个参数Array(0,1,2,3)是数据vs下标的数值

        第三个参数Array(9,5,2,7)是输入的数据值,一般要求将其作为一个Array类型的数据进行输入

 

 

 

 

 

   总结

  Spark MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创建方式主要有一下三种(三种方式均创建了向量(1.0, 0.0, 2.0):

import org.apache.spark.mllib.linalg.{Vector, Vectors}    //创建一个稠密向量  val dv : Vector = Vector.dense(1.0,0.0,3.0);  //创建一个稀疏向量(第一种方式)  val sv1: Vector = Vector.sparse(3, Array(0,2), Array(1.0,3.0));  //创建一个稀疏向量(第二种方式)  val sv2 : Vector = Vector.sparse(3, Seq((0,1.0),(2,3.0)))
  对于稠密向量:很直观,你要创建什么,就加入什么,其函数声明为Vector.dense(values : Array[Double])
  对于稀疏向量,当采用第一种方式时,3表示此向量的长度,第一个Array(0,2)表示的索引,第二个Array(1.0, 3.0)与前面的Array(0,2)是相互对应的,表示第0个位置的值为1.0,第2个位置的值为3
  对于稀疏向量,当采用第二种方式时,3表示此向量的长度,后面的比较直观,Seq里面每一对都是(索引,值)的形式。

  

 

 

 

 

  更多具体,见

转载地址:http://ssqna.baihongyu.com/

你可能感兴趣的文章
Facebook Docusaurus 中文文档 准备网站
查看>>
如何绘制一个圆圆的loading圈
查看>>
Nodejs学习记录:用koa.js开发微信公众号
查看>>
Android源码集锦,悬浮窗综合资讯类APP动画效果左右切换效果美妆领域
查看>>
Spring Cloud(六)服务网关 zuul 快速入门
查看>>
d3.js中动态数据的请求、处理及使用
查看>>
Vue源码解析(六)-vue-router
查看>>
[轮子系列]Google Guava之BloomFilter源码分析及基于Redis的重构
查看>>
android弹力效果菜单、组件化项目、电影票选座控件的源码
查看>>
three.js 中文文档 9.问答
查看>>
单元测试
查看>>
重温JS基础--JS中的对象属性
查看>>
慕课网_《RxJava与RxAndroid基础入门》学习总结
查看>>
CDH的hadoop与Spark套件组安装
查看>>
构建多层感知器神经网络对数字图片进行文本识别
查看>>
Git常规配置与基本用法
查看>>
写Laravel测试代码(三)
查看>>
JS判断数组重复
查看>>
埋点进化论:从埋点到无埋点
查看>>
【175天】黑马程序员27天视频学习笔记【Day06-10复习脑图】
查看>>