Scikit-learn主成分分析(PCA)用于降维

时间:2017-10-12 06:34:21

标签: python scikit-learn pca feature-extraction

我想对降维和数据集成进行主成分分析。

我有3个功能(变量)和5个样本,如下所示。我想通过转换它们(计算第一台PC)将它们集成到一维(1个特征)输出中。我想使用转换后的数据进行进一步的统计分析,因为我相信它会显示出主要的' 3输入特征的特征。

我首先用python编写了一个测试代码,使用scikit-learn如下所示。简单的情况是3个特征的值都是等价的。换句话说,我将PCA用于三个相同的向量,[0,1,2,1,0]。

代码

import numpy as np
from sklearn.decomposition import PCA
pca = PCA(n_components=1)
samples = np.array([[0,0,0],[1,1,1],[2,2,2],[1,1,1],[0,0,0]])
pc1 = pca.fit_transform(samples)
print (pc1)

输出

[[-1.38564065]
[ 0.34641016]
[ 2.07846097]
[ 0.34641016]
[-1.38564065]]
  1. 在降维后采用第一个PCA进行数据集成是否正确?
  2. 1-2。例如,如果特征类似于[功率等级,速度等级],则功率与速度大致呈负相关,当它是2特征情况时。我想知道具有高功率和高功率的样品。和高速'。很容易确定[功率1,速度1]优于[功率2,速度2],但对于[功率4,速度2]与[功率3,速度3]的情况很难。 因此,我想将PCA应用于二维功率和速度'数据集,并采取第一台PC,然后使用第一台PC'的等级。这种方法仍然适用吗?

    1. 在这种情况下,我认为输出也应该是[0,1,2,1,0],它与输入相同。但输出为[-1.38564065,0.34641016,2.07846097,0.34641016,-1.38564065]。代码有问题,还是正确答案?

2 个答案:

答案 0 :(得分:6)

  1. 是。它也被称为数据投影(向较低维度)。
  2. 根据列车数据,结果输出居中且normalized。结果是正确的。
  3. 如果只有5个样本我不认为运行任何统计方法是明智的。如果您认为您的功能相同,只需检查尺寸之间的相关性是否接近1,然后您可以忽略其他尺寸。

答案 1 :(得分:2)

此小型数据集无需使用PCA。对于PCA,你应该缩放数组。

在任何情况下,你只有3个维度:你可以用你的眼睛绘制点并看一看,你可以计算距离(在最近邻域算法上做一些)。