Skip to content

Commit d3d9daf

Browse files
authored
Merge pull request #113 from Anand0295/add-rmse-metric
Add RMSE metric for regression evaluation (#111)
2 parents 2e04854 + 9878775 commit d3d9daf

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

pydeepflow/metrics.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,25 @@ def r2_score(y_true, y_pred):
157157
ss_tot = np.sum((y_true - np.mean(y_true)) ** 2)
158158
return 1 - (ss_res / ss_tot)
159159

160+
def rmse(y_true, y_pred):
161+
"""
162+
Compute Root Mean Squared Error between true and predicted values.
163+
164+
RMSE = sqrt((1/n) * Σ(y_true - y_pred)^2)
165+
166+
Parameters
167+
----------
168+
y_true : array-like
169+
Ground truth (correct) target values.
170+
y_pred : array-like
171+
Estimated target values.
172+
173+
Returns
174+
-------
175+
float
176+
The RMSE score.
177+
"""
178+
y_true = np.array(y_true)
179+
y_pred = np.array(y_pred)
180+
return np.sqrt(np.mean((y_true - y_pred) ** 2))
181+

tests/test_metrics.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy as np
33
from pydeepflow.metrics import (
44
precision_score, recall_score, f1_score, confusion_matrix,
5-
mean_absolute_error, mean_squared_error, r2_score
5+
mean_absolute_error, mean_squared_error, r2_score, rmse
66
)
77

88
class TestMetrics(unittest.TestCase):
@@ -54,5 +54,11 @@ def test_r2_score(self):
5454
# R^2 = 1 - (1.5 / 29.1875) = 1 - 0.051389... approx 0.9486
5555
self.assertAlmostEqual(r2_score(self.y_true_reg, self.y_pred_reg), 0.94861051, places=5)
5656

57+
def test_rmse(self):
58+
y_true = np.array([1, 2, 3])
59+
y_pred = np.array([2, 2, 4])
60+
expected = np.sqrt(((1-2)**2 + (2-2)**2 + (3-4)**2) / 3)
61+
self.assertAlmostEqual(rmse(y_true, y_pred), expected)
62+
5763
if __name__ == '__main__':
5864
unittest.main()

0 commit comments

Comments
 (0)