Estou com esse erro no comando
sns.lineplot(x = "max_depth", y = "train", data = resultados)
Estou com esse erro no comando
sns.lineplot(x = "max_depth", y = "train", data = resultados)
Olá, Felipe! Tudo bem com você?
Somente com esse trecho de código não foi possível identificar o que pode estar causando o erro encontrado por você, visto que o seu comando está igual ao do instrutor.
import seaborn as sns
sns.lineplot(x = "max_depth", y = "train", data = resultados)
sns.lineplot(x = "max_depth", y = "test", data = resultados)
Para sermos mais assertivos na resposta, você poderia nos encaminhar seu notebook? Pode colocá-lo em um drive (deixar o link público) e nos encaminhar, ou caso esteja utilizando o colab poderia compartilhar o link do notebook também.
Aguardo retorno.
Abraços.
Olá Felipe!
Desculpa pela demora em dar um retorno.
O erro está acontecendo devido a essa função aqui:
def roda_arvore_de_decisao (max_depth):
SEED = 301
np.random.seed(SEED)
cv = GroupKFold(n_splits = 10)
modelo = DecisionTreeClassifier(max_depth=max_depth)
results = cross_validate(modelo, x_azar, y_azar, cv = cv, groups = dados.modelo, return_train_score=True)
train_score = results['train_score'].mean() * 100,
test_score = results['test_score'].mean() * 100
print("max_depth = %d, treino = %2.f, teste = %.2f" % (max_depth, results['train_score'].mean() * 100, results['test_score'].mean() * 100))
tabela = [max_depth, train_score,test_score]
#imprime_resultados(results)
return tabela
Ao olharmos para como você declarou a variável train_score
percebemos que ao final você adicionou uma vírgula, ao fazer isso o Python irá interpretar que você está declarando uma tupla de valores e não somente um valor, e devido a isso quando você tenta plotar o lineplot acontece esse erro.
Para resolver isso basta retirar a vírgula que o problema estará solucionado.
Abaixo o código completo já plotando o gráfico:
import seaborn as sns
def roda_arvore_de_decisao (max_depth):
SEED = 301
np.random.seed(SEED)
cv = GroupKFold(n_splits = 10)
modelo = DecisionTreeClassifier(max_depth=max_depth)
results = cross_validate(modelo, x_azar, y_azar, cv = cv, groups = dados.modelo, return_train_score=True)
train_score = results['train_score'].mean() * 100
test_score = results['test_score'].mean() * 100
print("max_depth = %d, treino = %.2f, teste = %.2f" % (max_depth, results['train_score'].mean() * 100, results['test_score'].mean() * 100))
tabela = [max_depth, train_score,test_score]
#imprime_resultados(results)
return tabela
resultados = [roda_arvore_de_decisao(i) for i in range (1,33)]
resultados = pd.DataFrame(resultados, columns= ["max_depth","train","test"])
sns.lineplot(x = "max_depth", y = "train", data = resultados)
sns.lineplot(x = "max_depth", y = "test", data = resultados)