如何将 normalVectorRDD 转换为标记点数据?

How to transform a normalVectorRDD into a Labeled Point data?

我正在使用 pyspark,我想从 Mllib 包中执行线性回归。所以我想生成我自己的(大)数据来比较我的集群性能与单节点 python 解释器。

from pyspark.mllib.random import RandomRDDs
u=RandomRDDs.normalVectorRDD(sc, 1000000000, 500)
u.take(5)

我知道了:

 array([ -1.13787491e+00,   3.68202613e-01,   9.59762136e-01,
      6.33172122e-01,  -1.91278957e+00,  -1.17794680e+00,
     -7.77179759e-01,  -1.48368585e+00,   2.32369644e+00,...]

我想将其解析为 LabeledPoint 数据,以便 LinearregressionwithSGD 算法可以识别它。每行如下:

LabeledPoint(0.469112,[-0.282863,-1.509059,-1.135632,1.212112,-0.173215,0.119209,-1.044236,-0.861849,-2.104569,-0.494929,1.071804,0.721555,-0.706771,-1.039575,0.27186,-0.424972,0.56702,0.276232,-1.087401,-0.67369,0.113648,-1.478427,0.524988,0.404705])

第一个值作为目标或标签,其余值作为特征。

试试这个,

from pyspark.mllib.regression import LabeledPoint
u.map(lambda x:LabeledPoint(x[0],x[1:]))