矩阵中的火花循环以运行线性回归

时间:2021-05-02 08:31:48

标签: scala apache-spark matrix linear-regression

我有一个火花数据框 dt 如下。 BAB 是 ID,我想对 AAB 和 AAD 列对 BAB 的每个值运行线性回归。

data frame

这就是我运行它的方式。通过过滤每个 BAB 值的整个数据帧,它变得非常慢。有没有办法像 3 维矩阵一样循环数据并为每个 BAB 运行回归?所以我只需要通过 BAB 一次。它不必是 spark mllib。任何其他具有 Scala 编码的机器学习工具都可以。

val arrColu = Array("AAB", "AAD");
val assFeat = new VectorAssembler().setInputCols(arrColu).setOutputCol("features");

val arrBAB=dt.select("BAB").collect.map(_ (0)).map(x => x.toString);

for (a<-0 to arrBAB.length-1){

val vecDF: DataFrame = assFeat.transform(dt.filter("BAB='"+arrBAB(a)+"'").select("AAB","AAD"));
val lr1=new LinearRegression();
val lr2=lr1.setFeaturesCol("features").setLabelCol("AAD").setFitIntercept(true).
  setMaxIter(10).setRegParam(.3).setElasticNetParam(.8);
val fitD1=lr2.fit(vecDF);
...
}

0 个答案:

没有答案