1
resposta

Fit com todos os dados do dataset

Percebi que durante a aula ele faz um fit com todos os dados do dataset... Estava estudando com um outro dataset e cheguei nesse ponto:

SEED = 301
np.random.seed(SEED)

parametros = {'max_depth': [3, 10, 20, 30],
             'min_samples_leaf': [32, 64, 128],
             'min_samples_split': [32, 64, 128],
             'criterion': ['gini', 'entropy']}

resultado = GridSearchCV(DecisionTreeClassifier(), parametros, cv = KFold(n_splits = 10, shuffle = True))
scores = cross_val_score(resultado, x, y, cv = KFold(n_splits = 10, shuffle = True))

print('A média de acerto com o modelo de Árvore de decisão foi de: ', ((scores.mean())*100).round(2))

resultado.fit(x, y)

from sklearn.tree import export_graphviz
import graphviz
from sklearn.tree import plot_tree

features = x.columns

plt.figure(figsize = (15, 10))
plot_tree(resultado.best_estimator_, filled = True, rounded = True, class_names = ["setosa", "versicolor", "virginica"], feature_names = features)

Percebi que o resultado.best_estimator_ só funciona se o resultado tiver um fit() antes. Caso eu faça desse jeito eu prejudico de alguma forma o plot da minha árvore de decisão? Pode ser um plot muito otimista? (O dataset usado foi o da iris, bem famoso em Data Science)

1 resposta

Olá,

O resultado.best_estimator_ está te retornando um objeto que é a árvore com o melhor resultado no seu Grid Search. Para calcular a melhor árvore, é necessário você rodar antes o método fit para que o modelo possa ser treinado e a árvore ser construída.

Quando você tenta plotar sua árvore antes de ter um fit, o erro ocorre porque você não treinou/construiu nenhuma árvores.

Sobre se o seu plot será muito otimista, creio que você estará plotando a árvore com o melhor desempenho médio na iris, já que você usou uma validação por um Kfold com 10 folds. Não há nenhum problema de você plotar essa árvore, a única coisa é que provavelmente será uma árvore diferente de alguém que não tenha feito um Grid Search, aliás a sua árvore deve ter uma capacidade de generalização melhor de alguém que não tenha usado Grid Search.