最近做一些文本挖掘的项目,其中用到了文本聚类相关算法,比如kmeans.
就kmeans算法做一些简单记录.
Kmeans是一种非常常见的聚类算法,
算法的核心思想非常简单.
1.给定K个类别,选取K个中心点
2.对于任意其他数据,计算他与这K个中心点的距离,选取距离最近的那个中心点作为该点的类别.
3.重新计算中心点,用同一类别的所有点的均值作为新的中心点,
4.重复步骤2,直到新的中心点与旧的中心点的距离再某个设定阈值内即可.
kmeans的几个关键问题:
1.首先K值如何选取,我一般是画图,通过PCA或TSNE,umap等降维算法,将数据降维到2维平面,然后看数据分布,进行K值选取.
2,中心点怎么选,基本都是随机选取,但是要多随机几次,防止选取到某些异常的离群点.然后根据聚类出的结果,再降维数据看看聚类结果.
3.距离一般采用欧氏距离.也有一些其他距离.
4.新的中心点,一般采用算术平均值作为均值化的方法.
Kmeans实战代码
from sklearn.cluster import KMeans
#建模
kmeans_model = KMeans(n_clusters=5)
s = kmeans_model .fit(train_data)
#打印每个类的中心点
print(clf.cluster_centers_)
#打印每个样本所属的类别
print(clf.labels_)
7426

被折叠的 条评论
为什么被折叠?



