In [143]:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
In [95]:
points = [(9,3,1),(2,4,1),(3,3,1),(4,1,1),(1,6,1),(3,9,0),(5,6,0),(6,4,0),(6,2,0),(3,7,0)]
In [144]:
plt.figure('points.jpg')
plt.plot([x[0] for x in points],[x[1] for x in points],'bo')
plt.plot([3,4],[5,6],'rv')
plt.ylabel('Y')
plt.xlabel('X')
plt.title('Points')
plt.savefig('points.jpg')
In [145]:
def GetClosePoints(centerpoint,k=1):
indx =0
distances={}
for point in points:
#Calculate Eucludean distance
distance = np.linalg.norm(np.array(centerpoint)-np.array((point[0],point[1])))
#Store all points with the same distance under the same
if distance in distances.keys():
distances[distance].append(indx)
else:
distances[distance] = []
distances[distance].append(indx)
indx+=1
#Sort list by distance
keys = distances.keys()
keys.sort(key = lambda x:x,reverse=False)
#print the list
#for key in keys:
# print key , distances[key]
#Get Points in K distance
pointindx=[]
for i in range (0,k):
for index in distances[keys[i]]:
pointindx.append(index)
#Print Selected Points indexs
#print pointindx
#Calculate Probabilities
Totalpoints = len(pointindx)
Class0=0
Class1=0
for i in pointindx:
if points[i][2]:
Class1+=1
else:
Class0+=1
print 'For Point ({},{}) with K={},Probabilities is Class0={},Class1={}'.format(centerpoint[0],centerpoint[1],k,
Class0/float(Totalpoints),Class1/float(Totalpoints))
In [146]:
#np.linalg.norm(np.array((5,2))-np.array((3,1)))
p1 = (3,5)
p2 = (4,6)
In [147]:
GetClosePoints(p1,1)
GetClosePoints(p1,2)
GetClosePoints(p1,3)
GetClosePoints(p2,1)
GetClosePoints(p2,2)
GetClosePoints(p2,3)
In [ ]: