Breeze环境搭建与快速上手

1 用sbt构建scala项目

参考网址:
https://github.com/scalanlp/breeze/wiki/Installation
https://docs.scala-lang.org/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html

1.1 sbt环境安装

  1. 手动安装sbt,然后通过xftp上床到Linux服务器
  2. 解压sbt安装包,并添加环境变量(在实验中一般用得modulefile)
  3. 开始使用sbt构建scala项目

1.2 sbt使用方法-shell快速构建

在配置好环境变量以后,直接在命令行中输入sbt,此时会进入sbt的shell交互式界面,如下图所示
在这里插入图片描述然后进行项目的依赖配置,在这里我们以Spark中使用breeze库为实例(更多依赖库的设置可以参见Scaladex(https://index.scala-lang.org/))在shell中输入下列四句话(每句话回车一下):

1 set scalaVersion := "2.13.3"
2 set libraryDependencies += "org.scalanlp" %% "breeze" % "1.1"
3 set libraryDependencies += "org.scalanlp" %% "breeze-viz" % "1.1"
4 set resolvers += "Sonatype Releases" at "https://oss.sonatype.org/content/repositories/releases/"
5 console

这样依赖库就配置好了,当输入console之后,会直接进入scala-shell命令行,然后把依赖的库import导入:
在这里插入图片描述
这样可以直接开始使用库中的相关函数。

1.3 sbt使用方法-安装构建

我是采用手动安装的方式,因为一般手动安装成功率较高,不会产生因为源而导致速度过慢的问题。
sbt安装包直接搜索sbt官网。下载完成后,通过xftp上传到服务器。一般在服务器的、usr/local/目录下进行解压,然后添加环境变量(如果使用的是module模块,就往modulefile文件里面添加sbt的bin目录的位置就OK)。
现在就可以开始构建工程了,我是通过VsCode里面的Remote SSL模块进行连接服务器,并创建文件夹的,这样使用起来非常方便。
首先在/home/name/路径下建立一个项目文件夹:breezetest
然后再该项目文件夹下创建一个project文件夹和一个src文件夹。
在project里面创建一个build.properties文件,内容如下:
在这里插入图片描述
src文件夹下级创建main文件夹,main文件夹下级创建scala文件夹:
在这里插入图片描述

然后创建一个与src同级的文件为:build.sbt,里面就放官方的依赖,例如:
在这里插入图片描述
然后再terminal里面先加载一下环境,然后输入sbt:
在这里插入图片描述
然后run:
在这里插入图片描述
最终会生成target文件夹在项目文件夹中,不过不用管。最终的目录结构为:
在这里插入图片描述

2 breeze快速使用

2.1 简单操作

  1. 创建向量
scala> val x = DenseVector.zeros[Double](5)
x: breeze.linalg.DenseVector[Double] = DenseVector(0.0, 0.0, 0.0, 0.0, 0.0)

创建稠密向量,尽管元素是零,也会占用内存空间。同理,我们可以创建稀疏向量:SparseVector.zeros[Double](5)

如果要创建行向量,需要通过装置:

Transpose[Vector[T]]或者用x.t

  1. 向量元素的访问

向量元素的索引是从0—length-1,也可以使用负索引。当i<0时,实际上是 (x(i) == x(x.length + i)).

scala> x(0)
Double = 0.0

scala> x(1) = 2

scala> x
breeze.linalg.DenseVector[Double] = DenseVector(0.0, 2.0, 0.0, 0.0, 0.0)

也可以支持向量分片(注: 对向量集操作的时候需要用操作符:=)

scala> x(3 to 4) := .5
breeze.linalg.DenseVector[Double] = DenseVector(0.5, 0.5)

scala> x
breeze.linalg.DenseVector[Double] = DenseVector(0.0, 2.0, 0.0, 0.5, 0.5)
  1. 创建矩阵
scala> val m = DenseMatrix.zeros[Int](5,5)
m: breeze.linalg.DenseMatrix[Int] = 
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  

刚才创建的稠密矩阵,列可以通过稠密向量DenseVectors访问,行可以通过稠密矩阵DenseMatrices访问

scala> (m.rows, m.cols)
(Int, Int) = (5,5)

scala> m(::,1)
breeze.linalg.DenseVector[Int] = DenseVector(0, 0, 0, 0, 0)

scala>  m(4,::) := DenseVector(1,2,3,4,5).t  // transpose to match row shape
breeze.linalg.DenseMatrix[Int] = 1  2  3  4  5 

scala> m
breeze.linalg.DenseMatrix[Int] = 
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
1  2  3  4  5   
  1. 访问矩阵

通过指定行和列的范围去指定矩阵的子矩阵

cala> m(0 to 1, 0 to 1) := DenseMatrix((3,1),(-1,-2)) 
breeze.linalg.DenseMatrix[Int] = 
3   1   
-1  -2  

scala> m
breeze.linalg.DenseMatrix[Int] = 
3   1   0  0  0  
-1  -2  0  0  0  
0   0   0  0  0  
0   0   0  0  0  
1   2   3  4  5  

2.2 核心概念

  1. breeze是默认为列主序的
  2. breeze的核心概念是矩阵和列向量
  3. 行向量通常存储为只有一行的矩阵
  4. 缺点是行向量到列向量的转换是使用转置切片(a.t(::,0))而不是简单的转置(a.t)执行的。

(注意:UFuncs在Breeze中非常重要。一旦你对语法有了一定的了解(也就是这个部分的内容),你就有必要读一读UFunc wiki页面的前半部分。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值