【Stanford Machine Learning Open Course】15. week6编程题解
这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是: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
转载请注明出处: http://www.cnblogs.com/liyuxia713/