Spark MLlib 入门--Breeze函数

Breeze函数介绍

(欢迎加qq1204738320学习交流)

Spark MLlib底层的向量、矩阵运算使用了Breeze库,Breeze库提供了Vector/Matrix的实现以及
相应计算的接口(Linalg)。但是在MLlib里面同时也提供了Vector和Linalg等的实现
导包:
import breeze.linalg._
import breeze.numerics._
创建2行3列零矩阵
scala> val m1 = DenseMatrix.zeros[Double](2,3)
m1: breeze.linalg.DenseMatrix[Double] =
0.0  0.0  0.0
0.0  0.0  0.0
创建3维0向量
scala> val m2 = DenseVector.zeros[Double](3)
m2: breeze.linalg.DenseVector[Double] = DenseVector(0.0, 0.0, 0.0)
一般矩阵的创建方式
1、 val m1 =new  DenseMatrix(2,3,Array(1,3,4,6,2,9))
2、val m3 =DenseMatrix((1,3,4),(6,2,9))


矩阵操作

1、创建0矩阵,泛型可指定,常见的有Int,Double
scala> val m1=DenseMatrix.zeros[Int](2,3)
m1: breeze.linalg.DenseMatrix[Int] =
0  0  0
0  0  0
2、创建单位矩阵(泛型可指定)
scala> val m2=DenseMatrix.eye[Double](3)
m2: breeze.linalg.DenseMatrix[Double] =
1.0  0.0  0.0
0.0  1.0  0.0
0.0  0.0  1.0
3、创建一般矩阵
scala> val m3=new DenseMatrix(2,3,Array(1,2,3,4,5,6))  按照列存储
m3: breeze.linalg.DenseMatrix[Int] =
1  3  5
2  4  6
或:
scala> val m4=DenseMatrix((1,2,3),(4,5,6))
m4: breeze.linalg.DenseMatrix[Int] =
1  2  3
4  5  6
4、创建索引计算的矩阵
scala> val m5=DenseMatrix.tabulate(2,3){case(i,j)=>i+j}
m5: breeze.linalg.DenseMatrix[Int] =
0  1  2
1  2  3
5、创建指定维数的随机矩阵
scala> val m6=DenseMatrix.rand(2,3)
m6: breeze.linalg.DenseMatrix[Double] =
0.58472563118641     0.42448602137330194  0.5038129191085019
0.10258036346499955  0.6586473595881419   0.9923291338029836

向量操作

1、建立0向量
scala> val v1 = DenseVector.zeros[Double](3)
v1: breeze.linalg.DenseVector[Double] = DenseVector(0.0, 0.0, 0.0)
2、建立单位向量
scala> val v2 = DenseVector.ones[Double](3)
v2: breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0, 1.0)
3、数字填充向量
scala> val v3=DenseVector.fill(3){5}
v3: breeze.linalg.DenseVector[Int] = DenseVector(5, 5, 5)
4、边界步长向量
scala> val v4=DenseVector.range(1,10,2)
v4: breeze.linalg.DenseVector[Int] = DenseVector(1, 3, 5, 7, 9)
5、对角阵
scala> val v5=diag(DenseVector(1,2,3))
v5: breeze.linalg.DenseMatrix[Int] =
1  0  0
0  2  0
0  0  3
6、建立一般行向量
scala> val v6=DenseVector(1,2,3,4)
v6: breeze.linalg.DenseVector[Int] = DenseVector(1, 2, 3, 4)
7、建立一般列向量
scala> val v7=DenseVector(1,1,1,1).t
v7: breeze.linalg.Transpose[breeze.linalg.DenseVector[Int]] = Transpose(DenseVector(1, 1, 1, 1))
8、建立指定维数的随机向量
scala> val v8=DenseVector.rand(3)
v8: breeze.linalg.DenseVector[Double] = DenseVector(0.4516977975198784, 0.7437508243707496, 0.7636911432772242)

元素访问

矩阵元素访问
scala> val m3=new DenseMatrix(2,3,Array(1,2,3,4,5,6))
m3: breeze.linalg.DenseMatrix[Int] =
1  3  5
2  4  6
1、指定行列
scala> m3(0,1)
res1: Int = 3
2、最后一个元素
scala> m3(-1,-1)
res5: Int = 6
3、倒取元素
scala> m3(-1,-2)
res7: Int = 4
4、取第一列
scala> m3(::,1)
res8: breeze.linalg.DenseVector[Int] = DenseVector(3, 4)
5、取第0行
scala> m3(0,::)
res9: breeze.linalg.Transpose[breeze.linalg.DenseVector[Int]] = Transpose(DenseVector(1, 3, 5))
向量元素访问
scala> val v4=DenseVector.range(1,10,2)
v4: breeze.linalg.DenseVector[Int] = DenseVector(1, 3, 5, 7, 9)
1、取指定坐标元素
scala> v4(0)
res13: Int = 1
2、取最后一个元素
scala> v4(-1)
res14: Int = 9
3、指定坐标范围
scala> v4(1 to 3)
res15: breeze.linalg.DenseVector[Int] = DenseVector(3, 5, 7)
4、取全部元素
scala> v4(0 to -1 )
res19: breeze.linalg.DenseVector[Int] = DenseVector(1, 3, 5, 7, 9)

猜你喜欢

转载自blog.csdn.net/zhouzhuo_csuft/article/details/80623425