如何解决根据 ID 将决策树规则合并到 DF 并生成聚合摘要
我使用 PySpark 的 DecisionTreeRegressor 来拟合决策树。我根据下面的代码块输出树的规则:
x = ['Variable_Final']
df = data_vector(main_df,x)
dt = DecisionTreeRegressor(labelCol=y,featuresCol='features',seed=1234,maxDepth = 3)
modeldt = dt.fit(df)
print(modeldt.toDebugString()
基于上述代码构建的树的规则输出示例如下:
"DecisionTreeRegressionModel (uid=rfc_6c4ceb92ba78) of depth 3 with 15 nodes
If (feature 0 <= 0.33333333)
if (feature 0 <= 0.25)
if (feature 0 <= 0.22)
Predict: 0.22
Else (feature0 > 0.22)
Predict: 0.3
else (feature 0 > 0.25)
if (feature 0 <= 0.3)
Predict: 0.345
...
现在我的问题是:
- 如何通过“树或节点号(即按 node_number 分组)”运行聚合并获得以下输出:
- 是否有可能将合并树节点信息添加到我拥有的主数据帧中,以便我可以拥有主数据帧中的所有变量 + 节点/树信息(node0/tree0、node1/tree1、...)我可以进一步对其进行一些汇总。
如果我使用的是 SAS,我会执行以下操作以获得上述结果:
proc hpsplit data = main_data seed=1234 maxdepth = 3;
model y = x (x here is Variable_Final);
output out = output_tree;
ID VariableID Qtr; (Additional Variable which I want to keep in the output_tree dataset)
run;
proc sql;
create table alpha as
select _leaf_ (this is the leaf/node number),count(variableid) as tot,mean(y)
from output_tree
group by 1;
quit;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。