数据挖掘实战-基于KMeans算法对超市客户进行聚类分群

K-means聚类算法是一种常用的无监督机器学习方法,用于将数据集划分为若干个簇(cluster)。在Python中,我们可以手动实现K-means算法,不依赖于任何第三方库。以下是一个简单的步骤说明: 1. **初始化**: - 首先,随机选择K个点作为初始聚类中心(Centroids)。 - 假设数据集为`data`,每行代表一个样本。 2. **分配到最近的簇**: - 对于每个数据点,计算其与所有聚类中心之间的欧氏距离。 - 将每个点分配给距离最近的聚类中心所在的簇。 3. **更新聚类中心**: - 对于每个簇,计算所有属于该簇的数据点的均值,这个均值即为新的聚类中心。 4. **迭代**: - 重复步骤2和3,直到聚类中心不再改变,或者达到预设的最大迭代次数。 5. **终止条件**: - 可以设置两个阈值:误差阈值(如聚类中心变化小于某个阈值)或迭代次数阈值。 以下是一个简化的Python代码实现: ```python import numpy as np def kmeans(data, k, max_iter=100, tolerance=1e-6): # 初始化随机聚类中心 centroids = data[np.random.choice(len(data), k, replace=False)] for _ in range(max_iter): # 分配数据点到最近的簇 clusters = [[] for _ in range(k)] for point in data: distances = np.linalg.norm(point - centroids, axis=1) cluster_index = np.argmin(distances) clusters[cluster_index].append(point) # 更新聚类中心 new_centroids = [np.mean(cluster, axis=0) for cluster in clusters] # 检查是否达到收敛条件 if np.linalg.norm(new_centroids - centroids, 'fro') < tolerance: break centroids = new_centroids return clusters, centroids # 使用数据集 data = ... # 假设这是一个二维的numpy数组 clusters, centroids = kmeans(data, k=3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾派森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值