1.  MLlib

Apache Spark's scalable machine learning library, with APIs in Java, Scala and Python.

2.   数据类型

本地向量,标注点,本地矩阵,分布式矩阵

3. 本地向量 Local Vector

  • 稠密向量 dense        一个double数组,例如 (1.0, 0.0, 0.0, 0.0, 3.0)
  • 稀疏向量 sparse       两个并行的数组(indices和values),例如 (5, [0, 4], [1.0, 3.0]),其中5表示向量元素的个数,[0,4] 是indices,[1.0,3.0]是values

基类是Vector,  org.apache.spark.mllib.linalg.vector引入

import org.apache.spark.mllib.linalg.{Vector, Vectors}
val dv: Vector = Vectors.dense(1.0, 0.0, 3.0) // 创建一个dense vector (1.0, 0.0, 3.0).
val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)) // 创建一个sparse vector (1.0, 0.0, 3.0).
val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0))) // 等同于sv2

4. 标注点(Labeled Point)

用于有监督学习的训练样本称为标注点。

  • 一个标注点就是一个本地向量(或稠密或稀疏),这个向量和一个标签或者响应相关联。
  • 我们用一个double存储标签,这样我们就可以在回归和分类中使用标注点。
  • 对于二分类,一个标签可能是0或者是1;对于多分类,一个标签可能代表从0开始的类别索引

样本类是LabeledPoint, org.apache.spark.mllib.regression.LabeledPoint 引入。

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint val pos = LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0)) // a positive label and a dense feature vector.
val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0))) // a negative label and a sparse feature vector.

5. 本地矩阵(Local Matrix)

  • 稠密矩阵    按列顺序存储,用一个数组,加上(列,行) 表示数组大小。
  • 稀疏矩阵    非零条目值保存为压缩稀疏列 CSCCompressed Sparse Column)格式,这种格式也是以列顺序存储

例:   9.0    0.0

( 0.0    8.0)

0.0    6.0

稠密矩阵可以表示为,[3, 2, (9.0 , 0.0, 0.0, 0.0, 8.0, 6.0) ]  其中3为

稀疏矩阵  ??不懂

基类是Matrix, 可以导入 org.apache.spark.mllib.linalg.Matrices

import org.apache.spark.mllib.linalg.{Matrix,Matrices}

val dm: Matrix=Matrices.dense(3,2,Array(9.0,0.0,0.0,0.0,8.0,6.0)              // dense Matrix
val sm: Matrix=Matrices.sparse(3,2,Array(0,1,3),Array(0,2,1),Array(9,8,6)) //sparse Matrix

6. 分布式矩阵 Distributed Matrix

一个分布式矩阵拥有long类型的行和列索引,以及double类型的值,分布式的存储在一个或多个RDD

已经实现了3种分布式矩阵:

1)  RowMatrix

  • 是一个面向行的分布式矩阵,它没有有意义的行索引。行保存为一个RDD,每一行都是一个本地向量。
  • 可以通过  org.apache.spark.mllib.linalg.distributed.RowMatrix 引入。
  • 通过RDD[Vector]实例创建

2) IndexedRowMatrix

  • 和RowMatrix类似,它拥有行索引,行索引可以用于识别行和进行join操作
  • org.apache.spark.mllib.linalg.distributed.{IndexedRow, IndexedRowMatrix, RowMatrix}
  • 可以通过RDD[IndexedRow]实例创建
  • IndexedRowMatrix可以通过去掉它的行索引,转换成RowMatrix

3) CoordinateMatrix  

  • 一个分布式矩阵,它使用COO格式存储 (COO是啥)
  • 条目保存为一个RDD。每一个条目是一个(i: Long, j: Long, value: Double)格式的元组,行索引,列索引,value 条目值。
  • 应该仅仅在矩阵维度很大并且矩阵非常稀疏的情况下使用
  • org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry}
  • 通过RDD[MatrixEntry]实例创建

4) BlockMatrix

  • 每个块保存为一个RDD
  • 与CoordinateMatrix类似,是一个((Int, Int), Matrix)类型的元组,其中(Int, Int)代表块的索引,Matrix代表子矩阵。
  • BlockMatrix支持诸如addmultiply等方法。BlockMatrix还有一个帮助方法validate,用来判断一个BlockMatrix是否正确的创建。
  • 调用toBlockMatrix从一个IndexedRowMatrix或者CoordinateMatrix创建一个BlockMatrix。 默认大小为 1024 * 1024 
  • org.apache.spark.mllib.linalg.distributed.BlockMatrix

  

Spark MLib 数据类型的更多相关文章

  1. Spark MLib:梯度下降算法实现

    声明:本文参考< 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现> 1. 什么是梯度下降? 梯度下降法(英语:Gradient descen ...

  2. Spark mlib的本地向量

    Spark mlib的本地向量有两种: DenseVctor :稠密向量 其创建方式 Vector.dense(数据) SparseVector :稀疏向量 其创建方式有两种: 方法一:Vector. ...

  3. Spark MLib完整基础入门教程

    Spark MLib 在Spark下进行机器学习,必然无法离开其提供的MLlib框架,所以接下来我们将以本框架为基础进行实际的讲解.首先我们需要了解其中最基本的结构类型,即转换器.估计器.评估器和流水 ...

  4. Spark MLib 基本统计汇总 2

    4. 假设检验 基础回顾: 假设检验,用于判断一个结果是否在统计上是显著的.这个结果是否有机会发生. 显著性检验 原假设与备择假设 常把一个要检验的假设记作 H0,称为原假设(或零假设) (null ...

  5. Spark MLib 基本统计汇总 1

    1.  概括统计 summary statistics MLlib支持RDD[Vector]列式的概括统计,它通过调用 Statistics 的 colStats方法实现. colStats返回一个  ...

  6. Spark PySpark数据类型的转换原理—Writable Converter

    Spark目前支持三种开发语言:Scala.Java.Python,目前我们大量使用Python来开发Spark App(Spark 1.2开始支持使用Python开发Spark Streaming ...

  7. Spark MLlib数据类型

        MLlib支持几种数据类型:本地向量(local vectors),和存储在一个简单机器中的矩阵(matrices),以及由一个或多个RDDs组成的分布式矩阵. 1,本地向量(Local Ve ...

  8. spark 机器学习基础 数据类型

    spark的机器学习库,包含常见的学习算法和工具如分类.回归.聚类.协同过滤.降维等使用算法时都需要指定相应的数据集,下面为大家介绍常用的spark ml 数据类型.1.本地向量(Local Vect ...

  9. Spark的mlib中的稠密向量和稀疏向量

    spark mlib中2种局部向量:denseVector(稠密向量)和sparseVector(稀疏向量) denseVector向量的生成方法:Vector.dense() sparseVecto ...

随机推荐

  1. Kali linux渗透测试常用工具汇总1

    1.ProxyChains 简介:代理工具.支持HTTP/SOCKS4/SOCK5的代理服务器,允许TCP/DNS通过代理隧道. 应用场景:通过代理服务器上网. 配置:/etc/proxychains ...

  2. CentOS 6.4 下安装vsftpd

    概述: vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个. 本文介绍了在CentOS 6.4下安装vsftpd.配置虚拟用户登录FTP的过程. 正文: 一:安装vsftp ...

  3. centos6 pyotp bug修复

    yum install python-pip -ypip install pyotp vim /usr/lib/python2.6/site-packages/pyotp/utils.py... 49 ...

  4. [TED] New video technology that reveals an objects hidden properties

    通过视频中,即使1微米的震动,都能够还原成声音. 程序算法结合基础学科,能够发挥出接近无限的力量, 深入挖掘物理特性,形成你想都想不到的效果. 很多技术你都不知道,怎么和国家对抗?所以还是要遵纪守法 ...

  5. Java类加载和类反射回顾

    今天学习Spring,突然想重新复习一下Java类加载和类反射的.巩固一下底层原理.部分参考了李刚老师的<疯狂Java讲义>和陈雄华.林开雄的<Spring3.x企业应用开发实战&g ...

  6. VMware Fusion DHCP方式下如何指定虚拟机IP地址

    默认情况下,vmware fusion中的虚拟机,网卡设置成dhcp(动态分配 )时,会分配一个IP地址,但这个IP通常很难记,如果我们想为某台虚拟机挑一个好记的IP地址,可以按如下步骤操作: 命令行 ...

  7. nginx学习(1):编译、安装、启动

    一.下载 从官网http://nginx.org/en/download.html 下载稳定版(目前最新稳定版是1.6.2) 二.解压 tar zxf nginx-1.6.2.tar.gzcd ngi ...

  8. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  9. bloom filter

    Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员. 结    构 二进制 召回率 ...

  10. Repeater——数据库控件学习

    1.Repeater控件的使用:(用于重复加载一些内容,把要重复加载的代码写在ItemTemplate里面) 脱完控件后,在设计视图中配置数据源即可~ 2.ListView(数据显示,分页此控件一拖千 ...