【问题标题】:When to apply Principal Component Analysis PCA [closed]何时应用主成分分析 PCA [关闭]
【发布时间】:2021-12-02 13:02:21
【问题描述】:

我何时应用 PCA,是在对整个数据集进行预处理(即删除空值、编码等)之后还是之前?在我完全预处理我的数据集后,

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train[:,0:14] = sc.fit_transform(x_train[:,0:14])
x_test[:,0:14] = sc.transform(x_test[:,0:14])

我只剩下形状,113126x91

【问题讨论】:

  • 您是要删除分析应该找到的特征,还是应该忽略的特征?
  • PCA 用于查找描述数据方差的最相关特征。例如:假设你有 100 个属性。但其中一些已经相互依赖,使用 30 个属性足以解释 %95 的数据实际含义(方差)。根据这些信息,在缩放后实施 PCA 会更好。因此,PCA 不会因为属性尺度不同而产生偏差。请查收:scikit-learn.org/stable/auto_examples/preprocessing/…
  • 对不起,如果我的 q 没有任何意义,但我想知道我们是否需要在预处理之后或在预处理数据之前执行它。
  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654323@.

标签: python machine-learning scikit-learn pca


【解决方案1】:

在缩放数据上应用 PCA 效果更好,因为您不会面临特征之间的大与小问题。

Large vs. Tiny 问题意味着特征的方差会不同。例如,在数据集中,一个特征的范围为 (-5, +5),而另一个特征的范围为 (-10000, +10000)。具有较大值的特征可以主导该过程。

PCA 是一种降维技术,用于通过将大量变量转换为仍包含大型组中大部分信息的较小变量来降低大型数据集的维度。为了减少维度,PCA 采用具有更高特征值的特征向量并将您的数据点映射到这些向量;因此降维了。

让我举一个例子,说明在缩放后应用 PCA 会有什么帮助。

让我导入一些我们将用于此示例的有价值的东西。

import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import scale, normalize
import matplotlib.pyplot as plt

# For reproducibility 
np.random.seed(123)

让我创建一个虚拟数据集,我们将在该数据集上看到在缩放前后应用 PCA 的效果。

rows = 100
features = 7

X = np.random.normal(size=[rows, features])
X = np.append(X, 3*np.random.choice(2, size = [rows,1]), axis = 1)

在变量 X 中创建了一个虚拟数据集,其中包含 100 个示例和 7 个特征。现在让我们在不缩放的情况下对其应用 PCA 并绘制数据。

pca = PCA(2)
low_x = pca.fit_transform(X)
plt.scatter(low_x[:,0], low_x[:,1])

这是在未缩放数据集的情况下将特征数量从 7 个减少到 2 个后的数据图。您可以看到数据点非常接近且杂乱无章。一个特征比另一个特征具有更高的方差。对于进一步的处理或建模,这会影响结果。

让我们先应用特征缩放,然后将 PCA 应用到数据集。

X_normalized = normalize(X)
pca = PCA(2)
low_x = pca.fit_transform(X_noramlized)
plt.scatter(low_x[:,0], low_x[:,1])

在下图中,数据清晰且分散。两个特征的方差没有太大区别。

因此,在将 PCA 应用于数据集之前应用归一化总是更好。

但请始终记住一件事,数据科学对开发人员来说大多是热门和尝试。如果它对你的结果没有帮助,试试这个,你总是可以尝试不同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 2013-03-31
    • 2012-10-24
    • 2013-04-07
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多