OPTICS#
- class sklearn.cluster.OPTICS(*, min_samples=5, max_eps=inf, metric='minkowski', p=2, metric_params=None, cluster_method='xi', eps=None, xi=0.05, predecessor_correction=True, min_cluster_size=None, algorithm='auto', leaf_size=30, memory=None, n_jobs=None)[source]#
- 从向量数组估计聚类结构。 - OPTICS (识别聚类结构的排序点) 与 DBSCAN 紧密相关,它查找高密度核心样本并从中扩展聚类 [1]。与 DBSCAN 不同的是,它为可变邻域半径保留聚类层次结构。与当前 sklearn 实现的 DBSCAN 相比,它更适合用于大型数据集。 - 然后使用类似 DBSCAN 的方法 (cluster_method = 'dbscan') 或 [1] 中提出的自动技术 (cluster_method = 'xi') 提取聚类。 - 此实现偏离了原始 OPTICS,它首先对所有点执行 k 近邻搜索以识别核心大小,然后在构建聚类顺序时仅计算到未处理点的距离。请注意,我们不使用堆来管理扩展候选,因此时间复杂度将为 O(n^2)。 - 在 用户指南 中了解更多信息。 - 参数:
- min_samplesint > 1 或介于 0 和 1 之间的浮点数,默认为 5
- 一个点被视为核心点的邻域中的样本数。此外,上下陡峭区域连续的非陡峭点数不能超过 - min_samples。表示为绝对数或样本数的比例(四舍五入到至少 2)。
- max_eps浮点数,默认为 np.inf
- 两个样本之间被认为在彼此邻域内的最大距离。默认值为 - np.inf将识别所有尺度上的聚类;减小- max_eps将缩短运行时间。
- metric字符串或可调用对象,默认为 'minkowski'
- 用于距离计算的度量。可以使用 scikit-learn 或 scipy.spatial.distance 中的任何度量。 - 如果 metric 是可调用函数,则它会在每一对实例(行)上调用,并记录结果值。可调用对象应接受两个数组作为输入并返回一个值,指示它们之间的距离。这适用于 Scipy 的度量,但效率低于将度量名称作为字符串传递。如果 metric 为“预计算”,则假设 - X为距离矩阵且必须为方阵。- metric 的有效值为: - 来自 scikit-learn:[‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] 
- 来自 scipy.spatial.distance:[‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 
 - 稀疏矩阵仅受 scikit-learn 度量支持。有关这些度量的详细信息,请参见 scipy.spatial.distance 的文档。 - 注意 - 'kulsinski'已自 SciPy 1.9 起弃用,并将在 SciPy 1.11 中移除。
- p浮点数,默认为 2
- 来自 - pairwise_distances的 Minkowski 度量的参数。当 p = 1 时,这等效于使用 manhattan_distance (l1),而 p = 2 时则为 euclidean_distance (l2)。对于任意 p,使用 minkowski_distance (l_p)。
- metric_params字典,默认为 None
- 度量函数的其他关键字参数。 
- cluster_method字符串,默认为 'xi'
- 使用计算的可达性和排序提取聚类的提取方法。可能的值为“xi”和“dbscan”。 
- eps浮点数,默认为 None
- 两个样本之间被认为在彼此邻域内的最大距离。默认情况下,它假定与 - max_eps相同的值。仅当- cluster_method='dbscan'时使用。
- xi介于 0 和 1 之间的浮点数,默认为 0.05
- 确定可达性图上构成聚类边界的最小陡度。例如,可达性图中的向上点定义为一点与其后继者之间的比率最多为 1-xi。仅当 - cluster_method='xi'时使用。
- predecessor_correction布尔值,默认为 True
- 根据 OPTICS 计算的前驱校正聚类 [2]。此参数对大多数数据集的影响最小。仅当 - cluster_method='xi'时使用。
- min_cluster_sizeint > 1 或介于 0 和 1 之间的浮点数,默认为 None
- OPTICS 聚类中的最小样本数,表示为绝对数或样本数的比例(四舍五入到至少 2)。如果为 - None,则使用- min_samples的值。仅当- cluster_method='xi'时使用。
- algorithm{'auto', 'ball_tree', 'kd_tree', 'brute'},默认为 'auto'
- 用于计算最近邻的算法 - ‘ball_tree’ 将使用 - BallTree。
- ‘kd_tree’ 将使用 - KDTree。
- ‘brute’ 将使用蛮力搜索。 
- ‘auto’(默认)将尝试根据传递给 - fit方法的值确定最合适的算法。
 - 注意:对稀疏输入进行拟合将覆盖此参数的设置,使用蛮力。 
- leaf_size整数,默认为 30
- 传递给 - BallTree或- KDTree的叶子大小。这会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。
- memory字符串或具有 joblib.Memory 接口的对象,默认为 None
- 用于缓存树的计算输出。默认情况下,不进行缓存。如果给定字符串,则它是缓存目录的路径。 
- n_jobs整数,默认为 None
- 为邻居搜索运行的并行作业数。 - None表示 1,除非在- joblib.parallel_backend上下文中。- -1表示使用所有处理器。有关更多详细信息,请参见 词汇表。
 
- 属性:
- labels_形状为 (n_samples,) 的 ndarray
- 数据集在`fit()`方法中提供的每个点的聚类标签。噪声样本和未包含在 - cluster_hierarchy_叶节点聚类中的点标记为 -1。
- reachability_形状为 (n_samples,) 的 ndarray
- 每个样本的可达距离,按对象顺序索引。使用 - clust.reachability_[clust.ordering_]按聚类顺序访问。
- ordering_形状为 (n_samples,) 的 ndarray
- 样本索引的聚类排序列表。 
- core_distances_形状为 (n_samples,) 的 ndarray
- 每个样本成为核心点的距离,按对象顺序索引。永远不会成为核心点的样本距离为无穷大 (inf)。使用 - clust.core_distances_[clust.ordering_]按聚类顺序访问。
- predecessor_形状为 (n_samples,) 的 ndarray
- 样本从哪个点到达,按对象顺序索引。种子点的 predecessor 为 -1。 
- cluster_hierarchy_形状为 (n_clusters, 2) 的 ndarray
- 以 - [start, end]形式的聚类列表,每行包含所有索引。聚类根据- (end, -start)(升序)排序,以便包含较小聚类的较大聚类排在较小聚类之后。由于- labels_没有反映层次结构,通常情况下- len(cluster_hierarchy_) > np.unique(optics.labels_)。还要注意,这些索引是- ordering_的索引,即- X[ordering_][start:end + 1]构成一个聚类。仅当- cluster_method='xi'时可用。
- n_features_in_int
- 在 fit 期间看到的特征数量。 - 在 0.24 版本中添加。 
- feature_names_in_形状为 (n_features_in_,) 的 ndarray
- 在 fit 期间看到的特征名称。仅当 - X的特征名称全部为字符串时才定义。- 在 1.0 版本中添加。 
 
 - 另请参阅 - DBSCAN
- 针对指定的邻域半径 (eps) 的类似聚类。我们的实现针对运行时进行了优化。 
 - 参考文献 [1] (1,2)- Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel 和 Jörg Sander。“OPTICS:对点进行排序以识别聚类结构。” ACM SIGMOD Record 28,no. 2 (1999):49-60。 [2]- Schubert, Erich, Michael Gertz。“改进从 OPTICS 图中提取的聚类结构。” “学习、知识、数据、分析”会议论文集 (LWDA) (2018):318-329。 - 示例 - >>> from sklearn.cluster import OPTICS >>> import numpy as np >>> X = np.array([[1, 2], [2, 5], [3, 6], ... [8, 7], [8, 8], [7, 3]]) >>> clustering = OPTICS(min_samples=2).fit(X) >>> clustering.labels_ array([0, 0, 0, 1, 1, 1]) - 有关更详细的示例,请参见 OPTICS 聚类算法演示。 - fit(X, y=None)[source]#
- 执行 OPTICS 聚类。 - 提取点的有序列表和可达距离,并使用在 OPTICS 对象实例化时指定的 - max_eps距离执行初始聚类。- 参数:
- X形状为 (n_samples, n_features) 的 {ndarray,稀疏矩阵},如果 metric='precomputed',则为 (n_samples, n_samples)
- 特征数组,或者如果 metric='precomputed',则为样本之间距离的数组。如果提供稀疏矩阵,它将转换为 CSR 格式。 
- y忽略
- 未使用,根据约定存在以保持 API 一致性。 
 
- 返回:
- self对象
- 返回拟合后的 self 实例。 
 
 
 - fit_predict(X, y=None, **kwargs)[source]#
- 对 - X执行聚类并返回聚类标签。- 参数:
- X形状为 (n_samples, n_features) 的类数组
- 输入数据。 
- y忽略
- 未使用,根据约定存在以保持 API 一致性。 
- kwargsdict
- 要传递给 - fit的参数。- 在 1.4 版本中添加。 
 
- 返回:
- labels形状为 (n_samples,),dtype=np.int64 的 ndarray
- 聚类标签。 
 
 
 - get_metadata_routing()[source]#
- 获取此对象的元数据路由。 - 请查看 用户指南,了解路由机制的工作原理。 - 返回:
- routingMetadataRequest
- 一个 - MetadataRequest,封装路由信息。
 
 
 
 
     
