【发布时间】:2015-03-20 08:01:38
【问题描述】:
我想创建一个决策树,然后在 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: Attempted relative import in non-package. 这不是我导入的方式吗?我需要以其他方式保存文件吗?谢谢。
【问题讨论】:
-
你使用哪个 sklearn 分支?原来的?由 sgenoud 分叉的那个?您是否从 fork 将 tree-python 文件下载到您的工作区?如果没有这些信息,我无法告诉您您的导入出了什么问题。
-
由 sgenoud 分叉的那个。我只下载了tree.py。不知道你说的工作区是什么意思。我的 iris 文件(如上所述)和 tree.py 保存在同一个文件夹 C:\Users\Beck\Anaconda\machine_learning
-
如果你真的想在 2012 年使用 scikit-learn 的 sgenoud's 7-year-old fork 或
git clone在 repo 的基本目录,不要只是尝试复制/克隆单个文件。 -
...但是这个想法听起来是错误的:您可以通过更改参数来获得较浅/修剪的树以提前停止
DecisionTreeClassifierparameters max_depth, min_samples, min_samples_leaf, min_impurity_decrease, min_impurity_split。查看文档并使用参数,它们会满足您的要求。
标签: python machine-learning scikit-learn decision-tree pruning