gpt4 book ai didi

python - Scikit-learn 的内核 PCA : How to implement an anisotropic Gaussian kernel or any other custom kernels in KPCA?

转载 作者:行者123 更新时间:2023-12-01 15:50:35 26 4
gpt4 key购买 nike

我目前正在使用 Scikit-learn's KPCA对我的数据集执行降维。它们具有各向同性的高斯核(RBF 核),它只有一个值 gamma。但是现在,我想实现一个各向异性的高斯核,它具有许多取决于维数的 gamma 值。

我知道 Kernel PCA 有一个选项 预计算 内核,但我找不到任何用于降维的代码示例。

有谁知道如何在 sklearn KPCA 中实现自定义内核?

最佳答案

我找到了解决这个问题的方法。

首先,您必须定义自己的内核函数,该函数返回样本之间的 gram 矩阵。

def customkernel(X1,X2,etc):
k = yourkernelfunction(X1,X2,etc)
return k

如果我们想拟合一个数据集 x 与大小 n x m 进入我们的 KernelPCA 模型并将其转换为 n x n_princomp ,我们需要的是
KPCA = kpca(n_princomp,kernel='precomputed')
gram_mat = customkernel(x,x)
transformed_x = KPCA.fit_transform(gram_mat)

接下来,如果我们要转换另一个数据集 X 与大小 N x m 进入 N x n_princomp 我们要做的是计算一个新的 gram 矩阵,其中 X 为 X1,x 为 X2。
new_gram_mat = customkernel(X,x)
transformed_X = KPCA.transform(new_gram_mat)

关于python - Scikit-learn 的内核 PCA : How to implement an anisotropic Gaussian kernel or any other custom kernels in KPCA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58197672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com