本文简要介绍python语言中 sklearn.cluster.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)
从向量数组估计聚类结构。
OPTICS(Ordering Points To Identity the Clustering Structure)与 DBSCAN 密切相关,寻找高密度的核心样本并从中扩展聚类[1]。与 DBSCAN 不同,它保持可变邻域半径的簇层次结构。比当前的 DBSCAN sklearn 实现更适合在大型数据集上使用。
然后使用DBSCAN-like方法(cluster_method = ‘dbscan’)或[1]中提出的自动技术(cluster_method = ‘xi’)提取簇。
该实现偏离了原始 OPTICS,首先对所有点执行 k 最近邻搜索以识别核心大小,然后在构建集群顺序时仅计算到未处理点的距离。请注意,我们没有使用堆来管理扩展候选者,因此时间复杂度将为 O(n^2)。
在用户指南中阅读更多信息。
- min_samples:int > 1 或在 0 和 1 之间浮点数,默认 = 5
将一个点视为核心点的邻域中的样本数。此外,上下陡峭区域的连续非陡峭点不能超过
min_samples
。表示为样本数的绝对数或分数(四舍五入至少为 2)。- max_eps:浮点数,默认=np.inf
两个样本之间的最大距离,一个被认为是在另一个附近。
np.inf
的默认值将识别所有规模的集群;减少max_eps
将缩短运行时间。- metric:str 或可调用,默认='minkowski'
用于距离计算的度量。可以使用来自 scikit-learn 或 scipy.spatial.distance 的任何度量。
如果 metric 是一个可调用函数,则在每对实例(行)上调用它并记录结果值。可调用对象应将两个数组作为输入并返回一个值,指示它们之间的距离。这适用于 Scipy 的指标,但效率低于将指标名称作为字符串传递。如果 metric 是“precomputed”,X 被假定为一个距离矩阵并且必须是正方形。
指标的有效值为:
- 来自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’]
有关这些指标的详细信息,请参阅scipy.spatial.distance 的文档。
- p:整数,默认=2
来自
pairwise_distances
的 Minkowski 度量的参数。当 p = 1 时,这相当于使用 manhattan_distance (l1),而对于 p = 2,则使用 euclidean_distance (l2)。对于任意 p,使用 minkowski_distance (l_p)。- metric_params:字典,默认=无
度量函数的附加关键字参数。
- cluster_method:str,默认='xi'
用于使用计算的可达性和排序来提取簇的提取方法。可能的值为“xi” 和“dbscan”。
- eps:浮点数,默认=无
两个样本之间的最大距离,一个被认为是在另一个附近。默认情况下,它假定与
max_eps
相同的值。仅在cluster_method='dbscan'
时使用。- xi:在 0 和 1 之间浮点数,默认 = 0.05
确定构成集群边界的可达图上的最小陡度。例如,可达性图中的向上点由一个点与其后继点的比率最多为 1-xi 来定义。仅在
cluster_method='xi'
时使用。- predecessor_correction:布尔,默认=真
根据 OPTICS [2] 计算的前辈正确的聚类。此参数对大多数数据集影响最小。仅在
cluster_method='xi'
时使用。- min_cluster_size:int > 1 或在 0 和 1 之间浮点数,默认 = 无
OPTICS 集群中的最小样本数,表示为绝对数或样本数的分数(四舍五入至少为 2)。如果
None
,则使用min_samples
的值。仅在cluster_method='xi'
时使用。- algorithm:{‘auto’, ‘ball_tree’,‘kd_tree’, ‘brute’},默认='自动'
用于计算最近邻的算法:
- ‘ball_tree’ 将使用
BallTree
- ‘kd_tree’ 将使用
KDTree
- ‘brute’ 将使用蛮力搜索。
- ‘auto’ 将尝试根据传递给
fit
方法的值来决定最合适的算法。 (默认)
注意:拟合稀疏输入将使用蛮力覆盖此参数的设置。
- ‘ball_tree’ 将使用
- leaf_size:整数,默认=30
叶大小传递给
BallTree
或KDTree
。这会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。- memory:带有joblib.Memory 接口的str 或对象,默认=None
用于缓存树计算的输出。默认情况下,不进行缓存。如果给出一个字符串,它是缓存目录的路径。
- n_jobs:整数,默认=无
为邻居搜索运行的并行作业数。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。
- labels_:ndarray 形状 (n_samples,)
给fit()的数据集中每个点的聚类标签。不包含在
cluster_hierarchy_
的叶簇中的噪声样本和点被标记为-1。- reachability_:ndarray 形状 (n_samples,)
每个样本的可达距离,按对象顺序索引。使用
clust.reachability_[clust.ordering_]
以集群顺序访问。- ordering_:ndarray 形状 (n_samples,)
样本索引的集群有序列表。
- core_distances_:ndarray 形状 (n_samples,)
每个样本成为核心点的距离,按对象顺序索引。永远不会成为核心的点的距离为 inf。使用
clust.core_distances_[clust.ordering_]
以集群顺序访问。- predecessor_:ndarray 形状 (n_samples,)
到达样本的点,按对象顺序索引。种子点的前身为 -1。
- cluster_hierarchy_:ndarray 形状 (n_clusters, 2)
每行中以
[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
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
参考:
- 1(1,2)
Ankerst、Mihael、Markus M. Breunig、Hans-Peter Kriegel 和 Jörg Sander。 “光学:识别聚类结构的排序点。” ACM SIGMOD 记录 28,没有。 2 (1999): 49-60。
- 2
舒伯特、埃里希、迈克尔·格茨。 “改进从光学图中提取的集群结构。”过程。会议“Lernen, Wissen, Daten, Analysen” (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])
相关用法
- Python sklearn OneHotEncoder用法及代码示例
- Python sklearn OAS用法及代码示例
- Python sklearn OneVsRestClassifier用法及代码示例
- Python sklearn OrdinalEncoder用法及代码示例
- Python sklearn OneVsOneClassifier用法及代码示例
- Python sklearn OrthogonalMatchingPursuit用法及代码示例
- Python sklearn OneClassSVM用法及代码示例
- Python sklearn OutputCodeClassifier用法及代码示例
- Python sklearn OrthogonalMatchingPursuitCV用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn GradientBoostingRegressor用法及代码示例
- Python sklearn GridSearchCV用法及代码示例
- Python sklearn log_loss用法及代码示例
- Python sklearn r2_score用法及代码示例
- Python sklearn ndcg_score用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.cluster.OPTICS。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。