Я пытаюсь обучить Случайный Лес в Pyspark, используя как плотный, так и разреженный вектор, у меня есть четыре переменные, которые представляют собой одно единственное значение и еще одну переменную, которая может быть представлена как разреженный вектор, я решил использовать разреженный вектор вместо одна горячая кодировка, так как я не хочу иметь N столбцов. Мои данные выглядят так:
Variable 1|Variable 2 |Variable 3 |Variable 4| Variable 5|
+---------+-----------+------------+----------+-----------------+
| 8.0| 151.0| 151.0| 8.0 |(193,[141],[1.0])|
| 8.0| 151.0| 14.0| 8.0 |(193,[141],[1.0])|
Мой первый вопрос: возможно ли это? Если это невозможно, есть ли другой способ представить переменную 5? Если я тренирую модель без переменной 5, она работает. Однако, если я добавлю переменную 5, то получу следующую ошибку (которая мне мало что говорит):
org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 310.0 failed 4 times, most recent failure: Lost task 2.3 in stage 310.0 (TID 9395, 10.139.64.4, executor 2): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
Мой второй вопрос: если это возможно, то как я могу решить эту ошибку? Ошибка много говорит о том, как ее решить.
Кстати, вот как я создаю LabeledPoint:
from pyspark.mllib.regression import LabeledPoint
def labelData(data):
# label: row[end], features: row[0:end-1]
return data.map(lambda row: LabeledPoint( row[-1], row[:-1] ))
'''Transform dataset into Labeled Point'''
dataset_ = labelData(dataset.select(['Variable 1', 'Variable 2', 'Variable 3', 'Variable 4', 'Variable 5']).rdd)
Заранее спасибо