Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
greyhatguy007
GitHub Repository: greyhatguy007/Machine-Learning-Specialization-Coursera
Path: blob/main/C3 - Unsupervised Learning, Recommenders, Reinforcement Learning/week1/C3W1A/C3W1A2/public_tests.py
3566 views
1
import numpy as np
2
import random
3
4
def select_threshold_test(target):
5
p_val = np.array([i / 100 for i in range(30)])
6
y_val = np.array([1] * 5 + [0] * 25)
7
8
best_epsilon, best_F1 = target(y_val, p_val)
9
assert np.isclose(best_epsilon, 0.04, atol=0.3 / 1000), f"Wrong best_epsilon. Expected: {0.04} got: {best_epsilon}"
10
assert best_F1 == 1, f"Wrong best_F1. Expected: 1 got: {best_F1}"
11
12
y_val = np.array([1] * 5 + [0] * 25)
13
y_val[2] = 0 # Introduce noise
14
best_epsilon, best_F1 = target(y_val, p_val)
15
assert np.isclose(best_epsilon, 0.04, atol=0.3 / 1000), f"Wrong best_epsilon. Expected: {0.04} got: {best_epsilon}"
16
assert np.isclose(best_F1, 0.8888888), f"Wrong best_F1. Expected: 0.8888888 got: {best_F1}"
17
18
p_val = np.array([i / 1000 for i in range(50)])
19
y_val = np.array([1] * 8 + [0] * 42)
20
y_val[5] = 0
21
index = [*range(50)]
22
random.shuffle(index)
23
p_val = p_val[index]
24
y_val = y_val[index]
25
26
best_epsilon, best_F1 = target(y_val, p_val)
27
assert np.isclose(best_epsilon, 0.007, atol=0.05 / 1000), f"Wrong best_epsilon. Expected: {0.0070070} got: {best_epsilon}"
28
assert np.isclose(best_F1, 0.933333333), f"Wrong best_F1. Expected: 0.933333333 got: {best_F1}"
29
print("\033[92mAll tests passed!")
30
31
def estimate_gaussian_test(target):
32
np.random.seed(273)
33
34
X = np.array([[1, 1, 1],
35
[2, 2, 2],
36
[3, 3, 3]]).T
37
38
mu, var = target(X)
39
40
assert type(mu) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(mu)}"
41
assert type(var) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(var)}"
42
43
assert mu.shape == (X.shape[1],), f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {mu.shape}"
44
assert type(var) == np.ndarray, f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {var.shape}"
45
46
assert np.allclose(mu, [1., 2., 3.]), f"Wrong value for mu. Expected: {[1, 2, 3]} got: {mu}"
47
assert np.allclose(var, [0., 0., 0.]), f"Wrong value for mu. Expected: {[0, 0, 0]} got: {var}"
48
49
X = np.array([[1, 2, 3],
50
[2, 4, 6],
51
[3, 6, 9]]).T
52
53
mu, var = target(X)
54
55
assert type(mu) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(mu)}"
56
assert type(var) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(var)}"
57
58
assert mu.shape == (X.shape[1],), f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {mu.shape}"
59
assert type(var) == np.ndarray, f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {var.shape}"
60
61
assert np.allclose(mu, [2., 4., 6.]), f"Wrong value for mu. Expected: {[2., 4., 6.]} got: {mu}"
62
assert np.allclose(var, [2. / 3, 8. / 3., 18. / 3.]), f"Wrong value for mu. Expected: {[2. / 3, 8. / 3., 18. / 3.]} got: {var}"
63
64
65
m = 500
66
X = np.array([np.random.normal(0, 1, m),
67
np.random.normal(1, 2, m),
68
np.random.normal(3, 1.5, m)]).T
69
70
mu, var = target(X)
71
72
assert type(mu) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(mu)}"
73
assert type(var) == np.ndarray, f"Wrong type for mu. Expected: {np.ndarray} got: {type(var)}"
74
75
assert mu.shape == (X.shape[1],), f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {mu.shape}"
76
assert type(var) == np.ndarray, f"Wrong shape for mu. Expected: {(X.shape[1],)} got: {var.shape}"
77
78
assert np.allclose(mu, [0., 1., 3.], atol=0.2), f"Wrong value for mu. Expected: {[0, 1, 3]} got: {mu}"
79
assert np.allclose(var, np.square([1., 2., 1.5]), atol=0.2), f"Wrong value for mu. Expected: {np.square([1., 2., 1.5])} got: {var}"
80
81
print("\033[92mAll tests passed!")
82