Matlab >N函数的主分量向量。之所以出现这种情况,是因为你拥有的特征比观察到的要多。这对PCA来说不是个好兆头。这是一个众所周知的事实,你必须有更多的数据点比你有功能。请仔细阅读pca的文档。此外,考虑使用 EIGS而不是 EIG >因为 EIGS将返回顶部 N

Matlab >N函数的主分量向量。之所以出现这种情况,是因为你拥有的特征比观察到的要多。这对PCA来说不是个好兆头。这是一个众所周知的事实,你必须有更多的数据点比你有功能。请仔细阅读pca的文档。此外,考虑使用 EIGS而不是 EIG >因为 EIGS将返回顶部 N,matlab,machine-learning,pca,Matlab,Machine Learning,Pca,>N函数的主分量向量。之所以出现这种情况,是因为你拥有的特征比观察到的要多。这对PCA来说不是个好兆头。这是一个众所周知的事实,你必须有更多的数据点比你有功能。请仔细阅读pca的文档。此外,考虑使用 EIGS而不是 EIG >因为 EIGS将返回顶部 N< /代码>特征向量。这可能是一个很好的选择。我所说的PCA仍然有效。您有太多的功能,但没有足够的观察。没什么可说的了。要么获取更多数据点,要么不使用PCA。同样,如果每个点有153600个特征。。。。有很多特点需要考虑。我见过的大多数机器学习系


>N函数的主分量向量。之所以出现这种情况,是因为你拥有的特征比观察到的要多。这对PCA来说不是个好兆头。这是一个众所周知的事实,你必须有更多的数据点比你有功能。请仔细阅读pca的文档。此外,考虑使用<代码> EIGS<代码>而不是<代码> EIG >因为<代码> EIGS将返回顶部<代码> N< /代码>特征向量。这可能是一个很好的选择。我所说的PCA仍然有效。您有太多的功能,但没有足够的观察。没什么可说的了。要么获取更多数据点,要么不使用PCA。同样,如果每个点有153600个特征。。。。有很多特点需要考虑。我见过的大多数机器学习系统都没有那么多的特性来表示一个数据点。。。。你可能还需要重新考虑你的整个管道。有趣的一点,但几乎没有什么用处。正如OP已经提到的:这将导致一个错误,因为没有足够的RAM来存储那么多的零(为什么您仍然要存储那么多的零)。
>> size(train_data)
ans =
         400      153600

>> [coefs,scores,variances] = pca(train_data);
>> size(coefs)
ans =
      153600         399

>> size(scores)
ans =

   400   399
>> size(variances)
ans =
    399     1
>> [V D] = eig(cov(train_data));
Out of memory. Type HELP MEMORY for your options.

Error in cov (line 96)
    xy = (xc' * xc) / (m-1);
>> eigs(cov(train_data));
Out of memory. Type HELP MEMORY for your options.

Error in cov (line 96)
    xy = (xc' * xc) / (m-1);
data = rand(400,401);
[coefs,scores,variances] = pca(data);
numel(variances) 
disp('Var explained ' num2str(cumsum(variances)) '%'])
pca(train_data,'Economy','off')