将相似的对象归到同一个簇中,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。
K-Means 聚类的步骤如下:
-
随机的选取K个中心点,代表K个类别;
-
计算N个样本点和K个中心点之间的欧氏距离;
-
将每个样本点划分到最近的(欧氏距离最小的)中心点类别中——迭代1;
-
计算每个类别中样本点的均值,得到K个均值,将K个均值作为新的中心点——迭代2;
-
重复步骤2、3、4;
-
满足收敛条件后,得到收敛后的K个中心点(中心点不再变化)。
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
X, y_true = make_blobs(n_samples=300, centers=4,
cluster_std=0.60, random_state=0)
plt.scatter(X[:, 0], X[:, 1], s=50)
plt.show()
"""
KMeans(n_clusters=8, init='k-means++', n_init=10, ma