肘方法确定聚类数k_K-means聚类最优k值的选取

最近做了一个数据挖掘的项目,挖掘过程中用到了K-means聚类方法,但是由于根据行业经验确定的聚类数过多并且并不一定是我们获取到数据的真实聚类数,所以,我们希望能从数据自身出发去确定真实的聚类数,也就是对数据而言的最佳聚类数。为此,我查阅了大量资料和博客资源,总结出主流的确定聚类数k的方法有以下两类。1.手肘法1.1 理论手肘法的核心指标是SSE(sum of the squared errors...
摘要由CSDN通过智能技术生成

最近做了一个数据挖掘的项目,挖掘过程中用到了K-means聚类方法,但是由于根据行业经验确定的聚类数过多并且并不一定是我们获取到数据的真实聚类数,所以,我们希望能从数据自身出发去确定真实的聚类数,也就是对数据而言的最佳聚类数。为此,我查阅了大量资料和博客资源,总结出主流的确定聚类数k的方法有以下两类。

1.手肘法
1.1 理论
手肘法的核心指标是SSE(sum of the squared errors,误差平方和),

b166860a0a8eb2db634f487889b9254a.png

其中,Ci是第i个簇,p是Ci中的样本点,mi是Ci的质心(Ci中所有样本的均值),SSE是所有样本的聚类误差,代表了聚类效果的好坏。

手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。当然,这也是该方法被称为手肘法的原因。

1.2 实践

我们对预处理后数据.c

  • 6
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: K-Means 聚类是一种常用的无监督学习算,它可以将据集划分为 K 个不同的类别,其中 K 是预先设定的。在 K-Means中,我们需要指定 K 和距离计算方法,然后通过迭代的方式不断调整聚类中心,直到达到某个停止准则为止。 下面我们以鸢尾花据集为例,来实现 K-Means 聚类。 首先,我们需要导入据集并进行预处理。这里我们使用 sklearn 中的 load_iris 函来加载据集,并使用 MinMaxScaler 对据进行归一化处理: ``` python from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler # 加载据集 iris = load_iris() X = iris.data # 据归一化 scaler = MinMaxScaler() X = scaler.fit_transform(X) ``` 接下来,我们需要实现 K-Means。这里我们使用 scikit-learn 中的 KMeans 类来实现: ``` python from sklearn.cluster import KMeans # 设置 K k = 3 # 初始化 KMeans 模型 kmeans = KMeans(n_clusters=k) # 训练模型并预测结果 y_pred = kmeans.fit_predict(X) ``` 最后,我们可以使用 Matplotlib 来可视化聚类结果: ``` python import matplotlib.pyplot as plt # 绘制聚类结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("K-Means Clustering") plt.show() ``` 运行以上代码,即可得到鸢尾花据的聚类结果。 ### 回答2: K-Means聚类是一种常用的无监督学习方法,能够对据进行聚类。在K-Means中,通过计算据点与聚类中心的距离,将据点归类到距离最近的聚类中心,从而实现据的聚类。 鸢尾花据是机器学习中常用的据集之一,包含了150个样本,每个样本有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些样本被分为三个类别,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。 使用K-Means聚类对鸢尾花据进行聚类的过程如下: 1. 随机选择K个初始聚类中心。K代表要将据聚成的类别,这里我们选择K=3,即将鸢尾花据聚成3个类别。 2. 对每个据点,计算其与各个聚类中心的距离,并将其归类到距离最近的聚类中心。 3. 更新每个聚类中心的位置,将其移动到所归类据点的平均位置。 4. 重复步骤2和3,直到聚类中心不再发生变化或达到预定的迭代次。 通过上述步骤,可以将鸢尾花聚类成3个类别。每个类别中的据点具有相似的特征,并且与其他类别中的据点的特征有较大的区别。 K-Means聚类的优点是简单易实现,计算效率高。然而,这种算对初始聚类中心的选择较为敏感,可能会收敛到局部最优解。因此,在应用K-Means时,需要进行多次实验,以避免得到不理想的聚类结果。同时,K-Means对于离群点比较敏感,离群点可能会影响聚类结果的准确性。 ### 回答3: K-Means 聚类是一种常用的无监督学习算,主要用于将据集中的样本划分成不同的簇。下面以实现鸢尾花据的聚类为例进行解释。 首先,我们需要加载鸢尾花据集,该据集包含了150个样本,每个样本有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。我们将这些样本表示为一个150x4的矩阵。 然后,我们需要确定簇的量 k,即要将据集划分成几个簇。在这里,我们可以根据经验或者领域知识来选择一个合适的。 接下来,我们需要初始化 k 个簇的中心点。可以随机从据集中选取 k 个样本作为初始的簇中心点。 然后,对于每个样本,我们计算其与各个簇中心点的距离,并将其分配给距离最近的簇中心点所在的簇。 接着,我们更新每个簇的中心点,即将每个簇中的样本的特征均作为新的簇中心点。 最后,我们重复执行以上两个步骤,直到簇中心点不再发生变化,或者到达预定的迭代次。 完成聚类后,我们可以根据簇的中心点和每个样本所属的簇来进行结果的分析和可视化。例如,可以绘制不同簇中心点的特征分布图,以及将样本点按簇的标签进行颜色分类的散点图等。 K-Means 聚类能够有效地将据集划分为不同的簇,实现了对样本的聚类。在鸢尾花据集这个例子中,我们可以根据花萼和花瓣的特征将鸢尾花分为不同的类别,从而更好地了解这些花的分类情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值