1
resposta

Por que os valores são diferentes?

Se estou utilizando os mesmos dados, as mesmas bibliotecas e a mesma codificação, por que os valores são diferentes?

Eis o meu código:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.model_selection import train_test_split

filmes = pd.read_csv("C:\\Temp\\movies_multilinear_reg.csv")
filmes_caract = filmes[filmes.columns[2:17]]
filmes_labels = filmes[filmes.columns[17:]]

treino, teste, treino_labels, teste_labels = train_test_split(filmes_caract, filmes_labels)

treino = np.array(treino).reshape(len(treino), 15)
teste = np.array(teste).reshape(len(teste), 15)

treino_labels = np.array(treino_labels).reshape(len(treino_labels), 1)
teste_labels = np.array(teste_labels).reshape(len(teste_labels), 1)

modelo = tree.DecisionTreeRegressor()
modelo.fit(treino, treino_labels)

modelo.score(treino, treino_labels) = 1.0
modelo.score(teste, teste_labels) 

Na aula = 0.65350569565765548 Na minha máquina = 0.6380075817425759

1 resposta

Olá Marcos! Tudo bem contigo?

Peço desculpas pela demora em dar um retorno.

Isso está acontecendo porque a cada vez que você executar seu código, os seus dados de treino e teste serão separados de formas diferentes. O mesmo acontece no notebook do professor. Uma forma de evitar essa aleatoriedade seria especificando um valor aleatório de seed (semente). Ao especificar esse valor, toda vez que você rodar seu código, seus dados de treino e teste serão separados da mesma forma e você obterá sempre o mesmo resultado, observe:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.model_selection import train_test_split

filmes = pd.read_csv("movies_multilinear_reg.csv")
filmes_caract = filmes[filmes.columns[2:17]]
filmes_labels = filmes[filmes.columns[17:]]

seed = 145879
np.random.seed(seed)

treino, teste, treino_labels, teste_labels = train_test_split(filmes_caract, filmes_labels, random_state = seed, )

treino = np.array(treino).reshape(len(treino), 15)
teste = np.array(teste).reshape(len(teste), 15)

treino_labels = np.array(treino_labels).reshape(len(treino_labels), 1)
teste_labels = np.array(teste_labels).reshape(len(teste_labels), 1)

modelo = tree.DecisionTreeRegressor()
modelo.fit(treino, treino_labels)

modelo.score(treino, treino_labels)
modelo.score(teste, teste_labels) 

Resultado:

0.6296893853232839

Tenta executar o código na sua máquina especificando esse seed para conferir se terá o mesmo resultado :)

Caso queira entender um pouco mais sobre como funciona essa "semente aleatória" vou deixar aqui a indicação de um artigo:

O artigo está em inglês, mas se você utilizar o recurso de tradução do próprio navegador dá pra ler certinho em português.

Espero ter ajudado. Qualquer dúvida estamos à disposição ^^

Bons estudos!