我想读取一个csv文件并将其转置以测量属性之间的相关性。但是当我转置它时,我得到以下错误:
方法转置的参数不够:(隐式asTraversable: org.apache.spark.mllib.linalg.Vector => scala.collection.GenTraversableOnce [B])序号[SEQ [B]]。未指定的值 参数asTraversable。
涉及默认参数的应用程序出错。
val file = "/data.csv"
val data = sc.textFile(file).map(line => Vectors.dense(line.split (",").map(_.toDouble).distinct))
val transposedData = sc.parallelize(data.collect.toSeq.transpose)
val correlMatrix: Matrix = Statistics.corr(transposedData, "pearson")
println(correlMatrix.toString)
答案 0 :(得分:0)
方法转置的参数不足:(隐式asTraversable:org.apache.spark.mllib.linalg.Vector => scala.collection.GenTraversableOnce [B])Seq [Seq [B]]。未指定的值参数asTraversable。
data
RDD是org.apache.spark.mllib.linalg.Vector
的集合,即。对象集合。但转置需要收集集合。
data.collect.toSeq
只是给你Seq[Vector]
无法换位的val data = sc.textFile(file).map(line => line.split (",").map(_.toDouble))
val untransposedData = data.map(Vectors.dense(_))
val transposedData = sc.parallelize(data.collect.toSeq.transpose).map(x => Vectors.dense(x.toArray))
val correlMatrix: Matrix = Statistics.corr(transposedData, "pearson")
println(correlMatrix.toString)
。
以下代码应该适合您
distinct
注意: while True:
try:
member = str(input('Are you a child or adult member? '))
except TypeError:
print('Please input letters')
被删除,因为它会使二维矩阵不均匀,从而导致另一个问题。