K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。
K-均值是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为:
1.首先选择?个随机的点,称为聚类中心(cluster centroids);
2.对于数据集中的每一个数据,按照距离?个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。
3.计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
4.重复步骤 2-4 直至中心点不再变化。
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
pred = KMeans(n_clusters=2, random_state=0).fit_predict(X) #聚成2类
print(pred) # [1 1 1 0 0 0]
plt.scatter(X[:,0],X[:,1],c=pred)
plt.show()
# print(kmeans.labels_) # [1 1 1 0 0 0]
# print(kmeans.predict([[0, 0], [12, 3]])) # [1 0]
# print(kmeans.cluster_centers_) # [[10. 2.] [ 1. 2.]]
结果图