如何从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
。