python - Scikit-learn 的 Kernel PCA:如何在 KPCA 中实现各向异性高斯内核或任何其他自定义内核?
问题描述
我目前正在使用Scikit-learn 的 KPCA对我的数据集执行降维。它们具有各向同性的高斯核(RBF 核),它只有一个值 gamma。但是现在,我想实现一个各向异性的高斯核,它具有许多取决于维数的 gamma 值。
我知道 Kernel PCA 有一个预计算内核的选项,但我找不到任何用于降维的代码示例。
有谁知道如何在 sklearn KPCA 中实现自定义内核?
解决方案
我找到了解决这个问题的方法。
首先,您必须定义自己的内核函数,该函数返回样本之间的 gram 矩阵。
def customkernel(X1,X2,etc):
k = yourkernelfunction(X1,X2,etc)
return k
如果我们想将大小为nxm的数据集x拟合到我们的 KernelPCA 模型中并将其转换为nx n_princomp,我们需要的是
KPCA = kpca(n_princomp,kernel='precomputed')
gram_mat = customkernel(x,x)
transformed_x = KPCA.fit_transform(gram_mat)
接下来,如果我们想将另一个大小为N xm的数据集X转换为N x n_princomp,我们要做的就是计算一个新的 gram 矩阵,其中 X 为 X1,x 为 X2。
new_gram_mat = customkernel(X,x)
transformed_X = KPCA.transform(new_gram_mat)
推荐阅读
- javascript - 谷歌地图 - 具有独特信息窗口的多个标记
- javascript - 在 asp.net 核心应用程序中使用 Paho mqtt js 库
- c++ - 如何使用 libcurl 发送soap(xml)请求
- excel - 运行时错误 9 - 下标超出范围
- php - RewriteCond 使用 PHP 和 .htaccess
- c++ - 定义一个指针随机地使程序崩溃
- c# - 如何在异常过滤器范围内获取应用程序库 url?
- mongodb - 在mongodb中进行多次搜索并替换?
- html - 具有基线配置文件和 h264 编码的 Mp4 无法在 chrome 中播放
- beautifulsoup - 仅当标签以简洁的方式存在时才获取标签的字符串值的Beautifulsoup方法?