【问题标题】:Extract principal axes in feature space from Kernel PCA in sklearn从sklearn中的Kernel PCA中提取特征空间中的主轴
【发布时间】:2021-03-14 09:54:17
【问题描述】:

有一个基因表达数据子集构成 6 个没有目标的特征列。在 sklearn 中使用 PCA,我可以通过使用 PCA 在特征空间中提取主轴来分离 6 个特征。考虑到 KernelPCA 中不存在 components_ 属性,是否可以使用 KernelPCA 绘制类似的图形?这是我的代码取自here,做了一些小改动。

很明显,使用 KernelPCA(kernel="linear") 应该会导致与 PCA 相同的结果。

from sklearn.decomposition import PCA,KernelPCA
from sklearn.preprocessing import StandardScaler
from bioinfokit.analys import get_data
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = get_data('gexp').data
df_st =  StandardScaler().fit_transform(df)
pca_out = PCA().fit(df_st)
loadings = pca_out.components_


fig, ax = plt.subplots(1,2)
zz=[]
for i in df.columns.values:
 zz.append(i)
ax[0].scatter(loadings[0],loadings[1])
for i, txt in enumerate(zz):
    ax[0].annotate(zz[i], (loadings[0][i], loadings[1][i]),fontsize=12)
plt.show()

########################## KernelPCA ###################

kpca=KernelPCA(kernel="linear")
kpca_o=kpca.fit(df_st)


#ax[1].scatter(kpca_o[0,:],kpca_o[1,:])

【问题讨论】:

    标签: python scikit-learn pca


    【解决方案1】:

    使用:kpca_o.alphas_array

    来源:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.KernelPCA.html

    alphas_array, (n_samples, n_components)

    Eigenvectors of the centered kernel matrix. If n_components and remove_zero_eig are not set, then all components are stored.
    

    【讨论】:

    • kpca_o.alphas 生成一个大小为 (662,6) 的矩阵,而 loadings = pca_out.components_ 是一个大小为 (6,6) 的矩阵
    猜你喜欢
    • 2018-02-13
    • 2016-10-11
    • 2015-11-01
    • 2018-06-08
    • 2019-08-10
    • 1970-01-01
    • 2020-11-12
    • 2017-04-21
    • 2018-08-20
    相关资源
    最近更新 更多