前面,我们已经解释并实现了部分的sklean算法,下表展示了sklean所能使用的聚类算法
cluster.AffinityPropagation ([damping, …]) |
Perform Affinity Propagation Clustering of data. |
cluster.AgglomerativeClustering ([…]) |
Agglomerative Clustering |
cluster.Birch ([threshold, branching_factor, …]) |
Implements the Birch clustering algorithm. |
cluster.DBSCAN ([eps, min_samples, metric, …]) |
Perform DBSCAN clustering from vector array or distance matrix. |
cluster.FeatureAgglomeration ([n_clusters, …]) |
Agglomerate features. |
cluster.KMeans ([n_clusters, init, n_init, …]) |
K-Means clustering |
cluster.MiniBatchKMeans ([n_clusters, init, …]) |
Mini-Batch K-Means clustering |
cluster.MeanShift ([bandwidth, seeds, …]) |
Mean shift clustering using a flat kernel. |
cluster.SpectralClustering ([n_clusters, …]) |
Apply clustering to a projection to the normalized laplacian. |
发现,还有几种未写出来,例如AP(亲和传播)聚类、FeatureAgglomeration聚类,以及我们的MInIBathK-means未单独写出来,代码和前面几篇类似。在这些算法中
需要初始聚类个数 | 不需要初始聚类个数 | |
初始点不同,精度相同 | Birch、Hierarchical | DBSCAN、MEAN-SHIFT、谱聚类 |
初始点不同,精度不同 | k-means、miniBathK-means |
我们实验统一使用iris数据集,在这些算法中,我们发现谱聚类表现较好也较稳定,但是在速度上未有K-means好,所以我们如果拿到数据可以先尝试k-means,在尝试其他算法,当然了这里还有其他聚类算法未列出,例如基于网格划分、基于神经网络(SMO),基于蚁群算法....这将在以后继续补充。为什么说可以先尝试k-means呢,因为一些文章指出其他聚类算法可以看做k-means。例如Dhillon I S, Guan Y, Kulis B. Kernel k-means:spectral clustering and normalized cuts[C]// Tenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2004:551-556.还有Ding C, He X. K-means clustering via principal component analysis[C]// International Conference on Machine Learning. ACM, 2004:29.等等