我正在尝试使用scikit实现决策树,然后使用Graphviz可视化树,我理解这是可视化DT的标准选择。我正在使用PyCharm,anaconda,Python 2.7和OS X El Capitan。据我所知,我已经安装了pydot和Graphviz PIP安装,并且还直接在Pycharm安装了它们,但无论我做什么,我都会不断得到一个名为graphviz的“No module”。
from sklearn.datasets import load_iris
from sklearn import tree
#import graphviz as gv
# uncommenting the row above produces an error
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
with open('graph.dot', 'w') as file:
tree.export_graphviz(clf, out_file = file)
file.close()
目前运行此代码会生成graph.dot,但我无法查看该文件。 1.如何使graphviz存储库工作? 2.如何将图形写入PDF / PNG?我看到了一些例子,但没有工作 3.我找到了这个命令:dot -Tps filename.dot -o outfile.ps 我在哪里用它?如何验证OS X上是否存在点工具?
提前致谢!
答案 0 :(得分:1)
我很确定我使用自制程序安装了graphviz,但看起来你也可以从http://www.graphviz.org/Download_macos.php下载二进制文件。如果你不能让pydot工作,你需要从终端运行import subprocess
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])
命令,或者使用子进程在脚本中运行:
private void Search_searchButtonActionPerformed(java.awt.event.ActionEvent evt) {
try{
String myUrl="jdbc:derby://localhost:1527/EMPLOYEEINFO";
String username="ADMIN1";
String password="ADMIN1";
Connection myConnection = DriverManager.getConnection(myUrl, username, password);
Statement myStatement = myConnection.createStatement();
String myQuery = "SELECT * FROM EMPLOYEE WHERE EMPLOYEE_ID LIKE '%' '"+Search_TxtField.getText()+"' '%' ";
ResultSet myRs = myStatement.executeQuery(myQuery);
DefaultListModel myDLM = new DefaultListModel();
while(myRs.next()){
myDLM.addElement(myRs.getString(1));
}//end of while loop
Search_List.setModel(myDLM);
}//end of try
catch(SQLException ex){
JOptionPane.showMessageDialog(null, ex.toString());
}//end of catch
}
答案 1 :(得分:1)
您还可以使用以下代码导出为pdf。
首先安装pydot2
pip install pydot2
然后您可以使用以下代码:
from sklearn.datasets import load_iris
from sklearn import tree
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
from sklearn.externals.six import StringIO
import pydot
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("graph.pdf")
答案 2 :(得分:0)
如果您的系统上没有/想要graphviz,您也可以将.dot文件作为文本打开并将内容复制到webgraphviz,然后为您创建并显示树。
结果不是您可以保存的图片或文件,并且您必须为您创建的每个树手动执行此操作。对于更复杂和/或批量树构建,您需要系统上的实际graphviz,因此您可以从终端或直接从Python调用dot
程序,如maxymoo所述。