from math import *
import random
LABELS=["A","B"]
defget_data():
data=[];labels=[]
for i in range(100):
d=(1+random.random()*0.1-0.05,1+random.random()*0.1-0.05)
data.append(d)
labels.append(0)
for i in range(100):
d=(0.1+random.random()*0.1-0.05,0.1+random.random()*0.1-0.05)
data.append(d)
labels.append(1)
return data,labels
defdistance(p1,p2):return sqrt(pow((p1[0]-p2[0]),2)+pow((p1[1]-p2[1]),2))
defknn(item,data,labels,n=3):
distances=[]
for i in range(len(data)):
dis=distance(item,data[i])
distances.append((dis,labels[i]))
for i in range(len(distances)):
for j in range(i+1,len(distances)):
if(distances[j]<distances[i]):
distances[i],distances[j]=distances[j],distances[i]
statc={}
for i in range(n):
label=distances[i][1]
if label in statc:
statc[label]+=1else:
statc[label]=1
maxLabelCnt=0
print(statc)
for l,c in statc.items():
if(c>maxLabelCnt):
label=l
maxLabelCnt=c
return label
data,labels=get_data()
label=knn((0.55,0.55),data,labels)
print(LABELS[label])