【问题标题】:Scikit-learn's Kernel PCA: How to implement an anisotropic Gaussian kernel or any other custom kernels in KPCA?Scikit-learn 的内核 PCA:如何在 KPCA 中实现各向异性高斯内核或任何其他自定义内核?
【发布时间】:2020-01-31 12:08:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    我发现了解决这个问题的解决方案。

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

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

    如果我们希望将数据集 x em> ,其中大小 nxm em> 进入我们的Kernelpca模型并将其转换为 nx n_princomp em> ,我们需要的是

    KPCA = kpca(n_princomp,kernel='precomputed')
    gram_mat = customkernel(x,x)
    transformed_x = KPCA.fit_transform(gram_mat)
    

    下一个,如果我们希望将另一个数据集 x 转换为大小 n xm em> 进入 n x n_princomp em> 我们要做的是使用x为x1和x计算新的克矩阵为x2。

    new_gram_mat = customkernel(X,x)
    transformed_X = KPCA.transform(new_gram_mat)    
    

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2013-01-09
      • 1970-01-01
      • 2014-04-15
      • 2020-03-15
      • 1970-01-01
      相关资源
      最近更新 更多