Kmeans聚类算法: k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。来自 百度百科
个人理解: k均值聚类算法(k-means clustering algorithm)即通过随机得到的K个聚类对象作为聚类中心,把每个对象分配给距离它最近的聚类中心。每次迭代聚类求解都是对不同的聚类中心进行聚类分组求解,直到满足某个条件,不再进行迭代。
import numpy as np
import matplotlib.pyplot as plt
import sklearn.datasets as ds
import matplotlib.colors
from sklearn.cluster import KMeans
# 随机生成数据
points_number = 50000
centers = 25
data,laber=ds.make_blobs(points_number,centers=centers,random_state=0)#point_numbers为样本总数3000,
#center为中心数20,random_state参数主要是为了保证每次都分割一样的训练集和测试机,大小可以是任意一个整数,在调参缓解,只要保证其值一致即可。
# 创建Figure
fig = plt.figure()
# 用来正常显示中文标签
matplotlib.rcParams['font.sans-serif'] = [u'SimHei']
# 用来正常显示负号
matplotlib.rcParams['axes.unicode_minus'] = False
# 原始点的分布
ax1 = fig.add_subplot(211)#把画布分为2行1列,area为从左往右从上往下第1块区域
plt.scatter(data[:,0],data[:,1],c=laber)#data[:,0]为一维所有数据,
plt.title(u'原始数据分布')
plt.sca(ax1)
# K-means聚类后
N = 4
model = KMeans(n_clusters = N,init = 'k-means++')#init: 初始簇中心的获取方法
y_pre = model.fit_predict(data)#计算中心并预测聚类索引
ax2 = fig.add_subplot(212)#add_subplot画子图,把画布分为2行1列,area为从左往右从上往下第2块区域
plt.scatter(data[:,0],data[:,1],c=y_pre)
plt.title(u'K-Means聚类')
plt.sca(ax2)
plt.show()