Professional Documents
Culture Documents
import mltools as ml
import scipy.linalg
iris = np.genfromtxt("data/iris.txt",delimiter=None)
In[13]: plt.plot(X)
plt.show()
le:///Users/devonkenneally/Downloads/HW5.html 1/26
3/17/2017 HW5
In[27]: K = [5,20]
I = ()
for i in range (6):
for k in K:
i = ml.cluster.kmeans(X,k)
if(I == () or I[2] > i[2]):
I = i
ml.plotClassify2D(None,X,i[0])
plt.show()
print "SUMD is" ,i[2]
le:///Users/devonkenneally/Downloads/HW5.html 2/26
3/17/2017 HW5
SUMD is 20.9546301963
SUMD is 6.03797090446
le:///Users/devonkenneally/Downloads/HW5.html 3/26
3/17/2017 HW5
SUMD is 21.5528660333
SUMD is 6.05741136637
le:///Users/devonkenneally/Downloads/HW5.html 4/26
3/17/2017 HW5
SUMD is 25.6541611009
SUMD is 6.45211652596
le:///Users/devonkenneally/Downloads/HW5.html 5/26
3/17/2017 HW5
SUMD is 23.4386437573
SUMD is 6.24938981815
le:///Users/devonkenneally/Downloads/HW5.html 6/26
3/17/2017 HW5
SUMD is 21.5819690003
SUMD is 4.85326284878
le:///Users/devonkenneally/Downloads/HW5.html 7/26
3/17/2017 HW5
In[32]: for k in K:
r1 = ml.cluster.agglomerative(X,k,"min")
r2 = ml.cluster.agglomerative(X,k,"max")
print "K VALUE OF ", k
print "SINGLE LINKAGE"
ml.plotClassify2D(None,X,r1[0])
plt.show()
print "COMPLETE LINKAGE"
ml.plotClassify2D(None,X,r2[0])
plt.show()
le:///Users/devonkenneally/Downloads/HW5.html 8/26
3/17/2017 HW5
K VALUE OF 5
SINGLE LINKAGE
COMPLETE LINKAGE
K VALUE OF 20
SINGLE LINKAGE
le:///Users/devonkenneally/Downloads/HW5.html 9/26
3/17/2017 HW5
COMPLETE LINKAGE
Complete and single linkage aren't too dierent, higher K results in closer clustering. The distance is noticable
smaller than that of K means
le:///Users/devonkenneally/Downloads/HW5.html 10/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 11/26
3/17/2017 HW5
X0 = W .dot( vh)
print"RESULT: ", X0
In[64]: X0s = []
K2 = [1,2,3,4,5,6,7,8,9,10]
for k in K2:
Xhat = U[:,0:k].dot( np.diag(S[0:k]) ).dot( Vh[0:k,:] ) # approx usi
ng k largest eigendir
MSE = np.mean( (X0 - Xhat)**2 )
X0s.append(MSE)
plt.plot(K2,X0s)
plt.show()
le:///Users/devonkenneally/Downloads/HW5.html 12/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 13/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 14/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 15/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 16/26
3/17/2017 HW5
In[73]: K3 = [5,10,50,100]
for k in K3:
for i in range(2):
Xhat = U[:,0:k].dot( np.diag(S[0:k]) ).dot( Vh[0:k,:] )
alpha = 2*np.median(np.abs(W[:,j]))
f1 = mu + alpha*Xhat[j,:]
f2 = mu - alpha*Xhat[j,:]
img = np.reshape( f1, (24,24) ) # reshape to square
img2 = np.reshape( f2, (24,24) ) # reshape to square
plt.imshow( img.T , cmap="gray") # draw each image
plt.show()
plt.imshow( img2.T , cmap="gray") # draw each image
plt.show()
le:///Users/devonkenneally/Downloads/HW5.html 17/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 18/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 19/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 20/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 21/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 22/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 23/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 24/26
3/17/2017 HW5
le:///Users/devonkenneally/Downloads/HW5.html 25/26
3/17/2017 HW5
In[79]: plt.show()
le:///Users/devonkenneally/Downloads/HW5.html 26/26