使用 python 创建决策树
Creating Decision Tree using python
我正在使用名为 "wine" 的数据集创建决策树:
我正在尝试执行以下代码:
dt = c.fit(X_train, y_train)
创建决策树的图像:
其中 "Malik Shahid Ali" 是图像的 location/path
def show_tree(tree, features, path):
f = io.StringIO()
export_graphviz(tree, out_file=f, feature_names=features)
pydotplus.graph_from_dot_data(f.getvalue()).write_png("Malik Shahid Ali")
img = misc.imread("Malik Shahid Ali")
plt.imshow(img)
调用图像:
show_tree(dt, features, 'dec_tree_01.png')
但是当我调用图像时出现以下错误:
GraphViz's executables not found
导入部分:
import numpy as np
import pandas as pd
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.model_selection import train_test_split
import graphviz
import pydotplus
import io
from scipy import misc
import matplotlib.pyplot as plt #sets up plotting under plt
import seaborn as sb
from pylab import rcParams
正在读取 csv 数据集
data=pd.read_csv('C:/Users/malik/Desktop/wine.csv',low_memory=False)
data.head()
train, test = train_test_split(data,test_size=0.15)
print("Training size: {} Test size: {}".format(len(train),len(test)))
c=DecisionTreeClassifier(min_samples_split=2)
features = ["id","Alcohol","Malic acid","Ash","Alcalinity of ash","Magnesium","Total phenols","Flavanoids","Field9Nonflavanoid phenols","Proanthocyanins","Color intensity","Hue","OD280/OD315 of diluted wines","Proline"]
X_train = train[features]
y_train = train["id"]
X_test = test[features]
y_test = test["id"]
y_test
dt = c.fit(X_train, y_train)
可执行文件的路径:
import os
os.environ["PATH"] += os.pathsep + 'E:\Graphviz2.38\bin'
图像函数:
def show_tree(tree, features, path):
f = io.StringIO()
export_graphviz(tree, out_file=f, feature_names=features)
pydotplus.graph_from_dot_data(f.getvalue()).write_png(path)
img = misc.imread(path)
plt.imshow(img)
show_tree(dt, features, 'dec_tree_01.png')
现在在这个命令上 jupyter 给出了这样的错误:
E:\python\lib\site-packages\pydotplus\graphviz.py in create(self, prog, format)
1958 if self.progs is None:
1959 raise InvocationException(
-> 1960 'GraphViz\'s executables not found')
1961
1962 if prog not in self.progs:
InvocationException: GraphViz's executables not found
我是 re-purposing 我对相关问题的回答 here。
确保您已经安装了实际的可执行文件,而不仅仅是 python 包。我使用了 conda 的安装包 here(推荐超过 pip install graphviz
,因为 pip
安装没有
包括实际的 GraphViz executables).
更新
在一天结束时,向环境变量 PATH
添加了必要文件目录的格式不正确的字符串路径。请务必在目录的字符串路径中添加双反斜杠,例如:
import os
os.environ["PATH"] += os.pathsep + 'E:\Graphviz2.38\bin\'
我正在使用名为 "wine" 的数据集创建决策树: 我正在尝试执行以下代码:
dt = c.fit(X_train, y_train)
创建决策树的图像:
其中 "Malik Shahid Ali" 是图像的 location/path
def show_tree(tree, features, path):
f = io.StringIO()
export_graphviz(tree, out_file=f, feature_names=features)
pydotplus.graph_from_dot_data(f.getvalue()).write_png("Malik Shahid Ali")
img = misc.imread("Malik Shahid Ali")
plt.imshow(img)
调用图像:
show_tree(dt, features, 'dec_tree_01.png')
但是当我调用图像时出现以下错误:
GraphViz's executables not found
导入部分:
import numpy as np
import pandas as pd
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.model_selection import train_test_split
import graphviz
import pydotplus
import io
from scipy import misc
import matplotlib.pyplot as plt #sets up plotting under plt
import seaborn as sb
from pylab import rcParams
正在读取 csv 数据集
data=pd.read_csv('C:/Users/malik/Desktop/wine.csv',low_memory=False)
data.head()
train, test = train_test_split(data,test_size=0.15)
print("Training size: {} Test size: {}".format(len(train),len(test)))
c=DecisionTreeClassifier(min_samples_split=2)
features = ["id","Alcohol","Malic acid","Ash","Alcalinity of ash","Magnesium","Total phenols","Flavanoids","Field9Nonflavanoid phenols","Proanthocyanins","Color intensity","Hue","OD280/OD315 of diluted wines","Proline"]
X_train = train[features]
y_train = train["id"]
X_test = test[features]
y_test = test["id"]
y_test
dt = c.fit(X_train, y_train)
可执行文件的路径:
import os
os.environ["PATH"] += os.pathsep + 'E:\Graphviz2.38\bin'
图像函数:
def show_tree(tree, features, path):
f = io.StringIO()
export_graphviz(tree, out_file=f, feature_names=features)
pydotplus.graph_from_dot_data(f.getvalue()).write_png(path)
img = misc.imread(path)
plt.imshow(img)
show_tree(dt, features, 'dec_tree_01.png')
现在在这个命令上 jupyter 给出了这样的错误:
E:\python\lib\site-packages\pydotplus\graphviz.py in create(self, prog, format)
1958 if self.progs is None:
1959 raise InvocationException(
-> 1960 'GraphViz\'s executables not found')
1961
1962 if prog not in self.progs:
InvocationException: GraphViz's executables not found
我是 re-purposing 我对相关问题的回答 here。
确保您已经安装了实际的可执行文件,而不仅仅是 python 包。我使用了 conda 的安装包 here(推荐超过 pip install graphviz
,因为 pip
安装没有
包括实际的 GraphViz executables).
更新
在一天结束时,向环境变量 PATH
添加了必要文件目录的格式不正确的字符串路径。请务必在目录的字符串路径中添加双反斜杠,例如:
import os
os.environ["PATH"] += os.pathsep + 'E:\Graphviz2.38\bin\'