SKLearn Kernel PCA" Precomputed"争论

时间:2014-08-18 02:33:39

标签: python scikit-learn

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

KernelPCA的precomputed参数意味着我能够做我想做的事;但是,它没有在文档中解释,我找不到任何使用它的例子。即使在the unit test source code for KernelPCA in sklearn中,代码似乎也没有真正说明预先计算的内核是什么。

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

1 个答案:

答案 0 :(得分:4)

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

E.g。对于线性内核,这是

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

X = np.random.randn(10, 20)
gram = linear_kernel(X, X)

对于X_test的预测,您需要传递

X_test = np.random.randn(5, 20)
gram_test = linear_kernel(X_test, X)

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