2015-11-12 4 views
0

В методе ниже я попытке умножить на DenseVector DenseVector, где один из DenseVector является параметр метода:Умножение матрицы с использованием ScalaNLP и Breeze

def mult(features : DenseVector[Array[Int]]) = { 

    val dv = new DenseVector(Array(-30, 20 , 20)) 

    features :* dv 

    } 

Это приводит к ошибке компиляции:

Multiple markers at this line: 
◾could not find implicit value for parameter op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That] 
◾not enough arguments for method :*: (implicit op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That])That. Unspecified value parameter op. 
◾could not find implicit value for parameter op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That] 
◾not enough arguments for method :*: (implicit op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That])That. Unspecified value parameter op. 

В этом код:

def mult(features : breeze.linalg.DenseVector[Array[Int]]) = { 

    val dv1 = new breeze.linalg.DenseVector(Array(-30, 20 , 20)) 
    val dv2 = new breeze.linalg.DenseVector(Array(-30, 20 , 20)) 

    dv1 :* dv2 

    } 

Как скомпоновать параметр features eter by dv? Я не уверен в значении ошибки компилятора, связан с тем, что я не указываю размер DenseVector внутри метода?

ответ

2

Я подозреваю, что ваша подпись метода неверна.

Попробуйте с

def mult(features : DenseVector[Int]) 

вместо

def mult(features : DenseVector[Array[Int]]). 

В вашем случае, у вас есть вектор, где каждый элемент имеет тип массива [Int].