如何更改LabeledPoint RDD中的标签

2024-10-05 10:05:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大量的数据作为一个标签点RDD分配给七个不同的整数标签

 [LabeledPoint(5.0,[2590.0,56.0,2.0,212.0,-6.0,390.0,220.0,235.0,151.0,6225.0]),
 LabeledPoint(2.0, [2804.0,139.0,9.0,268.0,65.0,3180.0,234.0,238.0,135.0,6121.0])....

我需要将这个问题转化为二进制,以通过MLLib中的BoostedGradientTrees,因此我希望标签为2.0的所有特性都是1.0,否则为0.0。我刚接触RDD,我一辈子都不知道如何在不遇到OutOfMemory错误的情况下更改标签。我尝试了几种不同的方法,我认为这样做最简单:

def to_binary(Data):
    Datazero = Data.filter(lambda x: (x != 2.0, y))
    Data = Data.subtract(Datazero)
    Datazero = Datazero.map(lambda x:(0.0,y))
    Data = Data.map(lambda x: (1.0, y))
    Data = Datazero.union(Data)
    
    return Data

但很明显,这会返回一个错误,因为我不知道如何处理LabeledPoint对象


Tags: 数据lambdamapdata错误二进制整数标签
1条回答
网友
1楼 · 发布于 2024-10-05 10:05:11

不需要定义辅助功能,也不需要分别过滤这两种情况。功能性lambda环境支持内部if-else环境:

Data = Data.map(lambda point : LabeledPoint(1, point.features) if point.label == 2.0 \
                         else LabeledPoint(0, point.features))

相关问题 更多 >

    热门问题