Question 1


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)


For Point (3,5) with K=1,Probabilities is Class0=0.0,Class1=1.0
For Point (3,5) with K=2,Probabilities is Class0=0.333333333333,Class1=0.666666666667
For Point (3,5) with K=3,Probabilities is Class0=0.4,Class1=0.6
For Point (4,6) with K=1,Probabilities is Class0=1.0,Class1=0.0
For Point (4,6) with K=2,Probabilities is Class0=1.0,Class1=0.0
For Point (4,6) with K=3,Probabilities is Class0=0.75,Class1=0.25

In [ ]: