K-Means

1 k-means介绍

K-Means 是一种非监督学习,解决的是聚类问题。K 代表的是 K 类,Means 代表的是中心,你可以理解这个算法的本质是确定 K 类的中心点,当你找到了这些中心点,也就完成了聚类。

那么请和我一起思考以下三个问题:

(1) 如何确定 K 类的中心点?

(2) 如何将其他点划分到 K 类中?

(3) 如何区分 K-Means 与 KNN?


2 K-Means 的工作原理

(1) 选取 K 个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;

(2) 将每个点分配到最近的类中心点,这样就形成了 K 个类,然后重新计算每个类的中心点;

(3) 重复第二步,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。


3 如何使用 sklearn 中的 K-Means 算法

KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')

主要的参数:

(1) n_clusters: 即 K 值,一般需要多试一些 K 值来保证更好的聚类效果。你可以随机设置一些 K值,然后选择聚类效果最好的作为最终的 K 值;

(2) max_iter: 最大迭代次数,如果聚类很难收敛的话,设置最大迭代次数可以让我们及时得到反馈结果,否则程序运行时间会非常长;

(3) n_init:初始化中心点的运算次数,默认是 10。

(4) init: 即初始值选择的方式,默认是采用优化过的k-means++ 方式。

(5) algorithm:k-means 的实现算法,有“auto” “full”“elkan”三种。一般来说建议直接用默认的"auto"。


demo 后续补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。