我正在尝试使用密集和稀疏矢量在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)
预先感谢