向量和矩阵都是做机器学习的基础,下面来介绍下使用
spark的底层的向量和矩阵是基于Breeze的,下面主要介绍下Breeze的使用,下面直接给代码,代码上有注释
需要引入的包

import breeze.linalg._
import breeze.numerics._
import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}

Breeze 创建函数

val conf = new SparkConf().setAppName("breezeTest").setMaster("local[3]")val sc = new SparkContext(conf)Logger.getRootLogger.setLevel(Level.WARN)//3.1.1 Breeze 创建函数//创建0矩阵和向量val m1 = DenseMatrix.zeros[Double](2,3)val v1 = DenseVector.zeros[Double](3)//创建元素都是1的向量val v2 = DenseVector.ones[Double](3)//创建指定元素的向量val v3 = DenseVector.fill(3)(5.0)//根据范围创建向量参数(start,end,step)val v4 = DenseVector.range(1,10,2)//创建对角线为1的矩阵val m2 = DenseMatrix.eye[Double](3)//创建指定对角线元素的矩阵val v6 = diag(DenseVector(1.0,2.0,3.0))//根据向量创建矩阵,每个数组就是一行val m3 = DenseMatrix((1.0,2.0),(3.0,4.0))//根据元素创建向量val v8 = DenseVector(1,2,3,4)//val v9 = v8.t//转置val v9 = DenseVector(1,2,3,4).t//根据下标创建向量和矩阵val v10 = DenseVector.tabulate(3){i=>2*i}val m4 = DenseMatrix.tabulate(3,2){case(i,j) =>i+j}//根据数组创建向量和矩阵val v11 = new DenseVector(Array(1,2,3,4))val m5 = new DenseMatrix(2,3,Array(11,12,12,21,21,11))//创建一个随机向量和矩阵val v12 = DenseVector.rand(4)val m6 = DenseMatrix.rand(2,3)

Breeze 元素访问

    //元素访问val a = DenseVector(1,2,3,4,5,6,7,8,9)//访问指定的元素a(0)//访问子元素,返回还是一个向量a(1 to 4)//指定起始和终止位置,和补偿a(5 to 1 by -1)//-1 代表最后的元素a(1 to -1)//访问最后元素a(-1)val m = DenseMatrix((1.0,2.0,3.0),(4.0,5.0,6.0))//访问指定的元素m(0,1)//访问某列的元素,返回一个向量m(::,1)//访问某一行m(1,::)//元素操作val m_1 = DenseMatrix((1.0,2.0,3.0),(4.0,5.0,6.0))//变成3行2列的矩阵m_1.reshape(3,2)//生成一个向量m_1.toDenseVectorval m_3 = DenseMatrix((1,2,3),(4,5,6),(7,8,9))//取上三角和下三角lowerTriangular(m_3)upperTriangular(m_3)//copy生成一个新的矩阵m_3.copy//对角线生成一个向量diag(m_3)//改变矩阵里面的元素m_3(::,2) := 5m_3m_3(1 to 2,1 to 2) := 5m_3//改变向量里面的元素val a_1 =  DenseVector(1,2,3,4,5,6,7,8,9,10)a_1(1 to 4) := 5a_1a_1(1 to 4) := DenseVector(1,2,3,4)a_1//矩阵的连接和向量的连接val a1 = DenseMatrix((1,2,3),(4,5,6))val a2 = DenseMatrix((1,1,1),(2,2,2))//竖直的连接DenseMatrix.vertcat(a1,a2)//水平连接DenseMatrix.horzcat(a1,a2)val b1 = DenseVector(1,2,3,4)val b2 = DenseVector(1,1,1,1)//水平连接DenseVector.vertcat(b1,b2)//两列的形式连接DenseVector.horzcat(b1,b2)

Breeze 数值计算函数

 val a_3 = DenseMatrix((1,2,3),(4,5,6))val b_3 = DenseMatrix((1,1,1),(2,2,2))//对应元素相操作a_3 + b_3a_3 :* b_3a_3 :/ b_3a_3 :< b_3a_3 :== b_3a_3 :+= 1a_3 :*= 2max(a_3)//最大值位置的索引argmax(a_3)//内积DenseVector(1,2,3,4) dot DenseVector(1,1,1,1)

Breeze 求和函数

    val a_4 = DenseMatrix((1,2,3),(4,5,6),(7,8,9))sum(a_4)//每一列进行求和   12  15  18sum(a_4,Axis._0)//每一行进行求和  DenseVector(6, 15,24)sum(a_4,Axis._1)//对角线求和trace(a_4)//把前面的元素相加   DenseVector(1, 3, 6, 10)accumulate(DenseVector(1,2,3,4))

Breeze 布尔函数

    val a_5 = DenseVector(true,false,true)val b_5 = DenseVector(false,true,true)a_5 :& b_5a_5 :| b_5!a_5val a_5_2 = DenseVector(1,0,-2)//任意一个元素为0即为trueany(a_5_2)//所有元素都为0则为trueall(a_5_2)

Breeze 线性代数函数

    val a_6 = DenseMatrix((1,2,3),(4,5,6),(7,8,9))val b_6 = DenseMatrix((1,1,1),(1,1,1),(1,1,1))a_6 \ b_6//转置a_6.t//特征值det(a_6)//逆inv(a_6)//矩阵分解(有问题)val svd.SVD(u,s,v) = svd(DenseMatrix(1.1,2.0),(2.0,3.0))a_6.rowsa_6.cols

Breeze 取整函数

    val a_7 = DenseVector(1.2,0.6,-2.3)//四舍五入round(a_7)//往前进位ceil(a_7)//都舍去floor(a_7)//正的变为1.0 负的变为-1   0还是0signum(a_7)//绝对值abs(a_7)

--------------------- 本文来自 韩利鹏 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/HANLIPENGHANLIPENG/article/details/70139010?utm_source=copy

spark向量矩阵的使用(scala)相关推荐

  1. 1.3 torch_向量/矩阵操作

    文章目录 1.3.1 标量/向量操作 1.3.2 矩阵 转置 & clone 求和 & 求平均 累进求和 & 向量点积 向量*矩阵 & 矩阵*矩阵 & 范数 1 ...

  2. 向量 矩阵 张量_张量,矩阵和向量有什么区别?

    向量 矩阵 张量 机器学习代数 (MACHINE LEARNING ALGEBRA) Algebra is an important element of mathematics and has a ...

  3. 向量余弦值python_向量/矩阵的余弦值打印(元素明智的操作) 使用Python的线性代数

    向量余弦值python Prerequisite: 先决条件: Defining a Vector 定义向量 Defining a Matrix 定义矩阵 Numpy is the library o ...

  4. Spark常用的算子以及Scala函数总结

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟. Spark与Scala 首先, ...

  5. 深度学习-数学-第一篇-标量,向量,矩阵,张量

    这记录一些我刚开始学习所用到的数学 基础从最基础的开始 小知识: 0 ∈ {0 1 {0 1}表示一个集合,里面有0,1两个元素.所以0属于这个集合,就用0 ∈ {0 1}表示了.∈代表属于. {0 ...

  6. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

  7. Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发

    今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福, 每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信 ------------送给一直努力的你 今天 ...

  8. 标量/向量/矩阵求导方法

    这篇博客源于在看论文时遇到了一个误差向量欧氏距离的求导,如下: 在看了一堆资料后得出以下结论: 这个结论是怎么来的呢?这就涉及标量/向量/矩阵的求导了.由于标量.向量都可以看做特殊的矩阵,因此就统称为 ...

  9. NLP-预训练模型-2019:ALBert【 轻Bert;使用 “输入层向量矩阵分解”、“跨层参数共享” 减少参数量;使用SOP代替NSP】【较Bert而言缩短训练及推理时间】

    预训练模型(Pretrained model):一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型 ...

最新文章

  1. Dom操作xml的常用方法
  2. Java 常用类库 之 Random 随机数类实例
  3. JMeter基础之——录制脚本
  4. matlab怎么把变量一起换掉,MATLAB只是简单地把表达式里的变量名替换成数值,而不给出结果...
  5. Apache Commons SCXML:有限状态机实现
  6. Request header field content-type is not allowed by Access-Control-Allow-Headers(请求头设置问题)
  7. db2存储过程手动执行没有问题_轻松解决DB2创建存储过程时遇到的错误
  8. 射频测试系统软件,新的~~蓝牙5.0射频测试系统
  9. 20200114:(leetcode)两数相加
  10. tomcat的acceptCount、maxThreads、connectionTimeout参数调整
  11. 概率语言模型及其变形系列-LDA及Gibbs Sampling
  12. spring与springmvc父子容器
  13. Z逆变换(2020.10.21)
  14. Python实现页面置换算法
  15. Android 老生常谈之MVC与MVP
  16. 亚马逊云科技为全球的可持续发展进程做出贡献
  17. 大厂面试题刷屏:一头牛重800kg,一座桥承重700kg,牛如何过桥?
  18. 涠洲岛日出日落时间表_在涠洲岛看日出日落
  19. mfc下创建html文件,用MFC怎么创建TXT文件并写入数据
  20. 密西根大学-安娜堡分校计算机科学与技术,密歇根大学安娜堡分校研究生计算机系统专业排名...

热门文章

  1. python在文本添加超链接_Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console)...
  2. windows7 docker mysql_DOCKER windows 7 详细安装教程
  3. python的主要版本_Python目前主要有( )两个主要版本。_学小易找答案
  4. Windows7系统自带的备份与还原功能使用介绍
  5. python中的常量_Python中的变量和常量
  6. c语言编译及下载环境变量,windows 下使用g++ 编译器-Go语言中文社区
  7. Linux节点之间无密码问题,Linux下多节点SSH无密码互联实现
  8. timthumb.php外链,如何解决WordPress多站点不支持timthumb.php?
  9. python pillow环境_Python环境Pillow( PIL )图像处理工具使用解析
  10. html5通过api调数据库,使用HTML5数据库API [关闭](Using HTML5 Database API [closed])