PCA 回归问题

数据挖掘 Python 主成分分析
2022-02-23 14:38:35

我有一个回归问题,我的数据有 21 个特征,我希望使用 PCA 应用降维。据我所知,到目前为止我看到的所有教程都使用 PCA 来解决分类问题。我确实为回归做了 PCA,但我无法显示漂亮的散点图,这些散点图在 x 轴上显示 PC1,在 y 轴上显示 PC2,而目标在中间。

我写了以下代码

        X = self.X

        pca = PCA(n_components=NUM_FEATURES_PCA)
        principal_components = pca.fit_transform(X)

        principalDf = pd.DataFrame(data=principal_components,
                                   columns=['PC1', 'PC2'])
        finalDf = pd.concat([principalDf, self.df[[self.target_variable]]], axis=1)
        plt.scatter(finalDf.loc[self.df[self.target_variable], 'PC1']
                   , finalDf.loc[self.df[self.target_variable], 'PC2'], s=50)
        plt.xlabel('PC1', fontsize=15)
        plt.ylabel('PC2', fontsize=15)
        plt.title('2 component PCA', fontsize=20)
        plt.show()

所以换句话说,我们可以在回归中为 PCA 显示这样的图吗?或者我们应该通过分箱或类似方式将连续目标变量转换为分类(标记为一个)?

参考:这些地块

1个回答

首先,您可以将解释变量(连续)投影在您的第一个平面(PC1 + PC2)上。箭头(投影)的方向以及距轴原点的距离将告诉您根据因子平面中变量的这种表示如何分布点。

另一方面,快速的答案是将连续变量分组(将变量分解为序数变量),然后您将获得与参考相同的图。

此外,您可以尝试使用色标(从白色到黑色,从红色到蓝色......)为散点图着色,然后您会看到根据连续的阶乘平面中的数据是否有某种进展多变的。

这三种“策略”实际上表现出相同的效果,尽管第二种对削减更为敏感。

总结:

  1. 在阶乘平面中投影连续变量(PCA 通常做的)。
  2. 将您的连续变量分组并绘制它(虽然它很敏感,但更容易查看)。
  3. 使用比例(使用连续变量的最小值和最大值)为散点图着色。