Искра: Тренируйте Случайный Лес с плотными и разреженными векторами - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь обучить Случайный Лес в 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)

Заранее спасибо

...