Scikit-learn---5.聚类模型

(一)通用方法、参数

1.通用方法

  1. get_params([deep]):返回模型的参数。

    1. deep: 如果为True,则可以返回模型参数的子对象。
  2. set_params(**params):设置模型的参数。

    1. params:待设置的关键字参数。
  3. fit(X[, y, sample_weight]) :训练模型。

    1. X :样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    2. y :样本的标签集合。它与X 的每一行相对应。
    3. sample_weight:样本的权重。其形状为 [n_samples,],每个元素代表一个样本的权重。
  4. predict(X, sample_weight):返回每个样本所属的簇标记。

    1. X :样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    2. sample_weight:样本的权重。其形状为 [n_samples,],每个元素代表一个样本的权重。
  5. fit_predict(X[, y, sample_weight]) :训练模型并执行聚类,返回每个样本所属的簇标记。

    1. X :样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    2. y :样本的标签集合。它与X 的每一行相对应。
    3. sample_weight:样本的权重。其形状为 [n_samples,],每个元素代表一个样本的权重。
  6. transform(X):将数据集 X 转换到cluster center space 。

    cluster center space 中,样本的维度就是它距离各个聚类中心的距离。

    1. X :样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
  7. fit_transform(X[, y, sample_weight]):训练模型并执行聚类,将数据集 X 转换到cluster center space 。

    1. X :样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    2. y :样本的标签集合。它与X 的每一行相对应。
    3. sample_weight:样本的权重。其形状为 [n_samples,],每个元素代表一个样本的权重。

2.通用参数

  1. n_jobs:一个正数,指定任务并形时指定的 CPU数量。

    如果为 -1 则使用所有可用的 CPU

  2. verbose:一个正数。用于开启/关闭迭代中间输出日志功能。

    1. 数值越大,则日志越详细。
    2. 数值为0或者None,表示关闭日志输出。
  3. max_iter :一个整数,指定最大迭代次数。

    如果为None则为默认值(不同solver的默认值不同)。

  4. tol:一个浮点数,指定了算法收敛的阈值。

  5. random_state:一个整数或者一个RandomState实例,或者None

    1. 如果为整数,则它指定了随机数生成器的种子。
    2. 如果为RandomState实例,则指定了随机数生成器。
    3. 如果为None,则使用默认的随机数生成器。

一、KMeans

二、DBSCAN

class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric='euclidean', 
metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)

1.参数

  1. eps:$epsilon$参数,用于确定邻域大小。

  2. min_samples:$MinPts$参数,用于判断核心对象。

  3. metric:一个字符串或者可调用对象,用于计算距离。

    如果是字符串,则必须是metrics.pairwise.calculate_distance中指定的。

  4. metric_params:一个字典,当metric 为可调用对象时,为metric 提供关键字参数。

  5. algorithm:一个字符串,用于计算两点间距离并找出最近邻的点。可以为:

    1. 'auto':由算法自动选取合适的算法。
    2. 'ball_tree':用ball树来搜索。
    3. 'kd_tree':用kd树来搜索。
    4. 'brute':暴力搜索。
  6. leaf_size:一个整数,用于指定当algorithm=ball_tree或者kd_tree时,树的叶结点大小。

    该参数会影响构建树、搜索最近邻的速度,同时影响存储树的内存。

  7. p:一个浮点数,指定闵可夫斯基距离的$p$值。

  8. n_jobs:指定并行度。

2.属性

  1. core_sample_indices_:一个形状为[n_core_samples,] 的数组,给出了核心样本在原始训练集中的位置。

  2. components_:一个形状为[n_core_samples,n_features] 的数组,给出了核心样本的一份拷贝

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

    对于噪音样本,其簇标记为 -1。

3.方法

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

4.考察$epsilon$参数的影响

  1. ARI指数随着 $epsilon$的增长,先上升后保持平稳最后断崖下降。 断崖下降是因为产生的训练样本的间距比较小,最远的两个样本点之间的距离不超过 30。当$epsilon$过大时,所有的点都在一个邻域中。

  2. 核心样本数量随着$epsilon$的增长而上升。这是因为随着$epsilon$的增长,样本点的邻域在扩展,则样本点邻域内的样本会更多,这就产生了更多满足条件的核心样本点。但是样本集中的样本数量有限,因此核心样本点数量的增长到一定数目后稳定。

5.考察$MinPts$参数的影响

  1. ARI指数随着$MinPts$的增长,平稳的下降。

  2. 核心样本数量随着$MinPts$的增长基本上线性下降。这是因为随着$MinPts$的增长,样本点的邻域中必须包含更多的样本才能使它成为一个核心样本点。因此产生的核心样本点越来越少。

三、MeanShift

四、AgglomerativeClustering

五、BIRCH

六、GaussianMixture

七、SpectralClustering

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/12109346.html