SKLearn 内核 PCA“预计算”参数

And*_*ham 5 python scikit-learn

我正在尝试使用 scikit-learn 执行内核 PCA,使用不在其实现中的内核(以及该内核识别的自定义输入格式)。如果我可以提前计算内核,保存它,然后在内核 PCA 中使用它,那可能是最简单的。

precomputed对 KernelPCA的争论意味着我可以做我想做的事;然而,它没有在文档中解释,我找不到任何使用它的例子。即使在sklearn 中 KernelPCA 的单元测试源代码中,代码似乎也没有真正说明预计算内核是什么。

有谁知道我将如何使用我自己的预计算内核?

eic*_*erg 7

在拟合时需要使用的预计算内核是样本之间的克矩阵。即,如果您有n_samples由 表示的样本x_i,那么您需要将为between和定义fit的矩阵作为第一个参数提供。GG_ij = K(x_i, x_j)i, j0n_samples - 1

例如对于线性内核,这是

def linear_kernel(X, Y):
    return X.dot(Y.T)

X = np.random.randn(10, 20)
gram = linear_kernel(X, X)
Run Code Online (Sandbox Code Playgroud)

为了预测X_test你需要通过

X_test = np.random.randn(5, 20)
gram_test = linear_kernel(X_test, X)
Run Code Online (Sandbox Code Playgroud)

这将在单元测试中看到,例如here