标签: decision-tree

如何从scikit-learn决策树中提取决策规则?

我可以从决策树中的受过训练的树中提取基础决策规则(或"决策路径")作为文本列表吗?

就像是:

if A>0.4 then if B<0.2 then if C>0.8 then class='X'

谢谢你的帮助.

python machine-learning decision-tree random-forest scikit-learn

140
推荐指数
9
解决办法
8万
查看次数

将分类数据传递给Sklearn决策树

关于如何将分类数据编码为Sklearn Decission树有几篇帖子,但是从Sklearn文档中我们得到了这些

决策树的一些优点是:

(......)

能够处理数字和分类数据.其他技术通常专门用于分析仅具有一种变量类型的数据集.有关更多信息,请参阅算法

但是运行以下脚本

import pandas as pd
from sklearn.tree import DecisionTreeClassifier

data = pd.DataFrame()
data['A'] = ['a','a','b','a']
data['B'] = ['b','b','a','b']
data['C'] = [0, 0, 1, 0]
data['Class'] = ['n','n','y','n']

tree = DecisionTreeClassifier()
tree.fit(data[['A','B','C']], data['Class'])
Run Code Online (Sandbox Code Playgroud)

输出以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/sklearn/tree/tree.py", line 154, in fit
    X = check_array(X, dtype=DTYPE, accept_sparse="csc")
  File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 377, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: could not convert string to float: b …
Run Code Online (Sandbox Code Playgroud)

python decision-tree scikit-learn

58
推荐指数
5
解决办法
5万
查看次数

决策树与朴素贝叶斯分类器

我正在研究不同的数据挖掘技术,并遇到了一些我无法弄清楚的事情.如果任何人有任何想法会很棒.

在哪种情况下,使用决策树和其他情况更好的是朴素贝叶斯分类器?

为什么在某些情况下使用其中一个?而另一个在不同的情况下?(通过查看其功能,而不是算法)

有人对此有一些解释或参考吗?

data-mining bayesian-networks decision-tree

47
推荐指数
1
解决办法
6万
查看次数

使用scikit-learn时,如何找到树分裂的属性?

我一直在探索scikit-learn,使用熵和基尼分裂标准制定决策树,并探索差异.

我的问题是,我如何"打开引擎盖"并确切地找出树在每个级别上分裂的属性及其相关的信息值,以便我可以看到这两个标准在哪里做出不同的选择?

到目前为止,我已经探索了文档中概述的9种方法.它们似乎不允许访问此信息.但是这些信息肯定是可以访问的吗?我正在设想一个包含节点和增益条目的列表或字典.

如果我错过了一些完全明显的东西,感谢您的帮助和道歉.

python machine-learning decision-tree scikit-learn

42
推荐指数
3
解决办法
2万
查看次数

不同的决策树算法,比较复杂性或性能

我正在研究数据挖掘,更确切地说是决策树.

我想知道是否有多种算法来构建决策树(或只有一个?),哪个更好,基于诸如

  • 性能
  • 复杂
  • 决策失误
  • 和更多.

performance complexity-theory classification machine-learning decision-tree

37
推荐指数
1
解决办法
3万
查看次数

在Jupyter笔记本中绘制交互式决策树

有没有办法在Jupyter笔记本中绘制决策树,以便我可以交互式地探索它的节点?我在考虑这样的事情DT.这是KNIME的一个例子.

我找到了https://planspace.org/20151129-see_sklearn_trees_with_d3/https://bl.ocks.org/ajschumacher/65eda1df2b0dd2cf616f,我知道你可以在Jupyter中运行d3,但是我没有找到任何包,那样做.

python machine-learning decision-tree scikit-learn jupyter

37
推荐指数
3
解决办法
2359
查看次数

`sample_weight`对`DecisionTreeClassifier`在sklearn中的工作方式有何作用?

我从这个文档中读到:

"可以通过从每个类中抽取相同数量的样本来完成类平衡,或者最好通过将每个类的样本权重(sample_weight)的总和归一化为相同的值."

但是,我仍然不清楚它是如何工作的.如果我设置sample_weight一个只有两个可能值的数组,1's和2's,这是否意味着带有2's的样本1在进行装袋时的采样频率是采样的两倍?我想不出一个实际的例子.

decision-tree random-forest scikit-learn

32
推荐指数
2
解决办法
2万
查看次数

如何从决策树计算错误率?

有谁知道如何用R计算决策树的错误率?我正在使用该rpart()功能.

r classification decision-tree rpart

31
推荐指数
1
解决办法
5万
查看次数

在scikit-learn中可视化决策树

我正在尝试使用Python中的scikit-learn设计一个简单的决策树(我在Windows操作系统上使用Anaconda的Ipython Notebook和Python 2.7.3),并将其可视化如下:

from pandas import read_csv, DataFrame
from sklearn import tree
from os import system

data = read_csv('D:/training.csv')
Y = data.Y
X = data.ix[:,"X0":"X33"]

dtree = tree.DecisionTreeClassifier(criterion = "entropy")
dtree = dtree.fit(X, Y)

dotfile = open("D:/dtree2.dot", 'w')
dotfile = tree.export_graphviz(dtree, out_file = dotfile, feature_names = X.columns)
dotfile.close()
system("dot -Tpng D:.dot -o D:/dtree2.png")
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

AttributeError: 'NoneType' object has no attribute 'close'
Run Code Online (Sandbox Code Playgroud)

我使用以下博客文章作为参考:Blogpost链接

以下stackoverflow问题对我来说似乎也不起作用:问题

有人可以帮助我如何在scikit-learn中可视化决策树吗?

python visualization decision-tree scikit-learn

30
推荐指数
7
解决办法
8万
查看次数

帮助了解交叉验证和决策树

我一直在阅读决策树和交叉验证,我理解这两个概念.但是,我无法理解交叉验证,因为它与决策树有关.基本上,交叉验证允许您在数据集相对较小时在培训和测试之间切换,以最大化您的错误估计.一个非常简单的算法是这样的:

  1. 决定你想要的折叠数量(k)
  2. 将数据集细分为k个折叠
  3. 使用k-1折叠训练集来构建树.
  4. 使用测试集来估计树中错误的统计信息.
  5. 保存结果以供日后使用
  6. 重复步骤3-6,持续k次,为测试装置留出不同的折叠.
  7. 平均迭代中的错误以预测整体错误

我无法弄清楚的问题是最终你会有k个决策树,它们可能会略有不同,因为它们可能不会以相同的方式分割,等等.你选择哪一棵树?我有一个想法是选择一个误差最小的一个(尽管这并不是最佳的,只是它在给出的折叠上表现最好 - 也许使用分层会有所帮助,但我读过的所有内容都说它只能帮助一点点).

据我所知,交叉验证的关键是计算节点统计数据,以后可以用于修剪.因此,树中的每个节点都会根据给定的测试集为其计算统计数据.重要的是节点统计中的这些,但是如果你的平均错误.当每棵树在他们选择分割的内容上有所不同时,如何在k树中的每个节点内合并这些统计数据等.

计算每次迭代的总误差有什么意义?这不是修剪过程中可以使用的东西.

任何帮助这个小皱纹将非常感激.

algorithm machine-learning decision-tree

29
推荐指数
2
解决办法
2万
查看次数