0
私はPCA法を適用するために次元数を減らそうとしている(私は120列)。スパーク - 主成分分析 - PCAは多くの主成分を必要とするが、0を与えられた。
val data = sc.textFile("data")
val header = data.first
val rows = data.filter(l => l != header)
import org.apache.spark.mllib.feature.PCA
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionWithSGD}
val data = rows.map { line =>
val parts = line.split(';')
LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(';').map(_.toDouble)))
}.cache()
val splits = data.randomSplit(Array(0.9, 0.1), seed = 11L)
val training = splits(0).cache()
val test = splits(1)
val pca = new PCA(training.first().features.size/2).fit(data.map(_.features))
しかし、私はこのエラーを取得しています:
java.lang.IllegalArgumentException: requirement failed: PCA requires a number of principal components k >= 1 but was given 0
at scala.Predef$.require(Predef.scala:233)
at org.apache.spark.mllib.feature.PCA.<init>(PCA.scala:33)
at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:59)
誰もが、私はこの問題を抱えている理由のアイデアを持っていますか?
ありがとうございます!
私はすでに秒数LABELEDPOINT uisng( "")を入れています:data:org.apache.spark.rdd。 RDD [org.apache.spark.mllib.regression.LabeledPoint] = MapPartitionsRDD [3]:40 でも私はまだ同じ問題を抱えています –