如何使用Java在Spark中对数据集进行线性回归编码?

时间:2016-08-11 09:21:18

标签: java apache-spark linear-regression rdd apache-spark-mllib

我有一个Dataset<Row>有3个列,我想修改为进行线性回归。

我的专栏是[id , x, y],我想要为每个ID进行线性回归;

例如:

[1 , 1005, 0.29]   
[1 , 1006, 0.46]  
[1 , 1007, 0.29]
[2 , 1000, 0.68]
[2 , 1010, 0.50]

如何从这些数据创建LabeledPoint?

我是否需要这样的数据?:

(0.29, (1, [1005,1007]))
(0.46, (1, [1006]))
(0.68, (2, [1000]))
(0.50, (2, [1010]))

我知道如何修改,直到这一点:

JavaRDD<Row> datardd = dataset.toJavaRDD();
JavaPairRDD<Integer, Tuple2<Double,Double>> datapairrdd =
           datardd.mapToPair(new PairFunction<Row, Integer, Tuple2<Double, Double>>(){
            @Override
            public Tuple2<Integer, Tuple2<Double, Double>> call(Row row) throws Exception {
                    return new Tuple2<>(new Integer(row.getString(0)), new Tuple2<>(new Double(row.getString(1)), new Double(row.getString(2))));
            }
        });
JavaPairRDD<Integer, Iterable<Tuple2<Double, Double>>> data = pairrdd.groupByKey();

现在我的数据是:

    (1, [(1005,0.29), (1006,0.46), (1007, 0.29)])
    (2, [(1000,0.68), (1010,0.50)])

但是从这里开始我被困......

0 个答案:

没有答案