zoukankan      html  css  js  c++  java
  • (一)梯度下降求解线性回归

    学习才能消去恐惧叭

    Part 1: Basic Function

    % 完成 warmUpExercise.m
    fprintf('Running warmUpExercise ... 
    ');
    fprintf('5x5 Identity Matrix: 
    ');
    warmUpExercise()

     warmUpExercise返回一个n为5的单位矩阵

    function A = warmUpExercise()
    
    A = eye(5);

    Part 2: Plotting

    data = load('ex1data1.txt');    %读入数据
    X = data(:, 1); y = data(:, 2);  %X为数据的第一列,Y为第二列
    m = length(y); % 训练集数据条数
    
    plotData(X, y);  

    marker是图上画上点的地方表上符号,不如点,方框,圆框,十字,星号,等等
    后面的size就是其大小了,不知道值的话,可以画完图点编辑框上面的箭头,然后双击画的图,下面出现属性框,marker项后面的数字下拉菜单就是size,选择合适的大小,今后就用这个值就行。

    function plotData(x, y)
    
    figure(1); % open a new figure window
    plot(x,y,'rx','MarkerSize',10);
    
    xlabel('Population of City in 10,000s');
    ylabel('Profit in $10,000s');

    数据分布图如下:

      

    Part 3: Cost and Gradient descent

    1、梯度下降前的数据预处理与设置

    X = [ones(m, 1), data(:,1)]; % 添加x0列,全置为1
    theta = zeros(2, 1); % 初始化theta
    
    iterations = 1500;  %迭代次数
    alpha = 0.01;     %学习率alpha

    2、计算损失函数

    线性回归的损失函数为: 

    预测值hypothesis hθ(x)为:

    function J = computeCost(X, Y, theta)
    m = length(Y); 
    
    J = (1/(2*m))*sum((X*theta-Y).^2); 

      3、执行梯度下降 

  • 相关阅读:
    130被围绕的区域
    129求根到叶子节点数字之和
    单表查询
    数据的增删改
    多表结构的创建与分析
    修改表结构
    完整性约束
    基础操作和数据类型
    存储引擎
    Python3.8爬天气网站信息,并保存为CSV(11)
  • 原文地址:https://www.cnblogs.com/Xycdada/p/11219193.html
Copyright © 2011-2022 走看看