Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scikit学习';s内核PCA:如何在KPCA中实现各向异性高斯内核或任何其他自定义内核?_Python_Scikit Learn - Fatal编程技术网

Python Scikit学习';s内核PCA:如何在KPCA中实现各向异性高斯内核或任何其他自定义内核?

Python Scikit学习';s内核PCA:如何在KPCA中实现各向异性高斯内核或任何其他自定义内核?,python,scikit-learn,Python,Scikit Learn,我目前正在使用对数据集执行降维。它们具有各向同性高斯核(RBF核),该核只有一个值gamma。但是现在,我想实现一个各向异性高斯核,它有许多伽马值,这些值取决于维数 我知道内核PCA有一个选项用于预计算内核,但我找不到任何用于降维的代码示例 有人知道如何在sklearn KPCA中实现自定义内核吗?我找到了这个问题的解决方案 首先,您必须定义自己的内核函数,该函数返回样本之间的gram矩阵 def customkernel(X1,X2,etc): k = yourkernelfuncti

我目前正在使用对数据集执行降维。它们具有各向同性高斯核(RBF核),该核只有一个值gamma。但是现在,我想实现一个各向异性高斯核,它有许多伽马值,这些值取决于维数

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


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

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

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

def customkernel(X1,X2,etc):
    k = yourkernelfunction(X1,X2,etc)
    return k
如果我们想将大小为nxm的数据集x拟合到我们的KernelPCA模型中,并将其转换为nxn\u princomp,我们需要的是

KPCA = kpca(n_princomp,kernel='precomputed')
gram_mat = customkernel(x,x)
transformed_x = KPCA.fit_transform(gram_mat)
接下来,如果我们想将另一个大小为nxm的数据集X转换为nxn_-princomp,我们需要做的是计算一个新的gram矩阵,其中X为X1,X为X2

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