【发布时间】:2019-12-14 03:16:16
【问题描述】:
我正在根据具有 3 列的数据集制作决策树:
示例:
ID Area Year
1 50 1950
2 150 1981
3 210 1987
4 205 1973
5 176 1992
....
当我使用DecisionTreeRegressor制作决策树时,这棵树基于所有3列,我想要的是ID不包含在树本身但仍然可以追溯(所以我不想删除此列)
此外,我还希望“年份”列与“区域”列相比具有优先级。因此,数据总数首先根据年份拆分,然后按“年份”拆分。 (现在决策树决定在之前制作“区域”(X1),甚至不使用“年份”...参见附图:Image tree)
我该怎么做?
我尝试将第一列转换为字符串,但树仍在使用列“ID”。
到目前为止我的代码:
clf = tree.DecisionTreeRegressor(min_samples_split=20,max_leaf_nodes=20).fit(X_train, y_train)
tree.plot_tree(clf)
import os
os.environ["PATH"] += os.pathsep + r'C:\anaconda3\Library\bin\graphviz'
dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
from graphviz import render
graph.render('png', "test")
【问题讨论】:
-
你能展示一些你迄今为止尝试过的代码吗?
-
向我们展示您的尝试。 SO 不是免费的代码服务网站。
-
predict和predict_proba等分类器上的方法保持行的顺序 - 即,即使您从X_train数据集中删除 ID 列(同时在某些基础数据集中维护它) -您可以稍后简单地连接预测值 -
决策树的全部意义在于让它们根据自己的标准决定最优分割;手动给他们“优先级”是没有意义的。
-
谢谢@Mortz!
标签: python scikit-learn decision-tree