的協方差我試圖計算一組給定的意見的均值和方差矩陣。點的列表是一個3 d陣列與表示的類別號,代表觀測數和表示座標數第三維度的第二維度的第一維度。雖然我已經能夠計算出平均值,似乎有一些問題,協方差(現在,我得到一個零矩陣)。如果有人能告訴我如何糾正,我將不勝感激。計算不同類別
function [ meanEst, covEst, priorProbEst, classMem ] = estimateParams(trainingSet, classList)
%estimateParams estimate all parameters for each class
numRows = size(trainingSet, 1);
numClasses = max(classList.');
%pointList = zeros(numClasses, numRows, 2);
classMem = zeros(numClasses, 1);
for rowCtr = 1:numRows
curClass = classList(rowCtr, 1);
classMem(curClass) = classMem(curClass) + 1;
pointList(curClass, classMem(curClass), 1) = trainingSet(rowCtr, 1);
pointList(curClass, classMem(curClass), 2) = trainingSet(rowCtr, 2);
end
meanEst = zeros(numClasses, 2);
covEst = zeros(numClasses, 2, 2);
priorProbEst = zeros(numClasses, 1);
tot = zeros(numClasses, 2);
for classCtr = 1:numClasses
for pointCtr = 1:classMem(classCtr)
tot(classCtr, 1) = tot(classCtr, 1) + pointList(classCtr, pointCtr, 1);
tot(classCtr, 2) = tot(classCtr, 2) + pointList(classCtr, pointCtr, 2);
end
meanEst(classCtr, 1) = tot(classCtr, 1)/classMem(classCtr);
meanEst(classCtr, 2) = tot(classCtr, 2)/classMem(classCtr);
covEst(classCtr) = cov(pointList(classCtr));
priorProbEst(classCtr) = classMem(classCtr)/numRows;
end
end
感謝您花時間在此!
難道你不想引用哪個矩陣(mxn)來計算每次迭代的協方差矩陣嗎? – 2012-09-02 20:43:15
@diophantine我想根據點的列表計算每個類的協方差矩陣。由於pointList是一個3d數組,通過指定classCtr,我可以得到一個簡單的觀察矩陣。我將這些觀察結果作爲論點來調用cov方法。我在哪裏錯了? – Arani