zoukankan      html  css  js  c++  java
  • 【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
     

     

  • 相关阅读:
    【概念】指针
    【c++】随机数
    组装一台计算机
    模拟打印机
    实现手机的某些功能
    作业
    static 静态内部类
    java中编译报错 ClassCastException 是什么原因,如何处理
    作业1 2
    作业2
  • 原文地址:https://www.cnblogs.com/liyuxia713/p/2735904.html
Copyright © 2011-2022 走看看