首页 > 解决方案 > 可以为主成分分析 (pca) 缩放标记/二进制数据吗?

问题描述

我有一个数据集,其中包含大约 20 列标记数据(用 编号sklearn.preprocessing.LabelEncoder)、140 个二进制列(0 和 1)和 3 列数值。这个数据集中大约有 4400 行,我很难在这个数据集上训练一个深度神经网络,所以我决定减少特征并删除不必要的特征。

所以这就是我所做的:我缩放了这 3 列并进行了 PCA,sklearn.decomposition.PCA()但结果是 pca1 为 99.7%,pca2 为 0.3%,其他 pca 为 0。

然后出于某种随机原因,我尝试缩放整个数据集:

df = sklearn.preprocessing.scale(df)

并再次尝试 PCA,这一次,结果更有希望(但我猜并不完美)。这是 pcas:

>>> print(np.round(pca.explained_variance_ratio_ * 100, decimals=1))
[2.7 2.1 1.8 1.4 1.3 1.2 1.1 1.1 1.  1.  0.9 0.9 0.9 0.8 0.8 0.8 0.8 0.7
 0.7 0.7 0.7 0.7 0.7 0.7 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.5
 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
 0.4 0.4 0.4 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.2 0.2
 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
 0.1 0.1 0.1 0.1 0.1 0.  0.  0.  0.  0.  0. ]

所以这是我的问题:

  1. 是否允许以这种方式扩展数据?(缩放标记/二进制数据)

  2. 如果是,这种 PCA 对特征提取有用吗?(因为最好的 pca 是 2.7%)

PS我对这些东西很陌生。如果我需要提供任何其他信息,请告诉我。

标签: scalingpcafeature-extraction

解决方案


推荐阅读