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 后续补充。
网友评论