如何从Scala稠密向量中提取两个数组

如何从Scala稠密向量中提取两个数组,scala,apache-spark-mllib,Scala,Apache Spark Mllib,我有一个稠密向量 scala> model.coefficients res1: org.apache.spark.ml.linalg.Vector = (891,[11,20,25,27,28,50],[0.35686135501086036,8.194306936725383E-6,7.62720047518819E-6,9.354557510460644E-4,5.633054601656321E-4,2.5641516558812987E-5]) 有人能建议一种用这个向量创建两

我有一个稠密向量

scala> model.coefficients 
res1: org.apache.spark.ml.linalg.Vector = (891,[11,20,25,27,28,50],[0.35686135501086036,8.194306936725383E-6,7.62720047518819E-6,9.354557510460644E-4,5.633054601656321E-4,2.5641516558812987E-5])
有人能建议一种用这个向量创建两个数组的方法吗

数组1:索引数组

res2: Array[Int] = Array(11,20,25,27,28,50)  
数组2:值的数组

res3: Array[Double] = Array(0.35686135501086036,8.194306936725383E-6,7.62720047518819E-6,9.354557510460644E-4,5.633054601656321E-4,2.5641516558812987E-5)
我们将非常感谢您的帮助:


(我的最终目标是获取模型系数并使用索引数组选择列名。例如:数组索引11可以是产品A的销售额,数组索引20可以是客户年龄等等)

我相信您拥有的是一个SparseVector。您可以使用以下方法和方法:

import org.apache.spark.mllib.linalg.SparseVector

val vector = new SparseVector(891, Array(11, 20, 25, 27, 28, 50), Array(
  0.35686135501086036, 8.194306936725383E-6, 7.62720047518819E-6,
  9.354557510460644E-4, 5.633054601656321E-4, 2.5641516558812987E-5)
)

vector.indices
// res1: Array[Int] = Array(11, 20, 25, 27, 28, 50)

vector.values
// res2: Array[Double] = Array(0.35686135501086036, 8.194306936725383E-6, 7.62720047518819E-6,
//   9.354557510460644E-4, 5.633054601656321E-4, 2.5641516558812987E-5)

model.coverties是org.apache.spark.ml.linalg.Vector。如何将其转换为org.apache.spark.mllib.linalg.SparseVector?“模型”是通过使用Logistic回归拟合训练数据创建的。您可以使用方法将
model.coverties
转换为
SparseVector