🤵♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱🏍 🙋♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)
【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (一) 作者: 计算机魔术师 版本: 1.0 ( 2023.8.27 )
摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅
该文章收录专栏 [✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]
@toc
K-means聚类算法是一种常用的无监督学习算法,用于将数据集划分成K个不同的簇。它的目标是最小化数据点与所属簇中心之间的平方距离和。
以下是K-means聚类算法的详细步骤及数学公式推导:
步骤1: 数据预处理
步骤2: 初始化中心点
步骤3: 分配样本到簇
步骤4: 更新簇中心点
步骤5: 重复步骤3和4
步骤6: 输出聚类结果
总的来说,K-means算法通过每个数据点的本身距离位置,根据所确定的簇数不断更新中心点,找到一种部分中心之间在一定阈值下有着相同类似特征的群体,这是根据欧几里得距离来衡量的,这其中有两种问题,其可以从名字得出,
接下来,我将为您提供使用Python实现K-means聚类算法的经典案例。
使用sklearn库实现K-means聚类算法
from sklearn.datasets import loadiris
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
iris=loadiris()
irisdata=iris['data']
#提取数据集中的特征
iristarget=iris['target']
#提取数据集中的标签
iris names=iris['featurenames']
#提取特征名
scale=MinMaxScaler()
fit(iris data)
# 训练规则
iris dataScale=scale.transform(iris_data)
# 应用规则
kmeans=KMeans(n_clusters = -3,random_state=123)
fit(iris dataScale)
#构建并训练模型
print("构建的K-Means模型为: \n", kmeans)
手撕模板实现K-means聚类算法
import numpy as np
def kmeans(X, n_clusters, max_iter=100):
n_samples, n_features = X.shape
# 初始化中心点
center_indices = np.random.choice(n_samples, size=n_clusters, replace=False)
centers = X[center_indices]
for _ in range(max_iter):
# 分配样本到簇
distances = np.linalg.norm(X[:, np.newaxis] - centers, axis=-1)
labels = np.argmin(distances, axis=-1)
# 更新簇中心点
new_centers = np.array([np.mean(X[labels == k], axis=0) for k in range(n_clusters)])
# 判断是否收敛
if np.all(centers == new_centers):
break
centers = new_centers
return labels
# 使用手撕模板实现K-means聚类算法
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
labels = kmeans(X, n_clusters=2)
print(labels)
# [0 0 0 1 1 1]
关于K-means聚类算法的学习资源,以下是一些推荐的参考资料:
🤞到这里,如果还有什么疑问🤞
🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳