1.简介
Canopy聚类算法是一个将对象分组到类的简单、快速、精确地方法。每个对象用多维特征空间里的一个点来表示。这个算法使用一个快速近似距离度量和两个距离阈值T1 > T2 处理。
Canopy聚类很少单独使用, 一般是作为k-means前不知道要指定k为何值的时候,用Canopy聚类来判断k的取值
2.算法步骤
输入:所有点的集合D, 超参数:T1 , T2 , 且 T1 > T2
输出:聚类好的集合
注意
- 当T1过大时,会使许多点属于多个Canopy,可能会造成各个簇的中心点间距离较近,各簇间区别不明显;
- 当T2过大时,增加强标记数据点的数量,会减少簇个个数;
- T2过小,会增加簇的个数,同时增加计算时间;
一幅图说明算法:
内圈的一定属于该类, 外圈的一定不属于该类, 中间层的可能属于别的类(因为不止一个聚类中心, 他可能属于别的类的内圈);
3.Python实现
对iris数据集做Canopy聚类, 半径分别设置为1和2
#%% Canopy聚类 import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np import copy class Solution(object): def Canopy(self, x, t1, t2): ''' Parameters ---------- x : array 数据集. t1 : float 外圈半径. t2 : float 内圈半径. Returns ------- result: list. 聚好类的数据集 ''' if t1