Scala Breeze的*和*:*在矩阵和向量中的用法

Posted 和菜狗博士一起搞大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala Breeze的*和*:*在矩阵和向量中的用法相关的知识,希望对你有一定的参考价值。

在机器学习中,矩阵和向量的乘法有很多变形,其中Breeze中针对该运算定义了好几种符号和运算步骤。在自己手写机器学习和深度学习算法的时候经常会用到,这里就给出了平时常用到的一些例子,并加以区分。

矩阵

*    表示常规的线性代数中的矩阵相乘

*:*     表示逐元素的矩阵相乘

val arr1 = Array[Int](1, 2, 3, 4, 5, 6)

 val arr2 = Array[Int](10, 20, 30, 40, 50, 60) var a= new DM(2,3,arr1) var a1= new DM(3,2,arr1)    var a2= new DM(2,3,arr2) println("a *:* a2:")    println(a *:* a2)//表示对应位置的相乘 print("\n") println("a1 * a:")    println(a1 * a)//线性代数矩阵乘法 println("a1 * a:") println(a * a1)//线性代数矩阵乘法

结果为:


向量

向量中*和*:*实现的功能是一样的:

 var a = new DV(Array[Int](1, 2, 3, 4, 5))    var a2 = new DV(Array[Int](1020304050))    println("a*a2 为:")//向量逐元素相乘 println(a * a2)    println("a*:*a2为:")//向量逐元素相乘 println(a *:* a2)    println("a*a.t为:")//列向量乘行向量 println(a * a.t) println("a*:*a.t为:")//行向量乘列向量 println(a.t * a)

输出结果为:



以上是关于Scala Breeze的*和*:*在矩阵和向量中的用法的主要内容,如果未能解决你的问题,请参考以下文章

Spark MLlib之使用Breeze操作矩阵向量

spark-mllib 密集向量和稀疏向量

掌握Spark机器学习库-05-spark中矩阵与向量的使用

Spark MLlib 之 Vector向量深入浅出

scala breeze使用替换底层线性库

Spark MLlib数据类型