在scikitlearn中绘制数据集上的决策树

2024-04-25 17:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试将我的数据集随机分成测试集和训练集,然后在5个深度的决策树上进行训练并绘制决策树。

另外,我不允许用熊猫做这种事。

我想做的是:

import numpy
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
from sklearn.model_selection import train_test_split
filename = 'diabetes.csv'
raw_data = open(filename, 'rt')
data = numpy.loadtxt(raw_data, delimiter=",", skiprows=1)
print(data.shape)

X = data[:,0:8] #identify columns as data sets
Y = data[:, 9] #identfy last column as target
print(X)
print(Y)
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y, test_size=0.25)
treeClassifier = DecisionTreeClassifier(max_depth=5)
treeClassifier.fit(X_train, Y_train)
with open("treeClassifier.txt", "w") as f:
 f = tree.export_graphviz(treeClassifier, out_file=f)

我的输出是:

^{pr2}$

我想要的是一个结果树的例子:

here is an example of a tree

我遇到的问题是,在我的树中,我没有得到'class=0\class=1'属性。我想问题可能出在Y = data[:, 9]部分,第9列对它是0还是1进行了分类——这是class属性,但我看不到任何方法来更改它以使它出现在树中;也许是tree.export_graphviz函数中的某个东西?我缺少参数吗?任何帮助都将不胜感激。


Tags: fromtestimportnumpytreedataastrain
1条回答
网友
1楼 · 发布于 2024-04-25 17:43:35

如果你更换

tree.export_graphviz(treeClassifier, out_file=f)

^{pr2}$

你应该是好人。在

例如

import graphviz
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
from sklearn.model_selection import train_test_split

np.random.seed(42)
X = np.random.random((100, 8))
Y = np.random.randint(2, size=100)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25)
tree_classifier = DecisionTreeClassifier(max_depth=5)
tree_classifier.fit(X_train, Y_train)

dot_data = tree.export_graphviz(tree_classifier, class_names=['0', '1'], out_file=None)
graph = graphviz.Source(dot_data)
graph

enter image description here

为了使它看起来更像您所引用的示例,可以使用

tree.export_graphviz(treeClassifier, class_names=['0', '1'],
                     filled=True, rounded=True, out_file=f)

enter image description here

相关问题 更多 >

    热门问题