1
resposta

Resultado diferente nos R²

Os meus códigos resultaram valores distintos ao do professor nos R².

Comparando Modelos
Estimando um novo modelo com a substituição da variável explicativa Temperatura Máxima pela Temperatura Média
fds
X2 = dados[['temp_media', 'chuva', 'fds']]
Criando os datasets de treino e de teste
X2_train, X2_test, y2_train, y2_test = train_test_split(X2, y, test_size=0.3, random_state=2811)
Instanciando a classe LinearRegression()
modelo_2 = LinearRegression()
Utilizando o método fit() do objeto "modelo_2" para estimar nosso modelo linear utilizando os dados de TREINO (y2_train e X2_train)
modelo_2.fit(X2_train, y2_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
Obtendo o coeficiente de determinação (R²) do novo modelo estimado e comparando com o resultado do modelo anterior
i
print('Modelo com Temp. Média')
print('R² = {}'.format(modelo.score(X2_train, y2_train).round(2)))
Modelo com Temp. Média
R² = -0.05
print('R² = {}'.format
print('Modelo com Temp. Máxima')
print('R² = {}'.format(modelo.score(X_train, y_train).round(2)))
Modelo com Temp. Máxima
R² = 0.73
Gerando previsões para os dados de TESTE (X_test e X2_test) utilizando o método predict() dos objetos "modelo" e "modelo_2"
2
y_previsto = modelo.predict(X_test)
y_previsto2 = modelo.predict(X2_test)
Obtendo o coeficiente de determinação (R²) para as previsões dos dois modelos
print('Modelo com Temp. Média')
print('R² = {}'.format(metrics.r2_score(y2_test, y_previsto2).round(2)))
Modelo com Temp. Média
R² = -0.09
print('Modelo com Temp. Máxima')
print('R² = {}'.format(metrics.r2_score(y_test, y_previsto).round(2)))
Modelo com Temp. Máxima
R² = 0.69
1 resposta

Olá! Observei que faltou você alterar o modelo da regressão para o modelo_2, com a variável de temp. média .

print('R² = {}'.format(modelo.score(X2_train, y2_train).round(2))) <= calculando sobre o modelo de regressão errado, 'modelo' está calculado com a variável temp. máxima.

correção: print('R² = {}'.format(modelo_2.score(X2_train, y2_train).round(2)))

y_previsto2 = modelo.predict(X2_test) <= calculando sobre o modelo de regressão errado, 'modelo' está calculado com a variável temp. máxima.

correção: y_previsto2 = modelo_2.predict(X2_test)

print('R² = {}'.format(metrics.r2_score(y2_test, y_previsto2).round(2))) <= aqui ele está calculando y_previsto2 sobre a variável de "modelo", sendo que ele tem que ser calculado sobre a regressão com a variável de temp. média do modelo_2.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software