K-Means实现
import numpy as np
import matplotlib.pyplot as plt
def DataSet():
data = np.loadtxt('data.txt', dtype=np.float32)
return data
# 欧氏距离计算
def distEclud(x,y):
return np.sqrt(np.sum((x-y)**2)) # 计算欧氏距离
# 为给定数据集构建一个包含K个随机质心的集合
def randCent(data,k):
m,n = data.shape
centroids = np.zeros((k,n))
label = np.zeros(data.shape[0])
for i in range(k):
index = int(np.random.uniform(0,m))
centroids[i,:] = data[index,:]
label[index] = i+1
return centroids,label
def KMeans(data,k):
"""
:param data:数据
:param k:类簇个数
:return:
"""
# 第1步 初始化centroids(聚类中心)
centroids,label = randCent(data, k)