如何将稀疏数据的PythonRDD转换为密集PythonRDD

2024-09-28 03:20:19 发布

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

我想用StandardScaler来缩放数据。我把数据装进了Python。数据似乎很稀少。要应用StandardScaler,我们应该首先将其转换为密集类型。你知道吗

trainData = MLUtils.loadLibSVMFile(sc, trainDataPath)
valData = MLUtils.loadLibSVMFile(sc, valDataPath) 
trainLabel = trainData.map(lambda x: x.label)
trainFeatures = trainData.map(lambda x: x.features)
valLabel = valData.map(lambda x: x.label)
valFeatures = valData.map(lambda x: x.features)
scaler = StandardScaler(withMean=True, withStd=True).fit(trainFeatures)

# apply the scaler into the data. Here, trainFeatures is a sparse PythonRDD, we first convert it into dense tpye
trainFeatures_scaled = scaler.transform(trainFeatures)
valFeatures_scaled = scaler.transform(valFeatures)    

# merge `trainLabel` and `traiFeatures_scaled` into a new PythonRDD
trainData1 = ...
valData1 = ...

# using the scaled data, i.e., trainData1 and valData1 to train a model
...

上面的代码有错误。我有两个问题:

  1. 如何将稀疏的PythonRDDtrainFeatures转换成可以作为StandardScaler输入的密集tpye?你知道吗
  2. 如何将trainLabeltrainFeatures_scaled合并成一个新的可用于训练分类器的标点(如随机林)?你知道吗

我仍然能找到关于这件事的任何文件或参考资料。你知道吗


Tags: the数据lambdamapintoscaler密集mlutils
1条回答
网友
1楼 · 发布于 2024-09-28 03:20:19

要使用toArray转换为密集贴图,请执行以下操作:

dense = valFeatures.map(lambda v: DenseVector(v.toArray()))

要合并zip:

valLabel.zip(dense).map(lambda (l, f): LabeledPoint(l, f))

相关问题 更多 >

    热门问题