【发布时间】: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