如何按列值训练单独的模型?

时间:2017-12-21 18:03:06

标签: apache-spark pyspark apache-spark-mllib

如何基于widowing中的某一列来运行不同的回归模型 火花数据框架?

假设我在一个Spark DF中有2个产品具有与这些产品相关的功能和标签。 产品的ID存在于单独的列中 我想对每个产品进行回归分析。

到目前为止,对于相对简单的分析,我一直在使用

w = Window().partitionBy("id")
F.sum(column).over(w)

E.g。数据

sdf = spark.createDataFrame(
        [("a", 1.0, 2.0, 3.0), ("a", 4.0, 1.0, 5.0), ("b", 2.0, 1.0, 0.0), ("b", 4.0, 0.0, 1.0)],
        ["id", "y", "x1", "x2"])

我想为id“a”和“b”运行一个单独的模型。

1 个答案:

答案 0 :(得分:1)

您可以groupBycollect_listcollect_set并对每个集合进行模型培训,但它不能在Spark MLlib中开箱即用,并且需要自定义开发,即写作用户定义的聚合函数(UDAF)。

我建议使用filter根据条件拆分DataFrame,并分别使用两个或更多DataFrame。