使用 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);
我有以下大小为 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);