如何基于在Spark数据框架中的某个列的寡妇运行不同的回归模型?
假设我在一个Spark DF中有2个产品具有与这些产品相关的功能和标签。产品的ID存在于单独的柱子中。 我想对每个产品进行回归分析。
到目前为止,对于相对简单的分析,我一直在使用
w = Window().partitionBy("id")
F.sum(column).over(w)
EG日期
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”运行一个单独的模型。
您可以使用groupBy
,collect_list
或collect_set
并对每个集合进行模型训练,但它不能在Spark MLlib中开箱即用,并且需要自定义开发,即编写用户定义的聚合函数(UDAF)。
我建议使用filter
基于条件拆分DataFrame,并分别使用两个或更多DataFrame。