我實施了Apache星火MLlib一些機器學習算法,我想乘向量與標量:斯卡拉矢量標量乘法
凡u_i_j_m是一張雙人牀和X_I是一個矢量
我已經試過如下:
import breeze.linalg.{ DenseVector => BDV, Vector => BV}
import org.apache.spark.mllib.linalg.{DenseVector, Vectors, Vector}
...
private def runAlgorithm(data: RDD[VectorWithNorm]): = {
...
data.mapPartitions { data_ponts =>
c = Array.fill(clustersNum)(BDV.zeros[Double](dim).asInstanceOf[BV[Double]])
...
data_ponts.foreach { data_point =>
...
u_i_j_m : Double = ....
val temp= data_point.vector * u_i_j_m)
// c(j) = temp
}
}
}
凡VectorWithNorm定義如下:
class VectorWithNorm(val vector: Vector, val norm: Double) extends Serializable {
def this(vector: Vector) = this(vector, Vectors.norm(vector, 2.0))
def this(array: Array[Double]) = this(Vectors.dense(array))
def toDense: VectorWithNorm = new VectorWithNorm(Vectors.dense(vector.toArray), norm)
}
但是,當我生成項目,我得到了以下錯誤:
Error: value * is not a member of org.apache.spark.mllib.linalg.Vector val temp = (data_point.vector * u_i_j_m)
我怎樣才能正確地做到這一點乘法?
'u_i_j_m:雙'沒有'val'缺少?或者你是否偶然編輯過它? – kosii
u_i_j_m有一個複雜的計算,所以我把它排除了。 –