Skip to content

Commit a740c6d

Browse files
committed
rmse
1 parent 0e18dd0 commit a740c6d

File tree

6 files changed

+123
-6
lines changed

6 files changed

+123
-6
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,16 @@ $$
4747
\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}
4848
$$
4949

50+
```python
51+
from rmse import RMSE
52+
rmse = RMSE(
53+
actual_vals=[34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24],
54+
predicted_vals=[37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23],
55+
)
56+
rmse.calc_errors()
57+
rmse.square_errors()
58+
rmse.sum_errors()
59+
rmse.set_mean()
60+
result = rmse.get_square_root()
61+
assert round(result, 5) == 2.43242
62+
```

mse.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,4 @@ def __init__(self, *,
1818
predicted_vals=predicted_vals,
1919
)
2020

21-
def square_errors(self):
22-
squ_errs = []
23-
for e in self.errors:
24-
squ_errs.append(pow(e, 2))
25-
self.errors = squ_errs
21+

rem_base.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,18 @@ def calc_errors(self) -> None:
2626
for i in range(range_len):
2727
self.errors.append(self.actual_vals[i]-self.predicted_vals[i])
2828

29+
def square_errors(self):
30+
squ_errs = []
31+
for e in self.errors:
32+
squ_errs.append(pow(e, 2))
33+
self.errors = squ_errs
34+
2935
def sum_errors(self) -> None:
3036
for e in self.errors:
3137
self.result += e
3238

39+
40+
3341
def get_mean(self) -> float:
3442
"""
3543
:return: Mean absolute error as a float

rmse.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from typing import List
2+
import math
3+
4+
from rem_base import BaseREM
5+
6+
7+
class RMSE(BaseREM):
8+
9+
square_root: float
10+
11+
def __init__(self, *,
12+
actual_vals: List[int],
13+
predicted_vals: List[int],
14+
):
15+
super().__init__(
16+
actual_vals=actual_vals,
17+
predicted_vals=predicted_vals,
18+
)
19+
self.square_root = 0
20+
21+
def set_mean(self) -> None:
22+
self.square_root = self.get_mean()
23+
24+
def get_square_root(self) -> float:
25+
return math.sqrt(self.square_root)

test_mse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def test_square_errors(self):
3232
)
3333
mse2.calc_errors()
3434
mse2.square_errors()
35-
assert len(mse.errors) == len(mse.actual_vals)
35+
assert len(mse2.errors) == len(mse2.actual_vals)
3636
assert mse2.errors == [9, 9, 4, 9, 4, 4, 1, 1, 4, 9, 16, 1]
3737

3838
def test_sum_errors(self):

test_rmse.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from rmse import RMSE
2+
3+
4+
class TestMAE:
5+
6+
def test_new(self):
7+
rmse = RMSE(actual_vals=[3, 5, 2], predicted_vals=[4, 4, 3])
8+
assert isinstance(rmse, RMSE)
9+
10+
def test_calc_errors(self):
11+
rmse = RMSE(actual_vals=[3, 5, 2], predicted_vals=[4, 4, 3])
12+
rmse.calc_errors()
13+
assert rmse.errors == [-1, 1, -1]
14+
15+
rmse2 = RMSE(
16+
actual_vals=[34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24],
17+
predicted_vals=[37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23],
18+
)
19+
rmse2.calc_errors()
20+
assert rmse2.errors == [-3, -3, -2, 3, 2, -2, 1, -1, -2, -3, 4, 1]
21+
22+
def test_square_errors(self):
23+
rmse = RMSE(actual_vals=[3, 5, 2], predicted_vals=[4, 4, 3])
24+
rmse.calc_errors()
25+
rmse.square_errors()
26+
assert len(rmse.errors) == len(rmse.actual_vals)
27+
assert rmse.errors == [1, 1, 1]
28+
29+
rmse2 = RMSE(
30+
actual_vals=[34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24],
31+
predicted_vals=[37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23],
32+
)
33+
rmse2.calc_errors()
34+
rmse2.square_errors()
35+
assert len(rmse2.errors) == len(rmse2.actual_vals)
36+
assert rmse2.errors == [9, 9, 4, 9, 4, 4, 1, 1, 4, 9, 16, 1]
37+
38+
def test_set_mean(self):
39+
rmse = RMSE(actual_vals=[3, 5, 2], predicted_vals=[4, 4, 3])
40+
rmse.calc_errors()
41+
rmse.square_errors()
42+
rmse.sum_errors()
43+
rmse.set_mean()
44+
assert rmse.square_root == 1
45+
46+
rmse2 = RMSE(
47+
actual_vals=[34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24],
48+
predicted_vals=[37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23],
49+
)
50+
rmse2.calc_errors()
51+
rmse2.square_errors()
52+
rmse2.sum_errors()
53+
rmse2.set_mean()
54+
assert round(rmse2.square_root, 5) == 5.91667
55+
56+
def test_get_square_root(self):
57+
rmse = RMSE(actual_vals=[3, 5, 2], predicted_vals=[4, 4, 3])
58+
rmse.calc_errors()
59+
rmse.square_errors()
60+
rmse.sum_errors()
61+
rmse.set_mean()
62+
result = rmse.get_square_root()
63+
assert result == 1
64+
65+
rmse2 = RMSE(
66+
actual_vals=[34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24],
67+
predicted_vals=[37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23],
68+
)
69+
rmse2.calc_errors()
70+
rmse2.square_errors()
71+
rmse2.sum_errors()
72+
rmse2.set_mean()
73+
result2 = rmse2.get_square_root()
74+
assert round(result2, 5) == 2.43242
75+

0 commit comments

Comments
 (0)