1
resposta

Erro no export_graphviz

Minha célula de execução está assim:

from sklearn.tree import export_graphviz
import graphviz
modelo.fit(x_azar, y_azar)
features = x_azar.columns
print(features)
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

porém na hora de gerar dá um erro estranho que é:

AttributeError: 'SVC' object has no attribute 'tree_'

Devo estar esquecendo algo, podem me ajudar?

1 resposta

Oi, Leontino! Tudo bem por aí?

Desculpe a demora em te responder.

O erro "SVC object has no attribute tree_" indica que você está tentando acessar o atributo tree_ em um objeto SVC, o qual não o possui. O atributo tree_ é específico de modelos baseados em árvores de decisão, como DecisionTreeClassifier.

Possivelmente, a célula com o conteúdo modelo = DecisionTreeClassifier(max_depth=2) não foi executada, fazendo com que o seu modelo permanecesse declarado com SVC. Sabendo disso, recomendo executar novamente os códigos que declaram o modelo e criam a árvore de decisão. Para ter certeza que as duas etapas serão executadas em sequência, você pode uni-las em apenas uma célula, chegando neste resultado:

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

Leontino, espero que dê tudo certo! Caso o problema continue, fico à disposição.

Um abraço!

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