如何基于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”运行一个单独的模型。
答案 0 :(得分:1)
您可以groupBy
,collect_list
或collect_set
并对每个集合进行模型培训,但它不能在Spark MLlib中开箱即用,并且需要自定义开发,即写作用户定义的聚合函数(UDAF)。
我建议使用filter
根据条件拆分DataFrame,并分别使用两个或更多DataFrame。