第九章讲了很多聚类方法,以及聚类的好坏的度量方式,Kmeans比较容易实现,比较常用的一种方法。
通常来讲,我们希望聚类的结果,类内相似度高,类间差异度大。
数据以及代码: https://github.com/qdbszsj/Kmeans
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset=pd.read_csv('/home/parker/watermelonData/watermelon_4.csv', delimiter=",")
data=dataset.values
print(dataset)
import random
def distance(x1,x2):
return sum((x1-x2)**2)
def Kmeans(D,K,maxIter):#return K points and the belongings of every points
m,n=np.shape(D)
if K>=m:return D
initSet=set()
curK=K
while(curK>0):
randomInt=random.randint(0,m-1)
if randomInt not in initSet:
curK-=1
initSet.add(randomInt)
U=D[list(initSet),:]
C=np.zeros(m)
curIter=maxIter
while curIter>0:
curIter-=1
for i in range(m):
p=0
minDistance=distance(D[i],U[0])
for j in range(1,K):