У меня есть функция, настроенная для моделирования некоторых данных с помощью алгоритма DeccisionTreeClassifier, где я могу настроить максимальную глубину дерева.Эта функция возвращает счет, матрицу путаницы, а также генерирует точечный файл с деревом, которое преобразуется в SVG.Кстати, я работаю в Windows.
Эта функция работает как талисман для максимальной глубины от 1 до 5, но при достижении max_depth = 6 + происходит сбой с помощью [Errno 9] Bad дескриптора файла.
def dtc (x_train, y_train, x_test, y_test, max_depth):
dtc_model = tree.DecisionTreeClassifier(max_depth=max_depth)
dtc_model.fit(x_train, y_train)
dtc_score=dtc_model.score(x_test, y_test)
dtc_scoret=dtc_model.score(x_train, y_train)
y_dtc = dtc_model.predict(x_test)
dtc_matrix= confusion_matrix(y_test,y_dtc)
tree.export_graphviz(dtc_model,out_file=(r'tree'+str(max_depth)+'.dot'),feature_names=list_variables)
graph = pydotplus.graph_from_dot_file(r'tree'+str(max_depth)+'.dot')
graph.write_svg(r'tree'+str(max_depth)+'.svg')
return dtc_score, dtc_scoret, dtc_matrix
results1=dtc (x_train, y_train, x_test, y_test, 1)
results2=dtc (x_train, y_train, x_test, y_test, 2)
results3=dtc (x_train, y_train, x_test, y_test, 3)
results4=dtc (x_train, y_train, x_test, y_test, 4)
results5=dtc (x_train, y_train, x_test, y_test, 5)
results6=dtc (x_train, y_train, x_test, y_test, 6)
results7=dtc (x_train, y_train, x_test, y_test, 7)
results8=dtc (x_train, y_train, x_test, y_test, 8)
results9=dtc (x_train, y_train, x_test, y_test, 9)
results10=dtc (x_train, y_train, x_test, y_test, 10)
До результата5 все работает хорошо, но после результата6 я получил эту ошибку:
Traceback (most recent call last):
File "<ipython-input-19-60d2876d3701>", line 1, in <module>
results6=dtc (x_train, y_train, x_test, y_test, 6)
File "<ipython-input-11-6cb4ba135170>", line 63, in dtc
graph = pydotplus.graph_from_dot_file(r'tree'+str(max_depth)+'.dot')
File "C:\XXX\librerias_anaconda\pydotplus\graphviz.py", line 314, in graph_from_dot_file
data = fd.read()
OSError: [Errno 9] Bad file descriptor
Я читал, что это ошибка, которая иногда случается в Windows, но не знаю, почему и как можноЯ решаю.
Извините, если что-то "плохо опубликовано", впервые задавая вопрос.Заранее спасибо всем, кто может оказать любую помощь