2
我正在尝试使用SciKit-Learn在我的数据集上执行PCA。我目前有2,208行和53,741列(特征)。所以我想用PCA来减少这个数据集的维数。SciKit-Learn:基本PCA混淆
我下面Hands-On Machine Learning with SciKit-Learn and TensorFlow
:
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95)
X_reduced = pca.fit_transform(X)
据我了解,这应该减少的列数,使得他们在总,解释方差的95%,在我的数据集。
现在我想看看有多少功能(列)留在X_reduced
:
X_reduced.shape
(2208, 1)
因此,它看起来像一个单一的功能占方差的至少95%的我的数据集...
1)这是非常惊人的,所以我看着最重要的方面多少贡献方差明智:
pca = PCA(n_components = 1)
X2D = pca.fit_transform(X)
print pca.explained_variance_ratio_
[ 0.98544046]
因此,它是98.5%!
我该如何弄清楚这个看似神奇的维度是什么?
2)做PCA时不需要包含我的目标值Y
值吗?
谢谢!
因此,如果98.5%的方差是由我的维度的这一个线性组合解释的,那么在使用'X_reduced'作为我的数据集而不是'X'时,我不应该期待类似的性能吗? – bclayman
不幸的是:http://blog.explainmydata.com/2012/07/should-you-apply-pca-to-your-data.html。例如,您可以采用与一组噪音特征高度相关的无噪音特征(想象一个人的真实重量和10个重量的不利估计),并且线性组合现在将具有比真实重量更多的噪音。 –