Предположим, что у меня есть фрейм данных со столбцами ("class", "x", "y", "z", "label"), и я хотел бы обучить несколько SVM, по одному для каждого отдельного значения в "классе"столбецОдин из способов сделать это:
df.select("class").
distinct.
rdd.
collect().
map(x=>x(0)).
map(x=>train(df.where(col("class")===lit(x))))
, где train - это функция, которая будет:
- Конвертировать фрейм данных в
org.apache.spark.mllib.regression.LabeledPoint
, используя ("x", "y", "z") в качестве функции и "метка" в качестве метки SVM. - Обучение SVM с использованием
org.apache.spark.mllib.classification.SVMWithSGD
- Возвращение весов и перехват SVM в качестве кадра данных.
Проблема в том, что при таком подходе Spark обучает SVM последовательно.Однако, поскольку между классами нет совпадения данных, я бы хотел обучить их параллельно.Есть ли способ сделать это?