我可以从决策树中的受过训练的树中提取基础决策规则(或"决策路径")作为文本列表吗?
就像是:
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
关于如何将分类数据编码为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) 我正在研究不同的数据挖掘技术,并遇到了一些我无法弄清楚的事情.如果任何人有任何想法会很棒.
在哪种情况下,使用决策树和其他情况更好的是朴素贝叶斯分类器?
为什么在某些情况下使用其中一个?而另一个在不同的情况下?(通过查看其功能,而不是算法)
有人对此有一些解释或参考吗?
我一直在探索scikit-learn,使用熵和基尼分裂标准制定决策树,并探索差异.
我的问题是,我如何"打开引擎盖"并确切地找出树在每个级别上分裂的属性及其相关的信息值,以便我可以看到这两个标准在哪里做出不同的选择?
到目前为止,我已经探索了文档中概述的9种方法.它们似乎不允许访问此信息.但是这些信息肯定是可以访问的吗?我正在设想一个包含节点和增益条目的列表或字典.
如果我错过了一些完全明显的东西,感谢您的帮助和道歉.
我正在研究数据挖掘,更确切地说是决策树.
我想知道是否有多种算法来构建决策树(或只有一个?),哪个更好,基于诸如
performance complexity-theory classification machine-learning decision-tree
有没有办法在Jupyter笔记本中绘制决策树,以便我可以交互式地探索它的节点?我在考虑这样的事情
.这是KNIME的一个例子.
我找到了https://planspace.org/20151129-see_sklearn_trees_with_d3/和https://bl.ocks.org/ajschumacher/65eda1df2b0dd2cf616f,我知道你可以在Jupyter中运行d3,但是我没有找到任何包,那样做.
我从这个文档中读到:
"可以通过从每个类中抽取相同数量的样本来完成类平衡,或者最好通过将每个类的样本权重(sample_weight)的总和归一化为相同的值."
但是,我仍然不清楚它是如何工作的.如果我设置sample_weight一个只有两个可能值的数组,1's和2's,这是否意味着带有2's的样本1在进行装袋时的采样频率是采样的两倍?我想不出一个实际的例子.
有谁知道如何用R计算决策树的错误率?我正在使用该rpart()功能.
我正在尝试使用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中可视化决策树吗?
我一直在阅读决策树和交叉验证,我理解这两个概念.但是,我无法理解交叉验证,因为它与决策树有关.基本上,交叉验证允许您在数据集相对较小时在培训和测试之间切换,以最大化您的错误估计.一个非常简单的算法是这样的:
我无法弄清楚的问题是最终你会有k个决策树,它们可能会略有不同,因为它们可能不会以相同的方式分割,等等.你选择哪一棵树?我有一个想法是选择一个误差最小的一个(尽管这并不是最佳的,只是它在给出的折叠上表现最好 - 也许使用分层会有所帮助,但我读过的所有内容都说它只能帮助一点点).
据我所知,交叉验证的关键是计算节点统计数据,以后可以用于修剪.因此,树中的每个节点都会根据给定的测试集为其计算统计数据.重要的是节点统计中的这些,但是如果你的平均错误.当每棵树在他们选择分割的内容上有所不同时,如何在k树中的每个节点内合并这些统计数据等.
计算每次迭代的总误差有什么意义?这不是修剪过程中可以使用的东西.
任何帮助这个小皱纹将非常感激.
decision-tree ×10
scikit-learn ×6
python ×5
algorithm ×1
data-mining ×1
jupyter ×1
performance ×1
r ×1
rpart ×1