聚类算法——kmeans

本文详细介绍了聚类算法中的k-means方法,包括聚类的基本概念、k-means的工作原理、距离衡量标准(如欧几里得距离和余弦距离)、聚类参数n_clusters的重要性以及聚类效果的评估指标——轮廓系数。同时,文章提供了一个代码实例,展示如何在实际操作中运用k-means,并提到了在大数据场景下聚类的策略和模型评估的其他方法,如卡林斯基—哈拉巴斯指数。
摘要由CSDN通过智能技术生成

聚类属于无监督学习:训练数据中只有x没有y

聚类算法又叫无监督分类,目标是将数据划分为有意义的簇,将所有样本按照K个质心进行聚类

质心:一类坐标的平均点

聚类过程:先随机选取K个质心,根据质心生成簇,计算簇的质心,找到新的质心,直到簇与质心不在变化,聚类完成

聚类与分类:

聚类:在未知数据上进行划分,无监督

分类:已知数据进行划分,有监督

聚类使用场景:使用聚类找到同类客户,实现精准营销

聚类中使用距离衡量样本之间的相似性,簇中样本距离越小样本相似度高

kmeans中通常使用欧几里得距离,在文本处理中通常使用余弦距离

盲点:在聚类中没有损失函数的说法,损失函数只有在需要求参数的模型中使用,不求参数的模型不适用损失函数

n_clusters表示聚类的数量,是聚类中的重要参数

聚类模型评估:(主要依据实际业务)使用轮廓系数

轮廓系数:计算簇内差异与簇间差异,表示范围是[-1,1],越大说明效果越好

代码实例:

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
x,y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=1) #自己创建数据集500个数据,二维数据,具有随机性使用random_state固定数据

Kmeans聚类算法是一种无监督学习算法,用于将数据集划分为不同的簇。它是一个迭代算法,通过计算每个数据点与簇中心的距离,将数据点分配到最近的簇中心。然后,根据分配的数据点更新簇中心。重复这个过程,直到簇中心不再变化或达到预设的迭代次数。 下面是一个使用Python实现Kmeans聚类算法的示例: ``` python import numpy as np import matplotlib.pyplot as plt # 生成随机数据 np.random.seed(0) X = np.random.randn(100, 2) # 初始化K个簇中心 K = 3 centers = X[np.random.choice(len(X), K, replace=False)] # 迭代聚类 for i in range(10): # 计算每个数据点最近的簇中心 distances = np.linalg.norm(X[:, np.newaxis, :] - centers, axis=2) labels = np.argmin(distances, axis=1) # 更新簇中心 for k in range(K): centers[k] = np.mean(X[labels == k], axis=0) # 可视化聚类结果 colors = ['r', 'g', 'b'] for k in range(K): plt.scatter(X[labels == k, 0], X[labels == k, 1], c=colors[k]) plt.scatter(centers[:, 0], centers[:, 1], marker='*', s=200, c='#050505') plt.show() ``` 在这个例子中,我们生成了一个随机数据集,然后初始化了3个簇中心。然后,我们执行10次迭代,计算每个数据点最近的簇中心,并根据分配的数据点更新簇中心。最后,我们可视化聚类结果,其中每个簇用不同的颜色表示,簇中心用星号表示。 Kmeans聚类算法是一种简单有效的聚类算法,但它有一些缺点。例如,它需要预先指定簇的数量K,这可能不是很容易确定。此外,它对初始簇中心的选择很敏感,可能会导致陷入局部最优解。因此,在实际应用中,需要对它进行改进,例如Kmeans++算法和层次聚类算法等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值