这是一个非常简单的聚类算法,算法的目的就是找到这些中心点的合适坐标,使得所有样本到其分组中心点距离的平方和最小.
K-means 的中心点向量不一定是训练样本中某成员的位置
import numpy as np
from sklearn.cluster import KMeans # 引入K-means模型
# 1.训练和预测
X = np.array([[1,2],[1,4],[1,0],
[4,2],[4,4],[4,0]])
kmeans = KMeans(n_clusters=2,random_state=0).fit(X) # 训练
print(kmeans.labels_) # 训练数据的聚类结果
print(kmeans.predict([[0,0],[4,4]])) # 预测数据的类型
# 2.中心点与收敛值
print(kmeans.cluster_centers_) # 打印收敛中心
print(kmeans.inertia_) # 打印最短距离C值
# 3.查询距离
print(kmeans.transform([[4,2],[4,4]])) # 查询两个向量到中心点的距离
# 4.score()函数
# 测试数据离中心点越远分值越低
print(kmeans.score([2,2],[5,3]))
# Out -3.0 离中心点较远
print(kmeans.score([1,2],[4,2]))
# Out -0.0 测试数据即中心点
# 5.常用的初始化参数
'''
n_clusters: 把整体数据集分为几个组
init: 初始中心结点的选择策略
max_iter: 最多进行几次重新计算中心点的迭代
tol: inertia_(C值)小于多少时认为已经收敛并停止迭代
n_init: 进行几轮结点初始化和迭代
'''