【发布时间】:2011-11-13 10:31:23
【问题描述】:
我有 2 个不同的文件,其中一个是具有 3823*63 个元素(3823 个输入和 63 个特征)的输入矩阵 (X),另一个是具有 3823*1 的类向量 (R)元素;这些元素的值从 0 到 9(有 10 个类)。
我必须为每个类计算协方差矩阵。到目前为止,我只能为每个具有这么多嵌套循环的类计算平均向量。然而,它导致我脑死亡。
还有其他简单的方法吗?
有我的目的的代码(感谢 Sam Roberts):
xTra = importdata('optdigits.tra');
xTra = xTra(:,2:64); % first column's inputs are all zero
rTra = importdata('optdigits.tra');
rTra = rTra(:,65); % classes of the data
c = numel(unique(rTra));
for i = 1:c
rTrai = (rTra==i-1); % Get indices of the elements from the ith class
meanvect{i} = mean(xTra(rTrai,:)); % Calculate their mean
covmat{i} = cov(xTra(rTrai,:)); % Calculate their covariance
end
【问题讨论】:
-
你确定这是必要的吗?您可能想到了一个完全不同的应用程序,如果是这样,请与我分享,但我不熟悉使用类标签计算协方差。例如,我计算一个 cov 矩阵作为 PCA 的谓词步骤,但所需的结果只是一个二维矩阵 (n x n),给出了特征的成对协方差(这是我计算特征向量所需的全部)。 i/o/w 不需要类标签。
-
@doug 我要编辑问题并再添加一个标签。
标签: matlab machine-learning covariance