Estou com esse erro no comando
sns.lineplot(x = "max_depth", y = "train", data = resultados)
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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 tabelaAo 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)