聚类¶
K-Means 聚类¶
- class graspologic.cluster.KMeansCluster[源代码]¶
- ari_: list[float] | None¶
KMeans 聚类。
它计算从单一组件到
max_clusters的所有可能模型。 当真实标签已知时,最佳模型由具有最高调整兰德指数(ARI)的模型给出。 否则,最佳模型由具有最高轮廓分数的模型给出。- Parameters:
- max_clustersint, default=2.
要考虑的最大集群数。必须为
>=2。- random_stateint, RandomState instance or None, optional (default=None)
如果是整数,
random_state是随机数生成器使用的种子; 如果是 RandomState 实例,random_state是随机数生成器; 如果是 None,随机数生成器是np.random使用的 RandomState 实例。
- Attributes:
- n_clusters_int
最佳聚类数量。如果给出了y,则基于最大的ARI。否则,基于最高的轮廓分数。
- model_KMeans object
拟合的KMeans对象使用了
n_clusters_。- silhouette_list
为所有可能的聚类数量计算的轮廓分数列表,由
range(2, max_clusters)给出。- ari_list
仅在给定 y 时计算。为
range(2, max_clusters)给出的所有可能的聚类数计算的 ARI 值列表。
- fit(X, y=None)[source]¶
将kmeans模型拟合到数据。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- self
- Parameters:
X (ndarray)
y (ndarray | None)
- Return type:
- fit_predict(X, y=None)¶
拟合模型并根据最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
- get_metadata_routing()¶
获取此对象的元数据路由。
请查看用户指南了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
一个
MetadataRequest封装了路由信息。
- get_params(deep=True)¶
获取此估计器的参数。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器及其包含的子对象(如果也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X, y=None)¶
基于最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples, ), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
高斯混合模型聚类¶
- class graspologic.cluster.GaussianCluster[源代码]¶
高斯混合模型 (GMM)
高斯混合模型概率分布的表示。 此类允许估计高斯混合分布的参数。它计算从一个组件到
max_components的所有可能模型。最佳模型由最低的BIC分数给出。- Parameters:
- min_componentsint, default=2.
要考虑的最小混合组件数量(除非
max_components为None,在这种情况下,这是要考虑的最大组件数量)。如果max_componens不为None,则min_components必须小于或等于max_components。- max_componentsint or None, default=None.
要考虑的最大混合组件数量。必须大于或等于
min_components。- covariance_type{'all' (default), 'full', 'tied', 'diag', 'spherical'}, optional
描述要使用的协方差参数类型的字符串或列表/数组。 如果是字符串,它必须是以下之一:
- 'all'
考虑所有协方差结构在['spherical', 'diag', 'tied', 'full']中
- 'full'
每个组件都有自己的通用协方差矩阵
- 'tied'
所有组件共享相同的通用协方差矩阵
- 'diag'
每个组件都有其自己的对角协方差矩阵
- 'spherical'
每个组件都有其自己的单一方差
- If a list/array, it must be a list/array of strings containing only
'spherical', 'tied', 'diag', 和/或 'full'.
- tolfloat, defaults to 1e-3.
收敛阈值。当下界平均增益低于此阈值时,EM迭代将停止。
- reg_covarfloat, defaults to 1e-6.
非负正则化添加到协方差的对角线上。 确保所有协方差矩阵都是正定的。
- max_iterint, defaults to 100.
执行的EM迭代次数。
- n_initint, defaults to 1.
执行初始化的次数。保留最佳结果。
- init_params{'kmeans', 'random'}, defaults to 'kmeans'.
用于初始化权重、均值和精度的方法。 必须是以下之一:
'kmeans' : responsibilities are initialized using kmeans. 'random' : responsibilities are initialized randomly.
- random_stateint, RandomState instance or None, optional (default=None)
如果是整数,
random_state是随机数生成器使用的种子; 如果是 RandomState 实例,random_state是随机数生成器; 如果是 None,随机数生成器是np.random使用的 RandomState 实例。
- Attributes:
- n_components_int
基于BIC的最佳组件数量。
- covariance_type_str
基于BIC的最优协方差类型。
- model_GaussianMixture object
拟合的高斯混合对象,具有最佳组件数量和最佳协方差结构。
- bic_pandas.DataFrame
一个包含所有可能聚类数量的BIC值的pandas DataFrame,这些聚类数量由
range(min_components, max_components + 1)给出,并且所有协方差结构由covariance_type给出。- ari_pandas.DataFrame
仅在给定 y 时计算。Pandas 数据框包含为所有可能的聚类数(由
range(min_components, max_components)给出)和所有由covariance_type给出的协方差结构计算的 ARI 值。
- __init__(min_components=2, max_components=None, covariance_type='all', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', random_state=None)[来源]¶
- Parameters:
min_components (int)
max_components (int | None)
covariance_type (Literal['all', 'spherical', 'diag', 'tied', 'full'] | list[~typing.Literal['spherical', 'diag', 'tied', 'full']] | ~numpy.ndarray)
tol (float)
reg_covar (float)
max_iter (int)
n_init (int)
init_params (Literal['random', 'kmeans'])
random_state (int | RandomState | None)
- fit(X, y=None)[来源]¶
将高斯混合模型拟合到数据。 使用EM算法估计模型参数。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- self
- Parameters:
X (ndarray)
y (ndarray | None)
- Return type:
- fit_predict(X, y=None)¶
拟合模型并根据最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
- get_metadata_routing()¶
获取此对象的元数据路由。
请查看用户指南了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
一个
MetadataRequest封装了路由信息。
- get_params(deep=True)¶
获取此估计器的参数。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器及其包含的子对象(如果也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X, y=None)¶
基于最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples, ), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
- class graspologic.cluster.AutoGMMCluster[来源]¶
自动高斯混合模型(GMM)选择。
使用层次凝聚聚类然后高斯混合模型(GMM)拟合的聚类算法。使用了不同的凝聚、GMM和聚类数量的组合,并选择具有最佳选择标准(bic/aic)的聚类。
- Parameters:
- min_componentsint, default=2.
要考虑的最小混合组件数量(除非
max_components为None,在这种情况下,这是要考虑的最大组件数量)。如果max_components不为None,则min_components必须小于或等于max_components。如果给出了label_init,则min_components必须与label_init中的唯一标签数量匹配。- max_componentsint or None, default=10.
要考虑的最大混合组件数量。必须大于或等于min_components。 如果提供了label_init,min_components必须与label_init中唯一标签的数量匹配。
- affinity{'euclidean','manhattan','cosine','none', 'all' (default)}, optional
字符串或列表/数组,描述在聚合中使用的亲和力类型。 如果是字符串,它必须是以下之一:
- 'euclidean'
L2 范数
- 'manhattan'
L1 范数
- 'cosine'
余弦相似度
- 'none'
无聚集 - GMM 使用 k-means 初始化
- 'all'
考虑所有在 ['euclidean','manhattan','cosine','none'] 中的亲和性
如果是一个列表/数组,它必须是一个仅包含 'euclidean'、'manhattan'、'cosine' 和/或 'none' 的字符串列表/数组。
请注意,余弦相似度只有在所有行都不是零向量时才能工作。 如果输入矩阵有零行,余弦相似度将被跳过,并且会抛出警告。
- linkage{'ward','complete','average','single', 'all' (default)}, optional
字符串或列表/数组,描述在聚合中使用的链接类型。 如果是字符串,它必须是以下之一:
- 'ward'
ward的聚类,只能与欧几里得亲和度一起使用
- 'complete'
完全链接
- 'average'
平均链接
- 'single'
单链接
- 'all'
考虑所有在 ['ward','complete','average','single'] 中的链接方式
如果是一个列表/数组,它必须是一个仅包含'ward'、'complete'、'average'和/或'single'的字符串列表/数组。
- covariance_type{'full', 'tied', 'diag', 'spherical', 'all' (default)} , optional
描述要使用的协方差参数类型的字符串或列表/数组。 如果是字符串,它必须是以下之一:
- 'full'
每个组件都有自己的通用协方差矩阵
- 'tied'
所有组件共享相同的通用协方差矩阵
- 'diag'
每个组件都有其自己的对角协方差矩阵
- 'spherical'
每个组件都有其自己的单一方差
- 'all'
考虑所有协方差结构在['spherical', 'diag', 'tied', 'full']中
如果是一个列表/数组,它必须是一个仅包含 'spherical'、'tied'、'diag' 和/或 'spherical' 的字符串列表/数组。
- random_stateint, RandomState instance or None, optional (default=None)
在
sklearn.mixture.GaussianMixture的k-means初始化中存在随机性。此参数传递给GaussianMixture以控制随机状态。 如果为整数,random_state用作随机数生成器的种子; 如果为RandomState实例,random_state是随机数生成器; 如果为None,随机数生成器是np.random使用的RandomState实例。- label_initarray-like, shape (n_samples,), optional (default=None)
如果可用,样本的标签列表。用于初始化模型。 如果提供了,min_components 和
max_components必须与这里提供的唯一标签数量匹配。- kmeans_n_initint, optional (default = 1)
如果
kmeans_n_init大于 1 且label_init为 None,将会执行额外的kmeans_n_init-1 次sklearn.mixture.GaussianMixture使用 k-means 初始化的运行 针对covariance_type中的所有协方差参数。- max_iterint, optional (default = 100).
执行EM迭代的最大次数。
- selection_criteriastr {"bic" or "aic"}, optional, (default="bic")
根据贝叶斯信息准则(bic)或赤池信息准则(aic)选择最佳模型
- verboseint, optional (default = 0)
启用详细输出。如果为1,则打印当前初始化和每个迭代步骤。如果大于1,则还打印每个步骤的对数概率和所需时间。
- max_agglom_sizeint or None, optional (default = 2000)
用于进行凝聚聚类作为GMM初始化的最大数据点数。如果数据点数大于此值,则使用数据的随机子集进行凝聚初始化。如果为None,则所有数据都用于凝聚聚类进行初始化。
- n_jobsint or None, optional (default = None)
用于计算的作业数量。这是通过并行计算每个初始化运行来实现的。None 表示 1,除非在
joblib.parallel_backend context中。-1 表示使用所有处理器。更多详情请参见 https://scikit-learn.org/stable/glossary.html#term-n-jobs。
- Attributes:
- results_pandas.DataFrame
包含所有聚类运行的详尽信息。 列包括:
- 'model'GaussianMixture object
GMM聚类拟合数据
- 'bic/aic'float
贝叶斯信息准则
- 'ari'float or nan
GMM分类与真实分类之间的调整兰德指数,如果未给出y则为nan
- 'n_components'int
集群数量
- 'affinity'{'euclidean','manhattan','cosine','none'}
在凝聚聚类中使用的亲和力
- 'linkage'{'ward','complete','average','single'}
在凝聚聚类中使用的链接
- 'covariance_type'{'full', 'tied', 'diag', 'spherical'}
GMM中使用的协方差类型
- 'reg_covar'float
GMM中使用的正则化
- criter_the best (lowest) Bayesian Information Criterion
- n_components_int
模型中具有最佳BIC/AIC的聚类数量
- covariance_type_str
模型中具有最佳BIC/AIC的协方差类型
- affinity_str
模型中使用的亲和力具有最佳的BIC/AIC
- linkage_str
模型中使用的链接方式具有最佳的BIC/AIC
- reg_covar_float
模型中用于最佳BIC/AIC的正则化
- ari_float
来自具有最佳bic/aic的模型的ARI,如果没有给出y则为nan
- model_
sklearn.mixture.GaussianMixture 具有最佳bic/aic的对象
注释
该算法深受R语言中的聚类包mclust的启发
参考文献
[1]杰弗里·D·班菲尔德和阿德里安·E·拉夫特里。基于模型的高斯和非高斯聚类。生物统计学,49:803–821,1993年。
[2]阿比吉特·达斯古普塔和阿德里安·E·拉夫特里。通过基于模型的聚类检测带有杂波的空间点过程中的特征。美国统计协会杂志,93(441):294–302, 1998.
- __init__(min_components=2, max_components=10, affinity='all', linkage='all', covariance_type='all', random_state=None, label_init=None, kmeans_n_init=1, max_iter=100, verbose=0, selection_criteria='bic', max_agglom_size=2000, n_jobs=None)[source]¶
- fit(X, y=None)[source]¶
将高斯混合模型拟合到数据。 使用凝聚聚类进行初始化,然后 使用EM算法估计模型参数。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- selfobject
返回自身的实例。
- Parameters:
X (ndarray)
y (ndarray | None)
- Return type:
- fit_predict(X, y=None)¶
拟合模型并根据最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples,), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
- get_metadata_routing()¶
获取此对象的元数据路由。
请查看用户指南了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
一个
MetadataRequest封装了路由信息。
- get_params(deep=True)¶
获取此估计器的参数。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器及其包含的子对象(如果也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X, y=None)¶
基于最佳模型预测聚类。
- Parameters:
- Xarray-like, shape (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- yarray-like, shape (n_samples, ), optional (default=None)
如果可用,X的标签列表。用于计算ARI分数。
- Returns:
- labelsarray, shape (n_samples,)
组件标签。
- Parameters:
X (ndarray)
y (Any | None)
- Return type:
ndarray
层次聚类¶
- class graspologic.cluster.DivisiveCluster[source]¶
递归地基于所选的聚类算法对数据进行聚类。 该算法实现了“分裂”或“自上而下”的方法。
- Parameters:
- cluster_methodstr {"gmm", "kmeans"}, defaults to "gmm".
要应用的基础聚类方法。如果选择“gmm”,将使用
AutoGMMCluster。如果选择“kmeans”,将使用KMeansCluster。- min_componentsint, defaults to 1.
如果选择“gmm”作为
cluster_method,则为第一次分割考虑的最小混合组件/集群数;对于后续分割,设置为1。 如果cluster_method是“kmeans”,则对于所有分割都设置为2。- max_componentsint, defaults to 2.
每次分割时考虑的最大混合组件/集群数量。
- min_splitint, defaults to 1.
集群的最小大小,以便再次考虑进行拆分。
- max_levelint, defaults to 4.
递归聚类数据的最大次数。
- delta_criterfloat, non-negative, defaults to 0.
新模型与当前模型的选择标准值之间的最小差异,这是接受新模型所必需的。仅当
cluster_method为"gmm"时适用。- cluster_kwsdict, defaults to {}
所选聚类方法的关键字参数(除了
min_components和max_components)。
- Attributes:
- model_GaussianMixture or KMeans object
基于使用的
cluster_method拟合的聚类对象。
另请参阅
注释
这个类继承自
anytree.node.nodemixin.NodeMixin,这是一个轻量级的类,用于在树上执行各种简单操作。该算法受到了maggotcluster的强烈启发,maggotcluster是一种在https://github.com/neurodata/maggot_models中的分裂聚类算法,以及在[2]中提出的用于估计分层随机块模型的算法。
参考文献
[1]Athey, T. L., & Vogelstein, J. T. (2019). AutoGMM: Python中的自动高斯混合建模。 arXiv预印本 arXiv:1909.02688.
[2]Lyzinski, V., Tang, M., Athreya, A., Park, Y., & Priebe, C. E (2016). 层次随机块模型中的社区检测与分类. IEEE Transactions on Network Science and Engineering, 4(1), 13-26.
- __init__(cluster_method='gmm', min_components=1, max_components=2, cluster_kws={}, min_split=1, max_level=4, delta_criter=0)[源代码]¶
- fit(X)[来源]¶
将聚类模型拟合到数据以及生成的聚类
- Parameters:
- Xarray-like, shape (n_samples, n_features)
- Returns:
- selfobject
返回自身的实例。
- Parameters:
X (ndarray)
- Return type:
- fit_predict(X, fcluster=False, level=None)[源代码]¶
将聚类模型拟合到数据以及生成的聚类中,并使用拟合模型预测标签的层次结构
- Parameters:
- Xarray-like, shape (n_samples, n_features)
- fcluster: bool, default=False
如果为True,返回的标签将被重新编号,以便每个标签列表示当前级别的平面聚类,并且每个标签对应于一个聚类,其索引与整体聚类树状图中的相应节点相同。
- level: int, optional (default=None)
生成单个平面聚类的级别 仅在
fcluster为 True 时可用
- Returns:
- labelsarray_label, shape (n_samples, n_levels)
如果没有指定级别;否则,形状为 (n_samples,)
- Parameters:
- Return type:
ndarray
- predict(X, fcluster=False, level=None)[source]¶
基于拟合模型预测标签的层次结构
- Parameters:
- Xarray-like, shape (n_samples, n_features)
- fcluster: bool, default=False
如果为True,返回的标签将被重新编号,以便每个标签列表示当前级别的平面聚类,并且每个标签对应于一个聚类,其索引与整体聚类树状图中的相应节点相同
- level: int, optional (default=None)
生成单个平面聚类的级别 仅在
fcluster为 True 时可用
- Returns:
- labelsarray-like, shape (n_samples, n_levels)
如果没有指定级别;否则,形状为 (n_samples,)
- Parameters:
- Return type:
ndarray
- set_predict_request(*, fcluster='$UNCHANGED$', level='$UNCHANGED$')¶
传递给
predict方法的请求元数据。请注意,此方法仅在
enable_metadata_routing=True时相关(参见sklearn.set_config())。 请参阅 用户指南 了解路由机制的工作原理。每个参数的选项是:
True: 请求元数据,并在提供时传递给predict。如果未提供元数据,则忽略该请求。False: 不请求元数据,元估计器不会将其传递给predict。None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str: 元数据应使用此给定的别名传递给元估计器,而不是原始名称。
默认值(
sklearn.utils.metadata_routing.UNCHANGED)保留现有的请求。这允许您更改某些参数的请求,而不更改其他参数。在版本1.3中添加。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline内部使用时。否则它没有效果。- Parameters:
- fclusterstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
predict中fcluster参数的元数据路由。- levelstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
predict中level参数的元数据路由。
- Returns:
- selfobject
更新后的对象。
- Parameters:
self (DivisiveCluster)
- Return type: