并行在Spark中训练多个SVM

时间:2018-10-05 16:49:20

标签: apache-spark apache-spark-mllib

假设我有一个带有列(“类”,“ x”,“ y”,“ z”,“标签”)的数据框,并且我想训练多个SVM,“类”中每个不同的值对应一个”列。实现此目的的一种方法是:

df.select("class").
   distinct.
   rdd.
   collect().
   map(x=>x(0)).
   map(x=>train(df.where(col("class")===lit(x))))

火车的功能是:

  1. 将数据框转换为 org.apache.spark.mllib.regression.LabeledPoint使用(“ x”,“ y”,“ z”) 作为功​​能,“标签”作为SVM标签。
  2. 使用org.apache.spark.mllib.classification.SVMWithSGD训练SVM
  3. 返回 SVM作为数据帧的权重和截距。

问题在于,在这种方法下,Spark会按顺序训练SVM。但是,由于类之间没有数据重叠,因此我想并行地训练它们。有什么办法可以做到这一点?

0 个答案:

没有答案