K-means聚类(一)
我们的问题是:怎么给一堆数据分类? 首先,每一类都叫一个簇(Cluster),如何才能算作是同一类能? 我们有K-means聚类,DBSCAN(Density-Based Spatial Clustering of Application with Noise),hierarchical clustering等等这些聚类算法,这些算法区分同一类的方式都不同,比如DBSCAN,它是以一定的密度进行传播,将传播到的点都聚成一类,在某些场景,比如簇与簇之间有明显分隔的,DBSCAN显然要比k-means好。 下面是用k-means和DBSCAN划分一个笑脸的不同效果。 k-means算法 DBSCAN算法 不过对于均匀分布的数据,指定簇个数的k-means就要优于依靠密度发展的DBSCAN了。 k-means算法 DBSCAN算法 这些动画的演示你可在https://www.naftaliharris.com/blog/visualizing-k-means-clustering/上做到 使用pycharm手写k-means聚类算法 思路: ①随机生成1000个二维坐标的样本点 ②指定划分成5类 ③确定收敛阈值为0.2 ④从1000个样本点中随机选出5个样本点,作为5个簇的中心 ⑤每个中心为一个Cluster ⑥遍历1000个点,分别计算它们到5个中心点之间的距离,对每个点