kmeans中的k的含义_k-means聚类算法简介

k-means是一种基于划分的聚类算法,通过选择k个初始中心点并迭代更新簇中心,使得数据点与最近簇中心的距离平方和最小。在Spark MLlib中,KMeans类提供了训练和预测功能,允许用户设置簇数量和迭代次数。算法优点在于简单高效,但需要预设k值,对初始点和异常值敏感,且仅适用于凸形簇。
摘要由CSDN通过智能技术生成

文章来源:加米谷大数据

k-means 算法是一种基于划分的聚类算法,它以 k 为参数,把 n 个数据对象分成 k 个簇,使簇内具有较高的相似度,而簇间的相似度较低。

1. 基本思想

k-means 算法是根据给定的 n 个数据对象的数据集,构建 k 个划分聚类的方法,每个划分聚类即为一个簇。该方法将数据划分为 n 个簇,每个簇至少有一个数据对象,每个数据对象必须属于而且只能属于一个簇。同时要满足同一簇中的数据对象相似度高,不同簇中的数据对象相似度较小。聚类相似度是利用各簇中对象的均值来进行计算的。
k-means 算法的处理流程如下。首先,随机地选择 k 个数据对象,每个数据对象代表一个簇中心,即选择 k 个初始中心;对剩余的每个对象,根据其与各簇中心的相似度(距离),将它赋给与其最相似的簇中心对应的簇;然后重新计算每个簇中所有对象的平均值,作为新的簇中心。
不断重复以上这个过程,直到准则函数收敛,也就是簇中心不发生明显的变化。通常采用均方差作为准则函数,即最小化每个点到最近簇中心的距离的平方和。
新的簇中心计算方法是计算该簇中所有对象的平均值,也就是分别对所有对象的各个维度的值求平均值,从而得到簇的中心点。例如,一个簇包括以下 3 个数据对象 {(6,4,8),(8,2,2),(4,6,2)},则这个簇的中心点就是 ((6+8+4)/3,(4+2+6)/3,(8+2+2)/3)=(6,4,4)。
k-means 算法使用距离来描述两个数据对象之间的相似度。距离函数有明式距离、欧氏距离、马式距离和兰氏距离,最常用的是欧氏距离。
k-means 算法是当准则函数达到最优或者达到最大的迭代次数时即可终止。当采用欧氏距离时,准则函数一般为最小化数据对象到其簇中心的距离的平方和,即

1e936105fd60f2f90bbd40b48ed312f0.png


其中,k 是簇的个数,

K-Means 聚类算法是一种基于距离的聚类算法,它将数据集分成 K 个簇,每个簇的心点就是该簇内所有点的质心。K-Means 聚类算法的步骤如下: 1. 随机选择 K 个点作为簇的心点。 2. 计算每个样本点到 K 个心点的距离,将其分配到最近的簇。 3. 对于每个簇,重新计算该簇的心点。 4. 重复步骤 2 和 3,直到簇不再发生变化或达到最大迭代次数。 下面是使用 K-Means 聚类算法对鸢尾花数据进行聚类的 Python 代码: ``` python import numpy as np from sklearn.cluster import KMeans from sklearn.datasets import load_iris import matplotlib.pyplot as plt # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 定义 K 值和最大迭代次数 k = 3 max_iter = 300 # 使用 K-Means 聚类算法 kmeans = KMeans(n_clusters=k, max_iter=max_iter) kmeans.fit(X) # 获取聚类结果和簇的心点 labels = kmeans.labels_ centers = kmeans.cluster_centers_ # 绘制聚类结果图 plt.scatter(X[:, 0], X[:, 1], c=labels) plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='*', s=200) plt.title('K-Means Clustering') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.show() ``` 上述代码,首先加载鸢尾花数据集,然后定义 K 值和最大迭代次数。接着使用 K-Means 聚类算法,获取聚类结果和簇的心点。最后绘制聚类结果图,其样本点的颜色表示它所属的簇,红色星号表示每个簇的心点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值