三、MeanShift

  1. MeanShiftscikit-learn提供的一种密度聚类模型。其原型为:

    1. class sklearn.cluster.MeanShift(bandwidth=None, seeds=None, bin_seeding=False,
    2. min_bin_freq=1, cluster_all=True, n_jobs=None)
    • bandwidth:一个浮点数,指定带宽参数。

      如果未指定,则通过sklearn.cluster.estimate_bandwith() 函数来自动计算。

    • seeds:一个形状为[n_samples,n_features] 的数组,用于初始化核函数。

      如果未指定,则通过sklearn.cluster.get_bin_seeds() 函数来自动计算。

    • bin_seeding:一个布尔值。

      • 如果为True,则并不会使用所有的点来计算核函数,而是使用网格边界上的点(网格宽度为带宽)来计算。这会加速算法的执行,因为核函数的初始化需要的点大大降低。
      • 如果为False,则使用所有的点来计算核函数。
    • min_bin_freq:一个整数值,指定有效网格包含的数据点的最少数量。

      bin_seeding=True 时,仅仅接收那些网格内包含超过min_bin_freq 个数据点的网格。

    • cluster_all:一个布尔值,指定是否对所有数据点进行聚类。

      • 如果为False,则对离群点不聚类,将离群点的簇标记设置为-1
      • 如果为True,则对离群点也聚类,将离群点划分到离它最近的簇中。
    • n_jobs:一个整数,指定并行度。
  2. 属性:

    • claster_centers_:一个形状为[n_clusters,n_features] 的数组,给出了每个簇中心的坐标。

    • labels_:一个形状为[n_samples,] 的数组,给出了每个样本所属的簇标记。

      如果cluster_all=False,则对于离群样本,其簇标记为 -1。

  3. 方法:

    • fit(X[, y]):训练模型。

    • fit_predict(X[, y]):训练模型并执行聚类,返回每个样本所属的簇标记。

    • predict(X):对每个样本预测其簇标记。

      每个样本距离最近的簇就是该样本所属的簇。