spark 创建稀疏向量和矩阵

http://blog.csdn.net/canglingye/article/details/41316193

【相互转换】:http://stackoverflow.com/questions/32456808/sparsevector-to-densevector-conversion-in-pyspark

1、稀疏矩阵和稠密矩阵可以转换成数组

2、数组可以转换成稠密矩阵

3、稀疏矩阵不能直接转换为稠密矩阵,需要先转换为数组;但是,数组和稠密矩阵都不能直接转换为稀疏矩阵

from pyspark.mllib.linalg import SparseVector, DenseVector

s1=SparseVector(5,{4:1.})

>>> s1

SparseVector(5, {4: 1.0})

>>> a1=s1.toArray()
>>> a1
array([ 0., 0., 0., 0., 1.])

d1=DenseVector(a1)

>>> d1
DenseVector([0.0, 0.0, 0.0, 0.0, 1.0])

a2=d1.toArray()
>>> a2
array([ 0., 0., 0., 0., 1.])

通过函数将rdd转成稀疏矩阵

####转稀疏矩阵
  def sparse(p):
         vec=[int(x) for x in p[2:]]
         lvec=len(vec)
         dic1={}
         for i in range(lvec):
            if vec[i]==1:
               dic1[i]=1
     return [p[0],p[1],SparseVector(lvec,dic1)]

lt11=lt8.map(sparse)

>>> lt11.take(2)

[ [u‘ANDROID-5a9ac5c22ad94e26b2fa24e296787a35‘, u‘0‘, SparseVector(10000, {3: 1.0, 13: 1.0, 64: 1.0, 441: 1.0, 801: 1.0})],

[u‘ANDROID-188949641b6c4f1f8c1c79b5c7760c2f‘, u‘0‘, SparseVector(10000, {2: 1.0, 3: 1.0, 4: 1.0, 13: 1.0, 27: 1.0, 39: 1.0, 41: 1.0, 150: 1.0, 736: 1.0, 9675: 1.0})] ]

 

1、本地向量

MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,

其创建方式主要有一下三种(三种方式均创建了向量(1.0, 0.0, 3.0):

  1. import org.apache.spark.mllib.linalg.{Vector, Vectors}
  2. //创建一个稠密向量
  3. val dv : Vector = Vector.dense(1.0,0.0,3.0);
  4. //创建一个稀疏向量(第一种方式)
  5. val sv1: Vector = Vector.sparse(3, Array(0,2), Array(1.0,3.0));
  6. //创建一个稀疏向量(第二种方式)
  7. 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里面每一对都是(索引,值)的形式。

时间: 2024-08-01 10:32:08

spark 创建稀疏向量和矩阵的相关文章

向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等

向量和矩阵的各种范数比较(1范数.2范数.无穷范数等等 范数 norm 矩阵 向量 一.向量的范数 首先定义一个向量为:a=[-5,6,8, -10] 1.1 向量的1范数 向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1): 1.2 向量的2范数 向量的2范数即:向量的每个元素的平方和再开平方根,上述a的2范数结果就是:15,MATLAB代码实现为:norm(a,2): 1.3 向量的无穷范数 1.向量的负无穷范数即:向量的

OpenGL学习脚印: 向量和矩阵要点(math-vector and matrices)

写在前面 前面几节内容环境搭建,绘制三角形,以及使用索引绘制,让我们对现代OpenGL中绘图做了简单了解.要继续后面的部分,需要熟悉OpenGL中涉及的数学知识.因此本节开始介绍OpenGL中的基本数学. 介绍这部分内容的主旨在于对OpenGL涉及的数学有个整体把握,重点把握一些概念在OpenGL中的应用.内容尽量以例子形式说明,仅在必要时会给出数学证明.一个主题往往涉及过多内容,对于文中省略的部分,请参考相应的教材. 通过本节可以了解到 向量基本概念和操作 矩阵的基本概念和操作 GLM数学库

MATLAB向量和矩阵的基本操作

矩阵的创建(1) rand(m,n)创建m行n列的随机矩阵(每个元素的值在0到1之间).(2) zeros(m,n)创建m行n列的0矩阵.(3) ones(m,n)创建m行n列的1矩阵(4) eye(m)创建m行m列的对角元素是1,其余元素是0的对角矩阵.(5) randn:产生正态分布的随机数或矩阵的函数 randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数. 用法: Y = randn(n):返回一个n*n的随机项的矩阵.如果n不是个数量,将返回错误信

Spark Distributed matrix 分布式矩阵

RowMatrix行矩阵 import org.apache.spark.rdd.RDD import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.linalg.distributed.RowMatrix val df1 = Seq( | (1.0, 2.0, 3.0), | (1.1, 2.1, 3.1), | (1.2, 2.2, 3.2)).toDF("c1", "c2"

MATLAB的变量、向量和矩阵的定义与赋值

变量名以字母开头,后接字母.数字或下划线,最多63个字符:区分大小写:关键字和函数名不能作为变量名. MATLAB变量只有一种数据格式,是双精度(64位)型:但输出显示时可以设置多种显示格式   矩阵:由m×n个数组成的排成m行n列的一个矩形的数表,其中0×0矩阵为空矩阵([ ]).数表中第i(1≤i≤m)行第j(1≤j≤n)列的数据称为矩阵元素: 标量:1×1的矩阵,即为只含一个数的矩阵: 向量:1×n或n×1的矩阵,只有一行的矩阵称为行向量,只有一列的矩阵称为列向量.数表中第i(1≤i≤n)

idea spark 创建maven项目

.file->new -> project 2.选择Maven,添加模板创建项目 3.填写Groupid.ArtifactId信息.GroupId:com.公司名称/个人名称.项目名:ArtifactId:子项目名称 4.选择本地安装的maven和setting.xml文件 5.工程名称和路径 6.点击Finish. 修改pom.xml如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q

spark创建DataFrame的几种方式

package com.hollysys.spark import java.util import org.apache.spark.sql.types._ import org.apache.spark.sql.{Row, SQLContext, SparkSession} /** * Created by shirukai on 2018/7/17 * 创建DataFrame的几种方式 */ object CreateDataFrameTest { def main(args: Array

SPARK 创建新任务

1.应用程序创建 SparkContext 的实例 sc 2.利用 SparkContext 的实例来创建生成 RDD 3.经过一连串的 transformation 操作,原始的 RDD 转换成为其它类型的 RDD 4.当 action 作用于转换之后 RDD 时,会调用 SparkContext 的 runJob 方法 5.sc.runJob 的调用是后面一连串反应的起点,关键性跃变发生

matlab创建三对角线矩阵

matlab生成三对角线矩阵 A=diag(repmat([6], 1, 100))+diag(repmat([1], 1, 99), 1)+diag(repmat([8], 1, 99), -1)