【发布时间】:2022-08-08 11:48:02
【问题描述】:
我正在尝试为内核 PCA 做一个碎石图。我的 X 中有 78 个特征和 247K 样本。我是内核 PCA 的新手,但是我已经多次使用了linear PCA 的碎石图。下面的代码为线性 PCA 绘制了碎石图。我想使用碎石图来决定在实际安装之前需要的组件数量。
pca = PCA().fit(X)
plt.figure()
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel(\'Number of Principle Components\')
plt.ylabel(\'Variance (%)\') #for each component
plt.title(\'Dataset Explained Variance\')
plt.show()
我尝试为内核 pca 复制相同的方法,但内核 PCA 不存在 explained_variance_ratio_ 方法,这就是我采用以下方法的原因。
pca = KernelPCA(kernel=\'rbf\',gamma=10,fit_inverse_transform=False).fit_transform(scaled_merged.iloc[0:1000:,])
explained_variance = np.var(pca, axis=0)
explained_variance_ratio = explained_variance / np.sum(explained_variance)
plt.figure()
plt.plot(np.cumsum(explained_variance_ratio))
plt.xlabel(\'Number of Components\')
plt.ylabel(\'Variance (%)\') #for each component
plt.title(\'Dataset Explained Variance\')
plt.show()
kernel PCA 代码的碎石图有一些问题,它表明我需要 150 个组件来表达接近 90% 的方差。我的代码有什么问题吗?
标签: python numpy scikit-learn pca