-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathass2.txt
42 lines (36 loc) · 1.88 KB
/
ass2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
A1) Στόχος μας για το πρώτο task είναι να εκτιμήσουμε τις άγνωστες παραμέτρους θ1 και θ2
χρησιμοποιώντας ένα σύνολο από διαθέσιμα διανύσματα χαρακτηριστικών από κάθε κλάση.
Α2) Το πρόσημο της g(x) καθορίζει σε ποιά από τις δύο κλάσεις θα ταξινομήσουμε το κάθε δείγμα
από τα δεδομένα μας. Συγκεκριμένα, αν g(x) > 0 ταξινομόυμε στην πρώτη κλάση ω1, ενώ
αν g(x) < 0 ταξινομούμε στην κλάση ω2.
Με βάση αυτόν τον κανόνα βλέπουμε ότι τα δεδομένα μας δεν ταξινομούνται τέλεια,
καθώς ένα δείγμα που κανονικά ανήκει στην κλάση ω1, φαίνεται να ταξινομείται λανθασμένα
στην κλάση ω2.
#Function to calculate L(θ) for task A1
"""
Arguments:
D: List of elements like those in D1 and D2
thetas: List of theta values
Returns: log(pdf)
"""
def log_prob(D, thetas):
#Initialising p1 and p2 where p_i = p(x_i|theta)
p = 1
for x in D:
p *= (1/math.pi)*(1/(1+(x-thetas)**2))
return np.log(p)
#Discrimination function for task A1
"""
Arguments:
X: List of total elements to be sorted
theta_i: the two theta values found from maximum likelihood estimation
p_i: A-priori probabilities
Returns:
g: The discrimination function
"""
def discrimination(X, theta1, theta2, p1, p2):
g = list()
for x in X:
temp = (np.log((1/math.pi)*(1/(1+(x-theta1)**2))) - np.log((1/math.pi)*(1/(1+(x-theta2)**2)))) + (np.log(P_apriori1) - np.log(P_apriori2))
g.append(temp)
return g