0

何百万もの小さなデータセットで線形回帰を実行し、これらのデータセットごとに重みと切片を保存する必要がある状況があります。そのために以下のscalaコードを書きました。ここで、これらのデータセットのそれぞれをRDDの行としてフィードし、それぞれで回帰を実行しようとしました(データは、それぞれに(ラベル、機能)が格納されているRDDです)行、この場合、ラベルごとに 1 つの特徴があります):

val x = data.flatMap { line => line.split(' ')}.map { line =>
  val parts = line.split(',')
  val parsedData1 = LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
  val model = LinearRegressionWithSGD.train(sc.parallelize(List(parsedData1)),100)//using parallelize to convert data to type RDD
  (model.intercept,model.weights)
}

ここでの問題は、LinearRegressionWithSGDが入力用の RDD を想定しており、ネストされた RDD が Spark でサポートされていないことです。これらのデータセットはすべて互いに独立して実行できるため、このアプローチを選択したため、それらを配布したかった (したがって、ループを除外した)。他のタイプ (配列、リストなど) を使用してLinearRegressionWithSGDにデータセットとして入力できるかどうか、または Spark でそのような計算を分散するより良いアプローチを提案できますか?

4

1 に答える 1