Kmeans、KNN、DBSCAN的区别
1、Kmeans
是无监督学习,是一种聚类算法。
步骤:
1.初始化一个常数K,也就是最终的聚类类别数,随机选取K个质心;
2.计算每个样本与质心的相似度,把它归到最相似的类中;
3.重新计算每个类的质心,重复上述步骤,直到质心不再改变;
4.最后输出每个样本所属的类以及每个类的质心。
注:可以通过手肘法,取最佳的K值。
时间复杂度:\(O(n)\)
2、KNN
是有监督学习,一种基于近邻的算法,可以解决分类任务和回归任务:
- 分类任务: 步骤:
- 1.计算出样本数据和待分类数据的距离;
- 2.为待分类数据选择K个与其距离最小的样本;
- 3.统计出K个样本中大多数样本所属的分类;
- 4.这个分类就是待分类数据所属的分类。
- 回归任务: 通常对周围的K个点,求平均得到最后预测点的回归值。
3、DBSCAN
是无监督学习,一种基于密度的聚类算法。
步骤:
1.指定邻域半径Eps和最小点数MinPts(半径内的密度值)。若当前点的半径范围内密度大于等于设定密度值,则设置当前点为核心点;若某点刚好在某核心点的半径边缘上,则设定此点为边界点;若某点既不是核心点又不是边界点,则此点为噪声点。
2.删除噪声点。
3.将距离在扫描半径内的所有核心点赋予边进行连通。
4.每组连通的核心点标记为一个簇。
5.将所有边界点指定到与之对应的核心点的簇中。
优点:
可以处理不同大小或形状的簇,不容易受噪声的影响。
时间复杂度:\(O(n^2)\)
参考资料:
聚类算法