[机器学习复习笔记] Clustering 聚类 (K-means实现)
Cluster (KMeans实现)
1. KMeans 介绍及符号说明
给定样本集
- 平方差
其中 为当前簇 中的样本向量, 为簇 的均值向量
- 均值向量
-
样本向量
与均值向量 之间的距离, ,其中函数 可以是 闵可夫斯基距离,欧几里得距离 或者 曼哈顿距离。- 闵可夫斯基距离
- 欧几里得距离
当 取2时,闵可夫斯基距离即为欧几里得距离
- 曼哈顿距离
当 取1时,闵可夫斯基距离即为曼哈顿距离
2. KMeans算法过程
相似的样本被聚集到同一类别后,使得损失函数
具体迭代方法如下:

一般情况下,为了避免运行时间过长,会设置一个最大迭代轮数或者最小调整幅度阈值,当超过最大轮数或者小于最小阈值时,退出循环。
3. KMeans 代码
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score
df = datasets.load_iris()
X, y = df['data'], df['target']
X = MinMaxScaler().fit_transform(X)
# 设定初始质心 KMeans是无监督学习 为了让结果和target进行比较 人工设置初始质心
init = np.array([X[y==0].mean(axis=0), X[y==1].mean(axis=0), X[y==2].mean(axis=0)])
print("初始质心: \n", init, end="\n\n")
# 分成三类
model = KMeans(n_clusters=3, n_init=init)
# 模型训练
model.fit(X)
# 输出迭代之后的质心
centroid = model.cluster_centers_
print("经过迭代之后质心为: \n", centroid, end="\n\n")
# 测试集 测试结果显示
y_pred = model.predict(X)
# 模型准确率测试
accuracy = accuracy_score(y, y_pred)
print("测试准确率为: ", accuracy, end="\n\n")
一切都是命运石之门的选择,本文章来源于博客园,作者:MarisaMagic,出处:https://www.cnblogs.com/MarisaMagic/p/17811601.html,未经允许严禁转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通