我有一个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)])
但是从这里开始我被困......