Я пытаюсь использовать библиотеку дерева scikit-learn для построения деревьев решений, генерируя файлы .dot с помощью функции tree.export_graphviz (). Я хочу преобразовать эти файлы .dot в файлы .pdf с помощью командной строки dot bash.
Мой python код:
from sklearn.datasets import load_iris
iris=load_iris()
from sklearn import tree
for i in range(3,10):
clf=tree.DecisionTreeClassifier(max_leaf_nodes=i)
clf=clf.fit(iris.data,iris.target)
file_name = 'tpsk1-' + str(i) + '.dot'
tree.export_graphviz(clf,out_file=file_name)
Здесь я пишу для l oop с i от 3 до 10 для экспорта 7-точечных файлов. Но когда я выполнил свой сценарий bash, чтобы преобразовать их в PDF-файлы, произошло нечто странное.
Мой bash сценарий:
for i in 3 4 5 6 7 8 9
do
dot_file="tpsk1-$i.dot"
pdf_file="tpsk1-$i.dot"
dot -Tpdf $dot_file -o $pdf_file
done
Результат:
Error: tpsk1-3.dot: syntax error in line 12 near '�S'
Warning: syntax ambiguity - badly delimited number '.0S' in line 12 of tpsk1-3.dot splits into two tokens
Warning: syntax ambiguity - badly delimited number '3r' in line 49 of tpsk1-3.dot splits into two tokens
Error: tpsk1-4.dot: syntax error in line 16 near 'X'
Warning: syntax ambiguity - badly delimited number '3r' in line 56 of tpsk1-4.dot splits into two tokens
Error: tpsk1-5.dot: syntax error in line 20 near 'ػ0'
Error: tpsk1-6.dot: syntax error in line 24 near '`'
Error: tpsk1-7.dot: syntax error in line 28 near '��'
Warning: syntax ambiguity - badly delimited number '1�' in line 31 of tpsk1-7.dot splits into two tokens
Warning: syntax ambiguity - badly delimited number '3r' in line 68 of tpsk1-7.dot splits into two tokens
Error: tpsk1-8.dot: syntax error in line 32 near '��'
Warning: syntax ambiguity - badly delimited number '0�' in line 32 of tpsk1-8.dot splits into two tokens
Warning: syntax ambiguity - badly delimited number '8z' in line 32 of tpsk1-8.dot splits into two tokens
Error: tpsk1-9.dot: syntax error in line 36 near '�Cb'
Я попытался удалить for l oop, чтобы записать один файл с одной точкой, и он работал просто отлично.
Мой новый скрипт python:
from sklearn.datasets import load_iris
iris=load_iris()
from sklearn import tree
clf=tree.DecisionTreeClassifier(max_leaf_nodes=3)
clf=clf.fit(iris.data,iris.target)
file_name = 'tpsk1-3.dot'
tree.export_graphviz(clf,out_file=file_name)
Моя точка bash команда:
dot -Tpdf tpsk1-3.dot -o tpsk1-3.pdf
Может кто-нибудь, пожалуйста, объясните мне, что случилось, я думаю, что я скучаю по некоторой мудрости позади для l oop в python здесь? Большое спасибо.