import
math
def
weightedkNN(points,p,k
=
3
):
distance
=
[]
for
group
in
points:
for
feature
in
points[group]:
euclidean_distance
=
math.sqrt((feature[
0
]
-
p[
0
])
*
*
2
+
(feature[
1
]
-
p[
1
])
*
*
2
)
distance.append((euclidean_distance,group))
distance
=
sorted
(distance)[:k]
freq1
=
0
freq2
=
0
for
d
in
distance:
if
d[
1
]
=
=
0
:
freq1
+
=
(
1
/
d[
0
])
elif
d[
1
]
=
=
1
:
freq2
+
=
(
1
/
d[
0
])
return
0
if
freq1>freq2
else
1
def
main():
points
=
{
0
:[(
0
,
4
),(
1
,
4.9
),(
1.6
,
5.4
),(
2.2
,
6
),(
2.8
,
7
),(
3.2
,
8
),(
3.4
,
9
)],
1
:[(
1.8
,
1
),(
2.2
,
3
),(
3
,
4
),(
4
,
4.5
),(
5
,
5
),(
6
,
5.5
)]}
p
=
(
2
,
4
)
k
=
5
print
(
"The value classified to query point is: {}"
.
format
(weightedkNN(points,p,k)))
if
__name__
=
=
'__main__'
:
main()