您的位置:首页 > 编程语言

【Stanford Machine Learning Open Course】15. week6编程题解

2012-10-24 12:20 375 查看
这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是:https://class.coursera.org/ml-2012-002/lecture/index

编程题地址:https://class.coursera.org/ml-2012-002/assignment/index

本周题目包括:

1. 线性回归问题的成本函数和梯度(正则化的)

2. 学习曲线 ( learning curve)

3. 特征扩充 (poly features)

4. 验证曲线(validation curve)

实现:( 可到此下载 )

1. 线性回归问题的成本函数和梯度(正则化的)

function [J, grad] = linearRegCostFunction(X, y, theta, lambda)

% Initialize some useful values
m = length(y); % number of training examples

% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));

J = 1/2/m*sum( (X*theta-y).^2 ) + lambda/2/m*sum( theta(2:end,1).^2 );
grad = 1/m*((X*theta-y)'*X)' + lambda/m*[zeros(1); theta(2:end,1)];

grad = grad(:);

end


2. 学习曲线 ( learning curve)

function [error_train, error_val] = ...
learningCurve(X, y, Xval, yval, lambda)

m = size(X, 1);
error_train = zeros(m, 1);
error_val   = zeros(m, 1);

X=[ones(m,1) X];
mval=size(Xval,1);
Xval=[ones(mval,1) Xval];
for i = 1 : m
X1 = X(1:i,:);
y1 = y(1:i,:);
theta = trainLinearReg(X1, y1, lambda);
error_train(i) = 1/2/i*sum( (X1*theta-y1).^2 );
error_val(i) = 1/2/mval*sum( (Xval*theta-yval).^2 );
end

end


3. 特征扩充 (poly features)

function [X_poly] = polyFeatures(X, p)

X_poly = zeros(numel(X), p);

for i = 1:p
X_poly(:,i) = [X.^i];
end

end


4. 验证曲线(validation curve)

function [lambda_vec, error_train, error_val] = ...
validationCurve(X, y, Xval, yval)

% Selected values of lambda (you should not change this)
lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';

% You need to return these variables correctly.
error_train = zeros(length(lambda_vec), 1);
error_val = zeros(length(lambda_vec), 1);

m=size(X,1);
X=[ones(m,1) X];
mval=size(Xval,1);
Xval=[ones(mval,1) Xval];

for i=1:length(lambda_vec)
lambda = lambda_vec(i);
theta = trainLinearReg(X, y, lambda);
error_train(i) = 1/2/m*sum( (X*theta-y).^2 );
error_val(i) = 1/2/mval*sum( (Xval*theta-yval).^2 );
end

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: