【问题标题】:Scree Plot for Kernel PCA内核 PCA 的屏幕图
【发布时间】: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


    【解决方案1】:

    原因很简单。 kPCA 中的特征值之和与总解释方差不对应。它是一个核矩阵,但不是训练数据的协方差矩阵。但是,您可以绘制特征值并查看肘部。

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 2018-09-30
      • 2019-05-02
      • 2015-06-19
      • 2015-07-20
      • 2014-10-10
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      相关资源
      最近更新 更多