Repository navigation
Expand file tree
/
Copy pathhw1.py
More file actions
127 lines (87 loc) · 2.2 KB
/
Copy pathhw1.py
File metadata and controls
127 lines (87 loc) · 2.2 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import sys
datafile = sys.argv[1]
f = open(datafile)
data = []
l = f.readline()
while(l != ''):
a = l.split()
l2 = []
for j in range(0, len(a), 1):
l2.append(float(a[j]))
data.append(l2)
l = f.readline()
rows = len(data)
cols = len(data[0])
f.close()
#print("DATA:-")
#print(data)
labelfile = sys.argv[2]
f = open(labelfile)
trainlabels = {}
n = []
n.append(0)
n.append(0)
l = f.readline()
while(l != ''):
a = l.split()
trainlabels[int(a[1])] = int(a[0])
l = f.readline()
n[int(a[0])] += 1
f.close()
#print("TRAIN LABELS:-")
#print(trainlabels)
#CALCULATING MEAN
m0 = []
for j in range(0, cols, 1):
m0.append(0.01)
m1 = []
for j in range(0, cols, 1):
m1.append(0.01)
for i in range(0, rows, 1):
if(trainlabels.get(i) != None and trainlabels[i] == 0):
for j in range(0, cols, 1):
m0[j] = m0[j] + data[i][j]
if(trainlabels.get(i) != None and trainlabels[i] == 1):
for j in range(0, cols, 1):
m1[j] = m1[j] + data[i][j]
for j in range(0, cols, 1):
m0[j] = m0[j]/n[0]
m1[j] = m1[j]/n[1]
#print("MEAN")
#print(m0)
#print(m1)
#CALCULATING VARIANCE: formula Sum of(xi-mean)^2/(total number)
var0 = []
for j in range(0, cols, 1):
var0.append(0.01)
var1 = []
for j in range(0, cols, 1):
var1.append(0.01)
for i in range(0, len(trainlabels), 1):
if(trainlabels.get(i) != None and trainlabels[i] == 0):
for j in range(0, cols, 1):
var0[j] = var0[j] + (data[i][j] - m0[j])**2
if(trainlabels.get(i) != None and trainlabels[i] == 1):
for j in range(0, cols, 1):
var1[j] = var1[j] + (data[i][j] - m1[j])**2
#print(var0)
#print(var1)
for j in range(0, cols, 1):
var0[j] = var0[j]/n[0]
var1[j] = var1[j]/n[1]
#print("VARIANCE OF BOTH CLASSES:-")
#print(var0)
#print(var1)
#PREDICTING THE CLASS
print("CLASS PREDICTION:-")
for i in range(0, rows, 1):
if(trainlabels.get(i) == None):
d0 = 0
d1 = 0
for j in range(0, cols, 1):
d0 = d0 + (data[i][j] - m0[j])**2/var0[j]
d1 = d1 + (data[i][j] - m1[j])**2/var1[j]
if(d0<d1):
print("0",i)
else:
print("1",i)