这是week9的第一题,改天再写第二题
function [mu sigma2] = estimateGaussian(X)
[m, n] = size(X);
mu = zeros(n, 1);
sigma2 = zeros(n, 1);
for i=1:n
mu(i,1)=sum(X(:,i))/m;
end
for i=1:n
sigma2(i,1)=(X(:,i)-mu(i,1))'*(X(:,i)-mu(i,1))/m;
end
function [bestEpsilon bestF1] = selectThreshold(yval, pval)
bestEpsilon = 0;
bestF1 = 0;
F1 = 0;
nt=size(pval,1);
stepsize = (max(pval) - min(pval)) / 1000;
for epsilon = min(pval):stepsize:max(pval)
tp=0;
fp=0;
fn=0;
for j=1:nt
if(pval(j,1)<epsilon && yval(j,1)==1)
tp=tp+1;
end
if(pval(j,1)<epsilon && yval(j,1)==0)
fp=fp+1;
end
if(pval(j,1)>=epsilon && yval(j,1)==1)
fn=fn+1;
end
end
prec=tp/(tp+fp);
rec=tp/(tp+fn);
F1=2*prec*rec/(prec+rec);
if F1 > bestF1
bestF1 = F1;
bestEpsilon = epsilon;
end
end
end