破解/克隆sklearn以支持修剪决策树吗?

问题描述 投票:1回答:2

我想创建一个决策树,然后在python中修剪它。但是,sklearn本身不支持修剪。通过互联网搜索,我发现:https://github.com/sgenoud/scikit-learn/blob/4a75a4aaebd45e864e28cfca897121d1199e41d9/sklearn/tree/tree.py

但是我不知道如何使用该文件。我尝试过:

from sklearn.datasets import load_iris
import tree

clf = tree.DecisionTreeClassifier()
iris = load_iris()

clf = clf.fit(iris.data, iris.target)

但是我收到错误ValueError:尝试在非包中进行相对导入。那不是我的进口方式吗?我是否需要以其他方式保存文件?谢谢。

python machine-learning scikit-learn decision-tree pruning
2个回答
0
投票

在Python中,模块(=其他语言的软件包)通常定义相互依赖的例程。在这种情况下,您不能仅下载一个.py文件并将其放入工作区(即源所在的目录)。而是将整个软件包下载到该文件夹​​中,然后相对导入,即像这样:

# a general import, should only be used if you are absolutely certain that there will be no namespace conflicts
from sklearn.tree.tree import * 
# a more "safe" way is to import the classes/functions you need explicitely
from sklearn.tree.tree import DecisionTreeClassifier

0
投票

[如果您真的想使用2012年以来的sgenoud's 7-year-old fork中的scikit-learn,请在存储库的基本目录中使用git clone,不要只是尝试复制/克隆单个文件(当然,您会丢失自2012年以来的任何改进/修复;返回v 0.12

但是这个想法听起来是错误的:您可以通过更改参数来尽早停止DecisionTreeClassifier parameters max_depth, min_samples, min_samples_leaf, min_impurity_decrease, min_impurity_split来获得较浅/修剪的树。查看文档并使用参数,它们可以满足您的要求。我从事ML已有10年以上的历史,从未见过需要破解DT源的事情。有很多充分的理由不这样做,也没有充分的理由。

((如果您尝试使用DecisionTreeClassifier参数,但仍然无法获得所需的信息,请使用虹膜等开源数据集在此处发布可复制的代码示例,]

© www.soinside.com 2019 - 2024. All rights reserved.