Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no código do graphviz

Alguém pode me ajudar? Ao tentar rodar o código para gerar a visualização da arvore, apresenta o seguinte erro:

Código:

from sklearn.tree import export_graphviz
import graphviz
modelo.fit(x_azar, y_azar)
features = x_azar.columns
dot_data = export_graphviz(modelo, out_file=None, filled=True, rounded=True, class_names=["não", "sim"], feature_names =  features)
graph = graphviz.Source(dot_data)
graph

Erro:

--------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-2975df26fe79> in <module>()
      4 modelo.fit(x_azar, y_azar)
      5 features = x_azar.columns
----> 6 dot_data = export_graphviz(modelo, out_file=None, filled=True, rounded=True, class_names=["não", "sim"], feature_names =  features)
      7 
      8 graph = graphviz.Source(dot_data)

1 frames
/usr/local/lib/python3.7/dist-packages/sklearn/tree/_export.py in export(self, decision_tree)
    460             self.recurse(decision_tree, 0, criterion="impurity")
    461         else:
--> 462             self.recurse(decision_tree.tree_, 0, criterion=decision_tree.criterion)
    463 
    464         self.tail()

AttributeError: 'SVC' object has no attribute 'tree_'
1 resposta
solução!

Olá, Victor! Tudo bem com você?

O que está acontecendo é que sua variável modelo é um objeto SVC (um estimador SVC, para ser mais exato) e não um objeto do tipo DecisionTreeClassifier. O objeto do tipo SVC não possui o atributo tree_ necessário para a criação da árvore no graphviz. Você provavelmente não executou a célula que o instrutor faz essa declaração: modelo = DecisionTreeClassifier(max_depth=2) e aí o modelo ficou declarado como SVC.

Para resolver isso basta apenas executar a célula que está declarada o modelo como DecisionTreeClassifier(max_depth=2) e em seguida executar a célula que faz a árvore de decisão. Se preferir você pode juntar as células em uma, da seguinte forma:

from sklearn.model_selection import GroupKFold
import graphviz
from sklearn.tree import export_graphviz

SEED = 301
np.random.seed(SEED)

cv = GroupKFold(n_splits = 10)
modelo = DecisionTreeClassifier(max_depth=2)
results = cross_validate(modelo, x_azar, y_azar, cv = cv, groups = dados.modelo, return_train_score=False)

modelo.fit(x_azar, y_azar)

features = x_azar.columns
dot_data = export_graphviz(modelo, out_file=None, filled=True, rounded=True, class_names=['não', 'sim'], feature_names=features)

graph = graphviz.Source(dot_data)
graph

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software