Demonstration of k-means clustering algorithm using python
import numpy as np
import matplotlib.pyplot as plt
def compare(a,b):
if len(a)!=len(b):
return True
for i in range(len(a)):
if a[i]!=b[i]:
return True
return False
dataset=list(np.random.normal(12,1,30))
dataset+=list(np.random.normal(12,10,30))
dataset+=list(np.random.normal(12,100,30))
k=int(input('Enter the number of clusters:'))
centroids=[]
newcentroids=dataset[:k]
clusters={}
while (compare(centroids,newcentroids)):
p=plt
for i in range(k):
clusters[i]=[]
centroids=newcentroids
newcentroids=[]
for i in range(len(dataset)):
key=0
min=abs(dataset[i]-centroids[0])
for j in range(1,len(centroids)):
d=abs(centroids[j]-dataset[i])
if min>d:
min=d
key=j
clusters[key].append(dataset[i])
for key in clusters:
if len(clusters[key])!=0:
newcentroids.append(float(sum(clusters[key]))/float(len(clusters[key])))
else:
newcentroids.append(0)
for key in clusters:
p.plot(clusters[key],'o',color='#'+str(np.random.randint(111111,999999)))
for i in clusters:
print(i,':',clusters[i])

Comments
Post a Comment