spark向量矩阵的使用(scala)
向量和矩阵都是做机器学习的基础,下面来介绍下使用
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.3 torch_向量/矩阵操作
文章目录 1.3.1 标量/向量操作 1.3.2 矩阵 转置 & clone 求和 & 求平均 累进求和 & 向量点积 向量*矩阵 & 矩阵*矩阵 & 范数 1 ...
- 向量 矩阵 张量_张量,矩阵和向量有什么区别?
向量 矩阵 张量 机器学习代数 (MACHINE LEARNING ALGEBRA) Algebra is an important element of mathematics and has a ...
- 向量余弦值python_向量/矩阵的余弦值打印(元素明智的操作) 使用Python的线性代数
向量余弦值python Prerequisite: 先决条件: Defining a Vector 定义向量 Defining a Matrix 定义矩阵 Numpy is the library o ...
- Spark常用的算子以及Scala函数总结
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟. Spark与Scala 首先, ...
- 深度学习-数学-第一篇-标量,向量,矩阵,张量
这记录一些我刚开始学习所用到的数学 基础从最基础的开始 小知识: 0 ∈ {0 1 {0 1}表示一个集合,里面有0,1两个元素.所以0属于这个集合,就用0 ∈ {0 1}表示了.∈代表属于. {0 ...
- Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...
- Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发
今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福, 每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信 ------------送给一直努力的你 今天 ...
- 标量/向量/矩阵求导方法
这篇博客源于在看论文时遇到了一个误差向量欧氏距离的求导,如下: 在看了一堆资料后得出以下结论: 这个结论是怎么来的呢?这就涉及标量/向量/矩阵的求导了.由于标量.向量都可以看做特殊的矩阵,因此就统称为 ...
- NLP-预训练模型-2019:ALBert【 轻Bert;使用 “输入层向量矩阵分解”、“跨层参数共享” 减少参数量;使用SOP代替NSP】【较Bert而言缩短训练及推理时间】
预训练模型(Pretrained model):一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型 ...
最新文章
- Dom操作xml的常用方法
- Java 常用类库 之 Random 随机数类实例
- JMeter基础之——录制脚本
- matlab怎么把变量一起换掉,MATLAB只是简单地把表达式里的变量名替换成数值,而不给出结果...
- Apache Commons SCXML:有限状态机实现
- Request header field content-type is not allowed by Access-Control-Allow-Headers(请求头设置问题)
- db2存储过程手动执行没有问题_轻松解决DB2创建存储过程时遇到的错误
- 射频测试系统软件,新的~~蓝牙5.0射频测试系统
- 20200114:(leetcode)两数相加
- tomcat的acceptCount、maxThreads、connectionTimeout参数调整
- 概率语言模型及其变形系列-LDA及Gibbs Sampling
- spring与springmvc父子容器
- Z逆变换(2020.10.21)
- Python实现页面置换算法
- Android 老生常谈之MVC与MVP
- 亚马逊云科技为全球的可持续发展进程做出贡献
- 大厂面试题刷屏:一头牛重800kg,一座桥承重700kg,牛如何过桥?
- 涠洲岛日出日落时间表_在涠洲岛看日出日落
- mfc下创建html文件,用MFC怎么创建TXT文件并写入数据
- 密西根大学-安娜堡分校计算机科学与技术,密歇根大学安娜堡分校研究生计算机系统专业排名...
热门文章
- python在文本添加超链接_Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console)...
- windows7 docker mysql_DOCKER windows 7 详细安装教程
- python的主要版本_Python目前主要有( )两个主要版本。_学小易找答案
- Windows7系统自带的备份与还原功能使用介绍
- python中的常量_Python中的变量和常量
- c语言编译及下载环境变量,windows 下使用g++ 编译器-Go语言中文社区
- Linux节点之间无密码问题,Linux下多节点SSH无密码互联实现
- timthumb.php外链,如何解决WordPress多站点不支持timthumb.php?
- python pillow环境_Python环境Pillow( PIL )图像处理工具使用解析
- html5通过api调数据库,使用HTML5数据库API [关闭](Using HTML5 Database API [closed])