我知道我可以像这样创建Matrix:
val values = Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0)
val mat = Matrices.dense(m, n, values).asInstanceOf[DenseMatrix]
但现在我有一个文本文件,它是一个像这样的矩阵:
0.0 1.0
2.0 3.0
4.0 5.0
我想知道如何从这个文件创建Matrix。
我可以这样做:
val test3=sc.textFile("textFile").map(_.split("\t").map(_.toDouble)).asInstanceOf[DenseMatrix]
但它似乎无法运作
有谁帮助过我?答案 0 :(得分:2)
Matrices.dense
方法采用列主要值列表。如果您在文本文件中有数据,则它是行主要的。所以,做到以下几点:
val dValues = sc.textFile("textFile").flatMap(_.split("\t").map(_.toDouble))
val matrix = Matrices.dense(rows, columns, dValues)
给你错误的矩阵。但是,有一个简单的解决方法:
val matrix = Matrices.dense(columns, rows, dValues).transpose
答案 1 :(得分:1)
我想你可能已经跳过了一步。
import org.apache.spark.mllib.linalg.{Matrix, Matrices}
val dValues = sc.textFile("textFile").map(_.split("\t").map(_.toDouble))
val matrix = Matrices.dense(3, 2, dValues)
您可以删除.asInstanceOf[DenseMatrix]
。没有必要。