相关疑难解决方法(0)

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

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

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

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

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

python machine-learning decision-tree scikit-learn

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

在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万
查看次数

如何将sklearn决策树规则提取到熊猫布尔条件?

有这么多的帖子这样有关如何提取sklearn决策树的规则,但我找不到任何有关使用熊猫。

这个数据和模型为例,如下

# Create Decision Tree classifer object
clf = DecisionTreeClassifier(criterion="entropy", max_depth=3)

# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

预期:

关于此示例,有8条规则。

从左到右,请注意该数据帧是 df

r1 = (df['glucose']<=127.5) & (df['bmi']<=26.45) & (df['bmi']<=9.1)
……
r8 =  (df['glucose']>127.5) & (df['bmi']>28.15) & (df['glucose']>158.5)
Run Code Online (Sandbox Code Playgroud)

我不是提取sklearn决策树规则的大师。获取大熊猫布尔条件将有助于我为每个规则计算样本和其他指标。因此,我想将每个规则提取到熊猫的布尔条件。

python machine-learning decision-tree pandas scikit-learn

16
推荐指数
1
解决办法
623
查看次数

GBM规则生成 - 编码建议

我使用R包GBM可能是我预测建模的首选.有关于这个算法,但在一个"坏"这么多伟大的事情是,我不能轻易使用型号代码进球我要编写能够在SAS或其他系统中使用的代码外河的新数据(我将开始与SAS(无法访问IML)).

假设我有以下数据集(来自GBM手册)和型号代码:

library(gbm)
set.seed(1234)
N <- 1000
X1 <- runif(N)
X2 <- 2*runif(N)
X3 <- ordered(sample(letters[1:4],N,replace=TRUE),levels=letters[4:1])
X4 <- factor(sample(letters[1:6],N,replace=TRUE))
X5 <- factor(sample(letters[1:3],N,replace=TRUE))
X6 <- 3*runif(N)
mu <- c(-1,0,1,2)[as.numeric(X3)]
SNR <- 10 # signal-to-noise ratio
Y <- X1**1.5 + 2 * (X2**.5) + mu
sigma <- sqrt(var(Y)/SNR)
Y <- Y + rnorm(N,0,sigma)
# introduce some missing values
#X1[sample(1:N,size=500)] <- NA
X4[sample(1:N,size=300)] <- NA
X3[sample(1:N,size=30)] <- NA
data <- data.frame(Y=Y,X1=X1,X2=X2,X3=X3,X4=X4,X5=X5,X6=X6)
# fit initial model

gbm1 <- gbm(Y~X1+X2+X3+X4+X5+X6, # formula
data=data, # dataset …
Run Code Online (Sandbox Code Playgroud)

r sas gbm

12
推荐指数
1
解决办法
4139
查看次数

在决策树中显示更多属性

我目前正在使用以下代码查看决策树.有没有办法我们可以将一些计算字段输出为输出?

例如,是有可能在树的叶子在每个节点显示输入属性的总和,特征1的从"X"的数据数组,即总和.

from sklearn import datasets

iris = datasets.load_iris()
X = iris.data[:]  
y = iris.target
#%%
from sklearn.tree import DecisionTreeClassifier
alg=DecisionTreeClassifier( max_depth=5,min_samples_leaf=2, max_leaf_nodes = 10)
alg.fit(X,y)

#%%
## View tree
import graphviz
from sklearn import tree
dot_data = tree.export_graphviz(alg,out_file=None, node_ids = True, proportion = True, class_names = True, filled = True, rounded = True)
graph = graphviz.Source(dot_data)
graph
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python decision-tree pygraphviz scikit-learn

12
推荐指数
1
解决办法
1200
查看次数

如何探索使用scikit学习构建的决策树

我正在使用构建决策树

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, Y_train)
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我如何探索决策树?

例如,如何找到X_train中的哪些条目出现在特定的叶子中?

python machine-learning decision-tree scikit-learn

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

如何从python3中的xgboost模型中提取决策规则(特征拆分)?

我需要从我在python中安装的xgboost模型中提取决策规则.我使用0.6a2版本的xgboost库,我的python版本是3.5.2.

我的最终目标是使用这些拆分来容纳变量(根据拆分).

我没有遇到这个版本的任何属性,可以给我分裂.

plot_tree给了我类似的东西.然而,它是树的可视化.

我需要像/sf/answers/2784051931/这样的xgboost模型

python xgboost

9
推荐指数
3
解决办法
3094
查看次数

有没有办法在决策树的每个叶子下面获取样本?

我使用数据集训练了决策树.现在我想看看哪些样本落在树的哪个叶子下面.

从这里我想要红色圆圈样本.

在此输入图像描述

我正在使用Python的Sklearn的决策树实现.

python machine-learning decision-tree scikit-learn

8
推荐指数
1
解决办法
2357
查看次数

将scikit-learn DecisionTreeClassifier.tree_.value映射到预测类

我在3类数据集上使用scikit-learn DecissionTreeClassifier.在我拟合分类器后,我访问tree_属性上的所有叶节点,以获得最终在每个类的给定节点中的实例数量.

clf = tree.DecisionTreeClassifier(max_depth=5)
clf.fit(X, y)
# lets assume there is a leaf node with id 5
print clf.tree_.value[5]
Run Code Online (Sandbox Code Playgroud)

这将打印出来:

>>> array([[  0.,   1.,  68.]])
Run Code Online (Sandbox Code Playgroud)

但是...我怎么知道该数组中哪个位置属于哪个类?分类器具有classes_属性,该属性也是列表

>>> clf.classes_
array(['CLASS_1', 'CLASS_2', 'CLASS_3'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

也许value数组上的索引1匹配classes数组的索引1上的类,依此类推?

python decision-tree scikit-learn

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

决策树中特定类别的Sklearn决策规则

我正在创建决策树,我的数据属于以下类型

X1 |X2 |X3|.....X50|Y
_____________________________________
1  |5  |7 |.....0  |1
1.5|34 |81|.....0  |1
4  |21 |21|.... 1  |0
65 |34 |23|.....1  |1
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行以下代码:

X_train = data.iloc[:,0:51]
Y_train = data.iloc[:,51]
clf = DecisionTreeClassifier(criterion = "entropy", random_state = 100,
                           max_depth=8, min_samples_leaf=15)
clf.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

我想要的是可以预测特定类别的决策规则(在这种情况下为“ 0”)。例如,

when X1 > 4 && X5> 78 && X50 =100 Then Y = 0 ( Probability =84%)
When X4 = 56 && X39 < 100 Then Y = 0 ( Probability = 93%)
...
Run Code Online (Sandbox Code Playgroud)

因此,基本上我希望所有叶子节点,附加的决策规则以及Y = 0的概率到来,从而预测Class …

python machine-learning decision-tree python-3.x scikit-learn

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