Regression Metrics (MAE, RMSE, R²)
Part of the Data Science Roadmap
In short
When you predict a number like a flat's price, 'right or wrong' doesn't work. You need to know how far off you are, and these three metrics tell you in different ways.
MAE (mean absolute error) is intuitive and robust to outliers, RMSE penalizes large errors more heavily, and R² describes how much variance the model explains — each tells a different part of the story.

Think of it like this
Guessing weights at the village fair
At the fair you guess each watermelon's weight before it goes on the scale. MAE is your average miss in kilos. RMSE punishes one wild miss much more than many small ones. R² asks how much better you did than someone who just guessed the average weight every time.
Watch it happen
Errors on five flat prices (in lakh)
1/5Each cell is predicted minus actual price for one flat. Four small misses and one big one.
The big ideas
What you need to know
MAE is easy to explain
'On average we're off by 3.6 lakh.' Same units as the target, and outliers don't dominate it.
RMSE hates big misses
Squaring makes large errors count heavily. Use it when one huge miss is much worse than several small ones.
R² is relative
1 is perfect, 0 is no better than predicting the mean, and it can go negative for a bad model.
Report more than one
MAE plus RMSE tells you both the typical error and whether a few big misses are hiding in there.
See it in code
Walk through the code
1import numpy as np2from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score3 4actual = np.array([50, 62, 45, 70, 90]) # flat prices in lakh5predicted = np.array([52, 61, 48, 68, 80])6 7mae = mean_absolute_error(actual, predicted)8rmse = np.sqrt(mean_squared_error(actual, predicted))9r2 = r2_score(actual, predicted)10print(f"MAE {mae:.1f} RMSE {rmse:.2f} R2 {r2:.2f}")1/4Real prices and model guesses. The last flat is off by 10 lakh.
Same five flats as the scene. It prints MAE 3.6, RMSE 4.86 and R2 0.91.
Save yourself the pain
Common mistakes
Oops
Saying 'R² is 0.9, so predictions are 90% accurate'.
Do this instead
R² is explained variance, not accuracy. Quote MAE or RMSE when people ask how far off you are.
Oops
Comparing RMSE across datasets with different units or scales.
Do this instead
Compare errors only on the same target. For cross-dataset comparisons, use a relative measure and explain it.
Your mission
Watch an outlier move the metrics
Quick check
Two models have the same MAE, but model B has a much higher RMSE. What does that tell you?
Go deeper
- 1Calculate all 3 metrics for a regression model's predictions.
- 2Learn why RMSE is more sensitive to large errors than MAE.
- 3Practice explaining R² in plain language ('the model explains X% of the variation').
More topics at this stop
Stuck on this topic? Ask an Insider
Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.