代码仅供思路参考————>
estimateGaussian.m:
mu = ( sum(X, 1) )'./m; %(n*1)
temp = bsxfun(@minus, X, mu'); %(m*n)
sigma2 = ( sum( (temp.^2), 1) )'./m; %(n*1)
selectThreshold.m:
predictions = (pval < epsilon); %标出异常的数据
true_pos = sum( (predictions== 1) & (yval==1) ); %真阳性
false_pos = sum( (predictions== 1) & (yval==0) ); %假阳性
false_neg = sum( (predictions== 0) & (yval==1) ); %假阴性
pre = true_pos / (true_pos + false_pos);
rec = true_pos / (true_pos + false_neg);
F1 = 2*pre*rec/(pre + rec);
cofiCostFunc.m:
temp = (X*Theta').*R; %(1682*943)
J = sum( sum( (temp - Y.*R).^2) )/2.0 + (lambda/2) * ( sum(sum( X.^2 )) + sum(sum( Theta.^2 )) );
X_grad = (temp - Y.*R) * Theta + lambda * X;
Theta_grad = (temp - Y.*R)' * X + lambda * Theta;
%用for循环,比较繁琐的解法
%for i = 1:size(R, 1)
% %每部电影 共迭代1682次
% idx = find(R(i, :)==1); %该行中已经评分的列索引
% temp_Theta = Theta(idx, :); %(1*3)
% temp_Y = Y(i, idx); %(1*943)
%
% X_grad(i, :) = ( X(i, :) * temp_Theta' - temp_Y ) * temp_Theta;
%
%end
%
%for j = 1:size(R, 2)
% %每个用户 共迭代943次
% idx = find(R(:, j)==1); %该列中已经评分的行索引
% temp_X = X(idx, :); %(q*3)
% temp_Y = Y(idx, j); %(q*1)
%
% Theta_grad(j, :) = ( Theta(j, :) * temp_X' - temp_Y' ) * temp_X;
%
%end