pairwise_kernels#

sklearn.metrics.pairwise.pairwise_kernels(X, Y=None, metric='linear', *, filter_params=False, n_jobs=None, **kwds)[source]#

计算数组 X 和可选数组 Y 之间的核。

此函数接受一个或两个特征数组或一个核矩阵,并返回一个核矩阵。

  • 如果 X 是一个特征数组,形状为 (n_samples_X, n_features),并且

    • YNonemetric 不是 'precomputed',则返回 X 自身之间的成对核。

    • Y 是一个形状为 (n_samples_Y, n_features) 的特征数组,则返回 XY 之间的成对核。

  • 如果 X 是一个形状为 (n_samples_X, n_samples_X) 的核矩阵,则 metric 应为 'precomputed'。此时 Y 将被忽略,X 按原样返回。

此方法提供了一种安全的方式来接受核矩阵作为输入,同时保持与许多接受向量数组的其他算法的兼容性。

metric 的有效值为

[‘additive_chi2’, ‘chi2’, ‘linear’, ‘poly’, ‘polynomial’, ‘rbf’, ‘laplacian’, ‘sigmoid’, ‘cosine’]

更多信息请参阅《用户指南》。

参数:
X形状为 (n_samples_X, n_samples_X) 或 (n_samples_X, n_features) 的类数组或稀疏矩阵

样本之间的成对核数组,或特征数组。如果 metric == “precomputed”,数组的形状应为 (n_samples_X, n_samples_X),否则为 (n_samples_X, n_features)。

Y形状为 (n_samples_Y, n_features) 的类数组或稀疏矩阵,默认为 `None`

仅当 X 的形状为 (n_samples_X, n_features) 时,才需要第二个特征数组。

metric字符串或可调用对象,默认为 "linear"

计算特征数组中实例之间核时使用的度量。如果 `metric` 是字符串,它必须是 pairwise.PAIRWISE_KERNEL_FUNCTIONS 中的一个度量。如果 `metric` 是 "precomputed",则假定 `X` 是一个核矩阵。另外,如果 `metric` 是一个可调用函数,它将对每对实例(行)进行调用并记录结果值。该可调用对象应将 `X` 中的两行作为输入,并返回相应的核值作为单个数字。这意味着不允许使用 sklearn.metrics.pairwise 中的可调用对象,因为它们对矩阵而不是单个样本进行操作。请改用标识核的字符串。

filter_params布尔值,默认为 `False`

是否过滤无效参数。

n_jobs整型,默认为 `None`

用于计算的并行作业数。通过将成对矩阵分解为 `n_jobs` 个均匀切片并使用多线程计算来完成。

None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。更多详细信息请参阅词汇表

**kwds可选关键字参数

任何其他参数将直接传递给核函数。

返回:
K形状为 (n_samples_X, n_samples_X) 或 (n_samples_X, n_samples_Y) 的 `ndarray`

一个核矩阵 K,如果 Y 为 None,则 K_{i, j} 是给定矩阵 X 中第 i 个和第 j 个向量之间的核。如果 Y 不为 None,则 K_{i, j} 是 X 中第 i 个数组和 Y 中第 j 个数组之间的核。

注意

如果 `metric` 是一个可调用对象,则对 XY 的维度没有限制。

示例

>>> from sklearn.metrics.pairwise import pairwise_kernels
>>> X = [[0, 0, 0], [1, 1, 1]]
>>> Y = [[1, 0, 0], [1, 1, 0]]
>>> pairwise_kernels(X, Y, metric='linear')
array([[0., 0.],
       [1., 2.]])