(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como avaliar um modelo de regressão em Machine Learning

João Barros 05 de July de 2026 4 min de leitura

Depois de treinares um modelo que prevê valores contínuos — preços de casas, temperaturas ou vendas —, a pergunta seguinte é sempre a mesma: as previsões são boas? Avaliar um modelo de regressão em Machine Learning com as métricas certas dá uma resposta em números, mostrando quão longe as previsões estão dos valores reais. As três métricas mais usadas para isso são o MAE, o RMSE e o R², e é isso que vais aprender a calcular e a interpretar.

Pré-requisitos

  • Python 3 instalado no teu computador.
  • As bibliotecas scikit-learn e pandas (instala com pip install scikit-learn pandas).
  • Saber separar dados em treino e teste com train_test_split.
  • Noções básicas de como treinar um modelo (usamos LinearRegression como exemplo).

Passo 1: Treinar um modelo para depois avaliar

Para ter previsões para medir, começamos por treinar um modelo simples. Usamos o conjunto de dados California Housing, que já vem com o scikit-learn, dividimos os dados em treino e teste e treinamos uma regressão linear. As previsões saem do conjunto de teste, ou seja, de dados que o modelo nunca viu.

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

dados = fetch_california_housing()
X_treino, X_teste, y_treino, y_teste = train_test_split(
    dados.data, dados.target, test_size=0.2, random_state=42)

modelo = LinearRegression()
modelo.fit(X_treino, y_treino)
previsoes = modelo.predict(X_teste)

Passo 2: Calcular o MAE (erro absoluto médio)

O MAE (Mean Absolute Error) é a média das diferenças, em valor absoluto, entre o valor real e o previsto. É a métrica mais fácil de explicar: vem na mesma unidade do alvo e diz, em média, quanto o modelo erra. Quanto mais baixo, melhor.

from sklearn.metrics import mean_absolute_error

mae = mean_absolute_error(y_teste, previsoes)
print(f"MAE: {mae:.3f}")

Passo 3: Calcular o RMSE (raiz do erro quadrático médio)

O RMSE (Root Mean Squared Error) também está na unidade do alvo, mas eleva os erros ao quadrado antes de os somar. Na prática, isto faz com que os erros grandes pesem muito mais do que os pequenos: se o modelo falha feio em alguns casos, o RMSE sobe depressa. Desde o scikit-learn 1.4 existe a função root_mean_squared_error, que é a forma atual de o calcular.

from sklearn.metrics import root_mean_squared_error

rmse = root_mean_squared_error(y_teste, previsoes)
print(f"RMSE: {rmse:.3f}")

Em versões mais antigas usava-se mean_squared_error(y_teste, previsoes, squared=False), mas esse parâmetro foi descontinuado, por isso prefere a função nova.

Passo 4: Calcular o R² (coeficiente de determinação)

O R² responde a outra pergunta: que percentagem da variação dos dados é explicada pelo modelo? Varia normalmente entre 0 e 1, em que 1 é uma previsão perfeita. Um valor perto de 0 significa que o modelo pouco acrescenta a simplesmente adivinhar a média; valores negativos indicam um modelo pior do que essa média.

from sklearn.metrics import r2_score

r2 = r2_score(y_teste, previsoes)
print(f"R2: {r2:.3f}")

Verificar o resultado

Ao correr o script deves ver três valores impressos. Com este conjunto de dados e uma regressão linear, o MAE costuma rondar 0,53, o RMSE cerca de 0,75 e o R² à volta de 0,58 (o alvo está em centenas de milhares de dólares). Os valores exatos podem variar ligeiramente conforme a versão das bibliotecas. Repara que o RMSE é maior do que o MAE: sempre que essa diferença é acentuada, é sinal de que existem alguns erros grandes a puxar a média para cima. Já um R² de 0,58 diz-te que o modelo explica cerca de 58% da variação dos preços — há espaço para melhorar.

Conclusão

Com o MAE, o RMSE e o R² passas a ter uma imagem completa do desempenho de um modelo de regressão: o erro médio, o peso dos erros grandes e a qualidade global do ajuste. O próximo passo natural é usar exatamente estas três métricas para comparar modelos diferentes — por exemplo, trocar a LinearRegression por um RandomForestRegressor e ver quais os números que melhoram. Dica: calcula sempre estas métricas nos dados de teste, nunca nos de treino — só assim refletem o desempenho real. E tu, para o teu problema, o que é mais importante: penalizar bastante os erros grandes (RMSE) ou tratar todos os erros por igual (MAE)?