使用 PCA 投影到 Octave 中的低维 space

Using PCA to project onto a lower dimensional space in Octave

我有以下大小为 300 x 2 的矩阵,其中包含最小-最大归一化数据:

# Pre-Process data
scaled_acc = preprocess(mtx_accuracy);

# PCA on mtx_accuracy
[pcvars pcvecs] = princomp(scaled_acc);

preprocess是缩放函数:

function zScore = preprocess(data)
    means = ones(length(data),1);
    means = means * mean(data);
    stds = ones(length(data),1);
    stds = stds * std(data);
    zScore = (data - means) ./ stds;
endfunction

如何减少(到一维)和投影数据,以便我有一个列向量?

第二个输出变量 pcvecs 已经包含 n 维度的投影数据,其中 n 是数据矩阵中的总列数。因此,如果您希望看到您的数据投影到 m 维度的子集上,其中 m < n,您只需提取 pcvecs 的前 m 列。

在您的情况下,m=1,因此它只是:

reduced = pcvecs(:,1);