UMAP API 指南

UMAP 只有两个类,UMAP,以及继承自它的 ParametricUMAP

UMAP

class umap.umap_.UMAP(n_neighbors=15, n_components=2, metric='euclidean', metric_kwds=None, output_metric='euclidean', output_metric_kwds=None, n_epochs=None, learning_rate=1.0, init='spectral', min_dist=0.1, spread=1.0, low_memory=True, n_jobs=-1, set_op_mix_ratio=1.0, local_connectivity=1.0, repulsion_strength=1.0, negative_sample_rate=5, transform_queue_size=4.0, a=None, b=None, random_state=None, angular_rp_forest=False, target_n_neighbors=-1, target_metric='categorical', target_metric_kwds=None, target_weight=0.5, transform_seed=42, transform_mode='embedding', force_approximation_algorithm=False, verbose=False, tqdm_kwds=None, unique=False, densmap=False, dens_lambda=2.0, dens_frac=0.3, dens_var_shift=0.1, output_dens=False, disconnection_distance=None, precomputed_knn=(None, None, None))[来源]

均匀流形逼近与投影

找到一个低维度的数据嵌入,近似于一个潜在的流形。

Parameters:
n_neighbors: float (optional, default 15)

用于流形近似的局部邻域大小(以邻近样本点的数量计)。较大的值会导致更全局的流形视图,而较小的值则会保留更多的局部数据。通常,值应在2到100的范围内。

n_components: int (optional, default 2)

嵌入空间的维度。默认值为2,以便于可视化,但可以合理地设置为2到100之间的任何整数值。

metric: string or function (optional, default ‘euclidean’)

用于计算高维空间中距离的度量标准。 如果传递的是字符串,则必须匹配有效的预定义度量标准。如果 需要一般度量标准,则可以提供一个接受两个一维数组并 返回浮点数的函数。出于性能考虑,要求该函数为numba jit’d函数。有效的字符串度量标准 包括:

  • 欧几里得

  • 曼哈顿

  • 切比雪夫

  • 闵可夫斯基

  • 堪培拉

  • 布雷-柯蒂斯

  • 马氏距离

  • wminkowski

  • 平方欧几里得距离

  • 相关性

  • 哈弗辛

  • 杰卡德

  • 库尔辛斯基

  • ll_dirichlet

  • 海林格

  • 罗杰斯坦莫托

需要参数的度量(如minkowski、mahalanobis等)可以通过metric_kwds字典传递参数。此时必须小心,字典元素必须适当排序;希望这个问题将来能得到解决。

n_epochs: int (optional, default None)

用于优化低维嵌入的训练周期数。较大的值会导致更准确的嵌入。如果未指定,将根据输入数据集的大小选择一个值(大型数据集为200,小型数据集为500)。

learning_rate: float (optional, default 1.0)

嵌入优化的初始学习率。

init: string (optional, default ‘spectral’)

如何初始化低维嵌入。选项有:

  • ‘spectral’:使用模糊1-骨架的光谱嵌入

  • ‘random’: 随机分配初始嵌入位置。

  • ‘pca’: use the first n_components from PCA applied to the

    输入数据。

  • ‘tswspectral’: use a spectral embedding of the fuzzy

    1-骨架,使用截断的奇异值分解来“预热”特征求解器。这是作为“谱”方法的替代方案,如果初始化时间过长(或无法完成初始化)。

min_dist: float (optional, default 0.1)

嵌入点之间的有效最小距离。较小的值将导致更集中的嵌入,流形上的附近点会被拉得更近,而较大的值将导致点更均匀地分散。该值应相对于spread值设置,该值决定了嵌入点将分散的尺度。

spread: float (optional, default 1.0)

嵌入点的有效比例。与min_dist结合使用,这决定了嵌入点的聚集/簇状程度。

low_memory: bool (optional, default True)

对于某些数据集,最近邻计算可能会消耗大量内存。如果您发现UMAP由于内存限制而失败,请考虑将此选项设置为True。这种方法在计算上更昂贵,但避免了过多的内存使用。

set_op_mix_ratio: float (optional, default 1.0)

在(模糊)并集和交集之间进行插值,作为用于组合局部模糊单纯集以获得全局模糊单纯集的集合操作。这两种模糊集操作都使用乘积t-范数。此参数的值应在0.0到1.0之间;值为1.0将使用纯模糊并集,而值为0.0将使用纯模糊交集。

local_connectivity: int (optional, default 1)

所需的局部连通性——即应假设在局部层面上连接的最近邻居的数量。这个值越高,流形在局部上就越连通。实际上,这个值不应超过流形的局部固有维度。

repulsion_strength: float (optional, default 1.0)

在低维嵌入优化中应用于负样本的权重。大于一的值将导致负样本被赋予更大的权重。

negative_sample_rate: int (optional, default 5)

在优化过程中为每个正样本选择的负样本数量。增加此值将导致施加更大的排斥力,增加优化成本,但略微提高准确性。

transform_queue_size: float (optional, default 4.0)

对于转换操作(使用训练好的模型嵌入新点),这将控制搜索最近邻居的积极程度。较大的值会导致性能变慢,但最近邻评估会更准确。

a: float (optional, default None)

控制嵌入的更具体参数。如果为None,这些值将根据min_distspread自动确定。

b: float (optional, default None)

控制嵌入的更具体参数。如果为None,这些值将根据min_distspread自动确定。

random_state: int, RandomState instance or None, optional (default: None)

如果是整数,random_state 是随机数生成器使用的种子; 如果是 RandomState 实例,random_state 是随机数生成器; 如果是 None,随机数生成器是 np.random 使用的 RandomState 实例。

metric_kwds: dict (optional, default None)

传递给度量的参数,例如Minkowski距离的p值。如果为None,则不传递任何参数。

angular_rp_forest: bool (optional, default False)

是否使用角度随机投影森林来初始化近似最近邻搜索。这可能会更快,但主要仅适用于使用角度样式距离(如余弦、相关性等)的度量。在这些度量的情况下,角度森林将自动被选择。

target_n_neighbors: int (optional, default -1)

用于构建目标单纯集的最近邻居数量。如果设置为-1,则使用n_neighbors值。

target_metric: string or callable (optional, default ‘categorical’)

用于测量目标数组距离的度量是使用监督降维。默认情况下,这是‘categorical’,它将根据类别是否匹配或不同来测量距离。此外,如果需要半监督,-1的目标值将在‘categorical’度量下被视为未标记。如果目标数组采用连续值(例如,对于回归问题),则‘l1’或‘l2’度量可能更合适。

target_metric_kwds: dict (optional, default None)

在执行监督降维时传递给目标度量的关键字参数。如果为None,则不传递任何参数。

target_weight: float (optional, default 0.5)

数据拓扑和目标拓扑之间的加权因子。值为0.0时主要加权于数据,值为1.0时则强烈强调目标。默认值为0.5,在数据和目标之间平衡加权。

transform_seed: int (optional, default 42)

用于变换操作的随机方面的随机种子。 这确保了变换操作的一致性。

verbose: bool (optional, default False)

控制日志的详细程度。

tqdm_kwds: dict (optional, defaul None)

用于tqdm进度条的关键字参数。

unique: bool (optional, default False)

控制是否在嵌入之前对数据行进行去重。如果你的重复数据比n_neighbors多,你可能会在不同的空间区域有相同的数据点。这也违反了度量的定义。要从内部结构映射回你的数据,请使用变量_unique_inverse_。

densmap: bool (optional, default False)

指定是否应使用densMAP的密度增强目标进行优化。开启此选项会生成一个嵌入,其中鼓励局部密度与原始空间中的密度相关联。以下带有前缀'dens'的参数进一步控制此扩展的行为。

dens_lambda: float (optional, default 2.0)

控制densMAP中密度相关项的正则化权重。较高的值会优先考虑密度保持而不是UMAP目标,而接近零的值则相反。将此参数设置为零相当于运行原始的UMAP算法。

dens_frac: float (optional, default 0.3)

控制在densMAP中使用密度增强目标的时期比例(介于0和1之间)。在引入密度相关项之前,前(1 - dens_frac)比例的时期优化原始UMAP目标。

dens_var_shift: float (optional, default 0.1)

在计算密度相关目标时,添加到嵌入中局部半径方差的一个小常数,以防止由于除以一个小数而导致的数值不稳定性

output_dens: float (optional, default False)
disconnection_distance: float (optional, default np.inf or maximal value for bounded distances)

在通过我们的k-nn图近似流形时,断开距离大于或等于disconnection_distance的任何顶点。这在您有界度量的情况下特别有用。当我们有点与所有其他数据最大程度不同时,UMAP假设我们有一个连接的流形可能会出现问题。连接的流形假设将使这些点与一组随机其他点具有完美的相似性。太多这样的点会人为地连接您的空间。

precomputed_knn: tuple (optional, default (None,None,None))

如果每个点的k近邻已经计算出来,你可以在这里传递它们以节省计算时间。precomputed_knn中的最近邻数量必须大于或等于n_neighbors参数。这应该是一个包含nearest_neighbors()函数输出或先前拟合的UMAP对象属性的元组;(knn_indices, knn_dists, knn_search_index)。如果你想使用由另一个包计算的k近邻数据,则提供一个形式为(knn_indices, knn_dists)的元组。元组的内容应该是两个形状为(N, n_neighbors)的numpy数组,其中N是输入数据中的项目数量。第一个数组应该是最近邻的整数索引,第二个数组应该是相应的距离。每个项目的最近邻应该是它自己,例如项目0的最近邻应该是0,项目1的最近邻是1,依此类推。请注意,在这种情况下你将无法转换新数据。

fit(X, y=None, force_all_finite=True, **kwargs)[来源]

将X拟合到嵌入空间中。

可选地使用 y 进行监督降维。

Parameters:
Xarray, shape (n_samples, n_features) or (n_samples, n_samples)

如果指标是‘precomputed’,X必须是一个平方距离矩阵。否则,每行包含一个样本。如果方法是‘exact’,X可以是类型为‘csr’、‘csc’或‘coo’的稀疏矩阵。

yarray, shape (n_samples)

用于监督降维的目标数组。如何处理这个数组取决于UMAP实例化时的参数。相关的属性是target_metrictarget_metric_kwds

force_all_finiteWhether to raise an error on np.inf, np.nan, pd.NA in array.
The possibilities are: - True: Force all values of array to be finite.
  • False: 接受数组中的 np.inf, np.nan, pd.NA。

  • ‘allow-nan’: 仅接受数组中的 np.nan 和 pd.NA 值。 值不能为无限。

**kwargsoptional

任何额外的关键字参数都会传递给 _fit_embed_data。

fit_transform(X, y=None, force_all_finite=True, **kwargs)[源]

将X拟合到嵌入空间并返回转换后的输出。

Parameters:
Xarray, shape (n_samples, n_features) or (n_samples, n_samples)

如果度量是‘precomputed’,X必须是一个平方距离矩阵。否则,每行包含一个样本。

yarray, shape (n_samples)

用于监督降维的目标数组。如何处理这个数组取决于UMAP实例化时的参数。相关的属性是target_metrictarget_metric_kwds

force_all_finiteWhether to raise an error on np.inf, np.nan, pd.NA in array.
The possibilities are: - True: Force all values of array to be finite.
  • False: 接受数组中的 np.inf, np.nan, pd.NA。

  • ‘allow-nan’: 仅接受数组中的 np.nan 和 pd.NA 值。 值不能为无限。

**kwargsAny additional keyword arguments are passed to _fit_embed_data.
Returns:
X_newarray, shape (n_samples, n_components)

训练数据在低维空间中的嵌入。

or a tuple (X_new, r_orig, r_emb) if output_dens flag is set,
which additionally includes:
r_orig: array, shape (n_samples)

原始数据空间中数据点的局部半径(对数转换后)。

r_emb: array, shape (n_samples)

嵌入中数据点的局部半径(对数转换)。

inverse_transform(X)[来源]

将现有嵌入空间中的X转换回输入数据空间,并返回转换后的输出。

Parameters:
Xarray, shape (n_samples, n_components)

需要逆变换的新点。

Returns
——-
X_newarray, shape (n_samples, n_features)

生成的数据点在数据空间中表示新数据。

set_fit_request(*, force_all_finite: 布尔值 | | 字符串 = '$UNCHANGED$') UMAP

传递给fit方法的请求元数据。

请注意,此方法仅在 enable_metadata_routing=True(参见sklearn.set_config())时相关。 请参阅用户指南了解路由机制的工作原理。

每个参数的选项是:

  • True: 请求元数据,并在提供时传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

默认值(sklearn.utils.metadata_routing.UNCHANGED)保留现有的请求。这允许您更改某些参数的请求,而不更改其他参数。

在版本1.3中添加。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在Pipeline内部使用。否则它没有效果。

Parameters:
force_all_finitestr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fitforce_all_finite 参数的元数据路由。

Returns:
selfobject

更新后的对象。

set_transform_request(*, force_all_finite: 布尔值 | | 字符串 = '$UNCHANGED$') UMAP

传递给transform方法的请求元数据。

  • True: 请求元数据,并在提供时传递给 transform。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 transform

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

默认值(sklearn.utils.metadata_routing.UNCHANGED)保留现有的请求。这允许您更改某些参数的请求,而不更改其他参数。

在版本1.3中添加。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在Pipeline内部使用时。否则它没有效果。

Parameters:
force_all_finitestr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

transformforce_all_finite 参数的元数据路由。

Returns:
selfobject

更新后的对象。

transform(X, force_all_finite=True)[来源]

将X转换为现有的嵌入空间并返回转换后的输出。

Parameters:
Xarray, shape (n_samples, n_features)

需要转换的新数据。

force_all_finiteWhether to raise an error on np.inf, np.nan, pd.NA in array.
The possibilities are: - True: Force all values of array to be finite.
  • False: 接受数组中的 np.inf, np.nan, pd.NA。

  • ‘allow-nan’: 仅接受数组中的 np.nan 和 pd.NA 值。 值不能为无限。

Returns:
X_newarray, shape (n_samples, n_components)

将新数据嵌入低维空间。

参数化UMAP

许多内部函数也可以单独访问,以便进行更精细的工作。

有用的函数

umap.umap_.compute_membership_strengths(knn_indices, knn_dists, sigmas, rhos, return_dists=False, bipartite=False)[来源]

为每个局部模糊单纯集的1-骨架构建成员强度数据——这被构建为一个稀疏矩阵,其中每一行是一个局部模糊单纯集,具有1-单纯形到每个其他数据点的成员强度。

Parameters:
knn_indices: array of shape (n_samples, n_neighbors)

数据集中n_neighbors最近点的索引。

knn_dists: array of shape (n_samples, n_neighbors)

数据集中到n_neighbors最近点的距离。

sigmas: array of shape(n_samples)
rhos: array of shape(n_samples)

本地连接性调整。

return_dists: bool (optional, default False)

是否返回与每条边相关的成对距离。

bipartite: bool (optional, default False)

最近邻集合是否代表一个二分图?也就是说,最近邻索引是否与行索引来自同一个点集?

Returns:
rows: array of shape (n_samples * n_neighbors)

结果稀疏矩阵的行数据(coo格式)

cols: array of shape (n_samples * n_neighbors)

结果稀疏矩阵的列数据(coo格式)

vals: array of shape (n_samples * n_neighbors)

结果稀疏矩阵的条目(coo格式)

dists: array of shape (n_samples * n_neighbors)

与结果稀疏矩阵中每个条目相关联的距离

umap.umap_.discrete_metric_simplicial_set_intersection(simplicial_set, discrete_space, unknown_dist=1.0, far_dist=5.0, metric=None, metric_kws={}, metric_scale=1.0)[来源]

将一个模糊单纯集与另一个使用离散距离从离散度量数据生成的模糊单纯集结合。目标数据被假定为分类标签数据(标签向量),这将更新模糊单纯集以尊重该标签数据。

待办事项:可选的基于类别基数的距离加权

Parameters:
simplicial_set: sparse matrix

输入的模糊单纯集。

discrete_space: array of shape (n_samples)

在交集中使用的分类标签。

unknown_dist: float (optional, default 1.0)

未知标签(-1)与任何点的假定距离。

far_dist: float (optional, default 5.0)

未匹配标签之间的距离。

metric: str (optional, default None)

如果不是None,则使用此指标来确定值之间的距离。

metric_scale: float (optional, default 1.0)

如果使用自定义度量,请按此值缩放距离值——这控制了交集的权重。较大的值更倾向于目标。

Returns:
simplicial_set: sparse matrix
umap.umap_.fast_intersection(rows, cols, values, target, unknown_dist=1.0, far_dist=5.0)[来源]

在相交单纯集的分类距离假设下,执行快速相交。

Parameters:
rows: array
cols: array

稀疏矩阵表示中每个非零元素的列数组。

values: array
target: array of shape (n_samples)

在交集中使用的分类标签。

unknown_dist: float (optional, default 1.0)

未知标签(-1)与任何点的假定距离。

far_dist float (optional, default 5.0)

未匹配标签之间的距离。

Returns:
None
umap.umap_.fast_metric_intersection(rows, cols, values, discrete_space, metric, metric_args, scale)[来源]

在相交单纯集的分类距离假设下,执行快速相交。

Parameters:
rows: array

稀疏矩阵表示中每个非零元素所在行的数组。

cols: array

稀疏矩阵表示中每个非零元素的列数组。

values: array of shape

稀疏矩阵表示中每个非零值的数组。

discrete_space: array of shape (n_samples, n_features)

用于交集的分类标签向量。

metric: numba function

用于计算目标数组上距离的函数。

scale: float
Returns:
None
umap.umap_.find_ab_params(spread, min_dist)[来源]

为用于低维模糊单纯复形构造的可微曲线拟合a、b参数。我们希望平滑曲线(来自具有简单梯度的预定义族)能够最好地匹配偏移指数衰减。

umap.umap_.fuzzy_simplicial_set(X, n_neighbors, random_state, metric, metric_kwds={}, knn_indices=None, knn_dists=None, angular=False, set_op_mix_ratio=1.0, local_connectivity=1.0, apply_set_operations=True, verbose=False, return_dists=None)[来源]

给定一组数据X、邻域大小和距离度量,计算与数据相关的模糊单纯形集(这里以稀疏矩阵的形式表示为模糊图)。这是通过在每一点局部近似测地距离,为每个这样的点创建一个模糊单纯形集,然后通过模糊联合将所有局部模糊单纯形集组合成一个全局的模糊单纯形集来完成的。

Parameters:
X: array of shape (n_samples, n_features)

要建模为模糊单纯集的数据。

n_neighbors: int

用于近似测地距离的邻居数量。 较大的数字会导致对流形的更全局估计,可能会忽略更精细的细节,而较小的值则会专注于精细的流形结构,但可能会损害整体视图。

random_state: numpy RandomState or equivalent

一个可以用作numpy随机状态的状态。

metric: string or function (optional, default ‘euclidean’)

用于计算高维空间中距离的度量标准。 如果传递的是字符串,则必须匹配有效的预定义度量标准。如果 需要一般度量标准,则可以提供一个接受两个一维数组并 返回浮点数的函数。出于性能考虑,要求该函数为numba jit’d函数。有效的字符串度量标准 包括:

  • 欧几里得(或 l2)

  • 曼哈顿(或 l1)

  • 城市街区

  • 布雷-柯蒂斯

  • 堪培拉

  • 切比雪夫

  • 相关性

  • 杰卡德

  • 库尔辛斯基

  • ll_dirichlet

  • 马氏距离

  • 匹配

  • 闵可夫斯基

  • 罗杰斯坦莫托

  • 拉塞尔拉奥

  • 平方欧几里得距离

  • wminkowski

需要参数的度量(如minkowski、mahalanobis等)可以通过metric_kwds字典传递参数。此时必须小心,字典元素必须适当排序;希望这个问题将来能得到解决。

metric_kwds: dict (optional, default {})

传递给度量的参数,例如用于Minkowski距离的p值。

knn_indices: array of shape (n_samples, n_neighbors) (optional)

如果每个点的k近邻已经计算出来,你可以在这里传递它们以节省计算时间。这应该是一个数组,其中每一行包含每个数据点的k近邻的索引。

knn_dists: array of shape (n_samples, n_neighbors) (optional)

如果每个点的k近邻已经计算出来,你可以在这里传入它们以节省计算时间。这应该是一个数组,其中每一行是每个数据点的k近邻的距离。

angular: bool (optional, default False)

是否使用角度/余弦距离来为随机投影森林播种NN-descent,以确定近似最近邻。

set_op_mix_ratio: float (optional, default 1.0)

在(模糊)并集和交集之间进行插值,作为用于组合局部模糊单纯集以获得全局模糊单纯集的集合操作。这两种模糊集操作都使用乘积t-范数。此参数的值应在0.0到1.0之间;值为1.0将使用纯模糊并集,而值为0.0将使用纯模糊交集。

local_connectivity: int (optional, default 1)

所需的局部连通性——即应假设在局部层面上连接的最近邻居的数量。这个值越高,流形在局部上就越连通。实际上,这个值不应超过流形的局部固有维度。

verbose: bool (optional, default False)

是否报告算法当前进度的信息。

return_dists: bool or None (optional, default None)

是否返回与每条边相关的成对距离。

Returns:
fuzzy_simplicial_set: coo_matrix

一个表示为稀疏矩阵的模糊单纯集。矩阵的(i, j)条目表示第i个和第j个样本点之间的1-单纯形的隶属强度。

umap.umap_.init_graph_transform(graph, embedding)[来源]

如果一个点在我们的原始数据集中,它会在原始点的坐标处嵌入。 如果一个点在我们的原始数据集中没有邻居,它会嵌入为np.nan向量。 否则,一个点是其邻居嵌入位置的加权平均值。

Parameters:
graph: csr_matrix (n_new_samples, n_samples)

一个表示1-单纯形及其相关强度的矩阵。这些强度应该是介于零和一之间的值,并且不需要归一化。值为一表示新点与我们的原始点之一完全相同。

embedding: array of shape (n_samples, dim)

源数据的原始嵌入。

Returns:
new_embedding: array of shape (n_new_samples, dim)
umap.umap_.init_transform(indices, weights, embedding)[来源]

给定索引和权重以及原始嵌入,初始化新点的位置相对于索引和权重(它们在源数据中的邻居)。

Parameters:
indices: array of shape (n_new_samples, n_neighbors)
weights: array of shape (n_new_samples, n_neighbors)

每个新样本的相关1-单纯形的成员强度。

embedding: array of shape (n_samples, dim)

源数据的原始嵌入。

Returns:
new_embedding: array of shape (n_new_samples, dim)

新样本点的初始嵌入。

umap.umap_.make_epochs_per_sample(weights, n_epochs)[来源]

给定一组权重和epoch数量,生成每个权重对应的每个样本的epoch数量。

Parameters:
weights: array of shape (n_1_simplices)
n_epochs: int

我们希望训练的总轮数。

Returns:
An array of number of epochs per sample, one for each 1-simplex.
umap.umap_.nearest_neighbors(X, n_neighbors, metric, metric_kwds, angular, random_state, low_memory=True, use_pynndescent=True, n_jobs=-1, verbose=False)[来源]

计算在metricX中每个数据点的n_neighbors最近点。这可能是精确的,但更可能是通过最近邻下降法近似得到的。

Parameters:
X: array of shape (n_samples, n_features)

用于计算k近邻图的输入数据。

n_neighbors: int

X中的每个样本计算的最近邻居的数量。

metric: string or callable

用于计算的指标。

metric_kwds: dict

传递给指标计算函数的任何参数。

angular: bool

是否在神经网络近似中使用角度rp树。

random_state: np.random state

用于近似最近邻计算的随机状态。

low_memory: bool (optional, default True)

是否追求更低内存的NNdescent。

verbose: bool (optional, default False)

是否在计算期间打印状态数据。

Returns:
knn_indices: array of shape (n_samples, n_neighbors)

数据集中n_neighbors最近点的索引。

knn_dists: array of shape (n_samples, n_neighbors)

数据集中到n_neighbors最近点的距离。

rp_forest: list of trees

用于搜索的随机投影森林(如果使用,否则为None)。

umap.umap_.raise_disconnected_warning(edges_removed, vertices_disconnected, disconnection_distance, total_rows, threshold=0.1, verbose=False)[来源]

一个简单的包装函数,以避免大量代码重复。

umap.umap_.reset_local_connectivity(simplicial_set, reset_local_metric=False)[来源]

重置本地连接性要求——每个数据样本应该对单纯形集中的至少一个1-单纯形具有完全的置信度。我们可以通过局部重新缩放置信度来强制执行此操作,然后将不同的局部单纯形集重新合并在一起。

Parameters:
simplicial_set: sparse matrix

关于局部连通性重新计算的单纯集。

Returns:
simplicial_set: sparse_matrix

重新计算的单纯集,现在恢复了局部连通性假设。

umap.umap_.simplicial_set_embedding(data, graph, n_components, initial_alpha, a, b, gamma, negative_sample_rate, n_epochs, init, random_state, metric, metric_kwds, densmap, densmap_kwds, output_dens, output_metric=CPUDispatcher(<function euclidean_grad>), output_metric_kwds={}, euclidean_output=True, parallel=False, verbose=False, tqdm_kwds=None)[来源]

执行模糊单纯形集嵌入,使用指定的初始化方法,然后最小化高维和低维模糊单纯形集的1-骨架之间的模糊集交叉熵。

Parameters:
data: array of shape (n_samples, n_features)

UMAP 要嵌入的源数据。

graph: sparse matrix

高维模糊单纯集的1-骨架,表示为需要稀疏矩阵的(加权)邻接矩阵的图。

n_components: int

数据嵌入的欧几里得空间的维度。

initial_alpha: float

SGD的初始学习率。

a: float

右伴随函子的可微逼近参数

b: float

右伴随函子的可微逼近参数

gamma: float

应用于负样本的权重。

negative_sample_rate: int (optional, default 5)

在优化过程中为每个正样本选择的负样本数量。增加此值将导致施加更大的排斥力,增加优化成本,但略微提高准确性。

n_epochs: int (optional, default 0), or list of int

用于优化低维嵌入的训练周期数。较大的值会导致更准确的嵌入。如果指定为0,将根据输入数据集的大小选择一个值(大数据集为200,小数据集为500)。如果指定了一个整数列表,则在该列表中指定的不同周期处的中间嵌入将返回到aux_data["embedding_list"]中。

init: string

如何初始化低维嵌入。选项有:

  • ‘spectral’:使用模糊1-骨架的光谱嵌入

  • ‘random’: 随机分配初始嵌入位置。

  • ‘pca’: 使用应用于输入数据的PCA的前n_components。

random_state: numpy RandomState or equivalent

一个可以用作numpy随机状态的状态。

metric: string or callable

用于测量高维空间中距离的度量;在需要布局多个连接组件时使用。

metric_kwds: dict

要传递给度量函数的关键字参数;如果需要对多个连接的组件进行布局,则使用此参数。

densmap: bool

是否使用密度增强的目标函数根据densMAP算法优化嵌入。

densmap_kwds: dict

用于densMAP优化的关键字参数。

output_dens: bool

是否在原始数据和嵌入中输出局部半径。

output_metric: function

函数返回嵌入空间中两点之间的距离以及距离相对于第一个参数的梯度。

output_metric_kwds: dict

要传递给output_metric函数的关键字参数。

euclidean_output: bool

是否使用专门为欧几里得输出指标优化的更快代码

parallel: bool (optional, default False)

是否使用numba并行运行计算。 并行运行是不确定的,如果设置了随机种子,则不会使用,以确保可重复性。

verbose: bool (optional, default False)

是否报告算法当前进度的信息。

tqdm_kwds: dict

用于tqdm进度条的关键字参数。

Returns:
embedding: array of shape (n_samples, n_components)

graph优化为n_components维欧几里得空间。

aux_data: dict

辅助输出与嵌入一起返回。当densMAP扩展开启时,此字典包括原始数据中的局部半径(rad_orig)和嵌入中的局部半径(rad_emb)。

umap.umap_.smooth_knn_dist(distances, k, n_iter=64, local_connectivity=1.0, bandwidth=1.0)[来源]
Parameters:
distances: array of shape (n_samples, n_neighbors)

每个样本到最近邻居的距离。每一行应该是给定样本到其最近邻居的排序距离列表。

k: float

用于近似的最近邻居的数量。

n_iter: int (optional, default 64)

我们需要进行二分搜索以找到正确的距离值。这是在搜索中使用的最大迭代次数。

local_connectivity: int (optional, default 1)

所需的局部连通性——即应假设在局部层面上连接的最近邻居的数量。这个值越高,流形在局部上就越连通。实际上,这个值不应超过流形的局部固有维度。

bandwidth: float (optional, default 1)

内核的目标带宽,较大的值将产生较大的返回值。

Returns:
knn_dist: array of shape (n_samples,)

到第k个最近邻居的距离,经过适当近似。

nn_dist: array of shape (n_samples,)

每个点到第一个最近邻的距离。