Spark:使用密集和稀疏向量训练随机森林

时间:2019-06-25 15:22:16

标签: python pyspark sparse-matrix random-forest

我正在尝试使用密集和稀疏矢量在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的模型,它将起作用。但是,如果我添加变量5thethen,我会收到以下错误(不会告诉我很多):

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)

预先感谢

0 个答案:

没有答案