当前位置: 首页 > news >正文

Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)...

 

 

  不多说,直接上干货!

 

 

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.chapter4


import 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里面每一对都是(索引,值)的形式。

  

 

 

 

 

  更多具体,见

Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计

相关文章:

  • amp;#9733;色盲悖论正解!
  • 《中国人工智能学会通讯》——10.12 电网运行控制发展趋势
  • [日推荐]『微商名片王』做个有逼格的微商
  • 海天瑞声做智能语音界的“幕后英雄”
  • Python交互数据库(Mysql | Mongodb | Redis)
  • Android Studio 3.0 下载 使用新功能介绍
  • Linux 常用端口
  • 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
  • Java的类的创建
  • Spring获取bean的工具类
  • ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
  • 基于centos7.3 redhat7.3安装LAMP(php7.0 php7.1)生产环境实践
  • C++ 迭代器二分搜索方法示例
  • Class类文件结构概述
  • Spring MVC-集成(Integration)-生成JSON示例(转载实践)
  • Angular 4.x 动态创建组件
  • javascript 总结(常用工具类的封装)
  • JS专题之继承
  • Linux快速复制或删除大量小文件
  • node学习系列之简单文件上传
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Vue 动态创建 component
  • 从输入URL到页面加载发生了什么
  • 第十八天-企业应用架构模式-基本模式
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 码农张的Bug人生 - 见面之礼
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 实战|智能家居行业移动应用性能分析
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 一个JAVA程序员成长之路分享
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​力扣解法汇总946-验证栈序列
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (10)STL算法之搜索(二) 二分查找
  • (11)MATLAB PCA+SVM 人脸识别
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .gitignore文件---让git自动忽略指定文件
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .Net6 Api Swagger配置
  • .NET6实现破解Modbus poll点表配置文件
  • .Net中的集合
  • [2016.7 test.5] T1
  • [2016.7.Test1] T1 三进制异或
  • [Angular 基础] - 指令(directives)