Andrew NG机器学习线性回归编程作业

这篇博客记录了作者在Coursera上Andrew Ng机器学习课程中关于线性回归编程作业的学习过程,包括单变量线性回归的实现、Matlab基础知识、编程理解和作业解析。内容涉及数据加载、函数编写、画图、梯度下降算法和代价函数的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备注: Coursera上Andrew Ng的机器学习课程有8次编程作业。本帖记录我练习过程中学到的知识,希望对大家有帮助。Andrew NG机器学习线性回归编程作业详细分析,这篇耗费巨大心血,非常适合小白去做NG课程作业时参考,部分代码不好理解(先放弃),重点理解NG留的那些空的代码,然后参考我整理的另一篇博客,线性规划的Matlab代码总结,结合着看,慢慢就懂了,加油


背景

在本次练习中,需要实现一个单变量的线性回归。假设有一组历史数据<城市人口,开店利润>,现需要预测在哪个城市中开店利润比较好?

历史数据如下:第一列表示城市人口数,单位为万人;第二列表示利润,单位为10,000$

    5.5277    9.1302
    8.5186   13.6620
    7.0032   11.8540
    .....
    ......

补充matlab知识

  1. Matlab的工作目录
    使用matlab中图形化的Current Folder面板可以修改当前工作目录
    这里写图片描述
    只有进入工作目录, Matlab才能默认找到该目录下的各种文件。

  2. 可以使用命令来调整工作目录
    pwd 查看当前工作目录
    用于当前工作目录的路径。例如:

    pwd
    ans =C:\MATLAB7\work

    cd 进入某目录,用于切换当前工作目录。例如:

    cd(‘c:/toolbox/matlab/demos’) %切换当前工作目录到demos
    cd .. %切换当前工作目录到matlab

    ls 列出当前目录下的内容
    直接打出ls就可以

  3. m脚本文件
    matlab是解释型的语言,在命令行界面可以输入命令执行。脚本文件就是把多个命令合在一起,在命令行调用这个脚本文件就可以执行文件里面的一句句命令。
    例如在命令行输入两条命令
    这里写图片描述
    执行后可以在Workspace窗口看到已有的变量
    这里写图片描述
    我们也可以使用脚本文件来完成相同的事情。新建一个文件,内容为
    c = 7
    d = c*7

    保存到当前工作目录下,命名script1.m。然后在命令界面输入script1,就相当于执行了文件里的这两条语句。之后在Workspace窗口可以看到变量c和d。
    备注:matlab 的editor怎么打开?
    直接点File下的新建m文件图标
    Ctrl+N

  4. m函数文件
    函数文件用来定义matlab中的函数,可以供上层调用。 函数文件要保存为 函数名.m ,才可以通过函数名来调用。经过我的测试,文件名和文件中的函数名不一致时,以文件名为准。

function 返回值 = 函数名(输入参数)
           % YOUR CODE HERE 
End

返回值和输入参数都可以有多个,之间用逗号隔开。返回值有多个的时候要用方括号包起来。

function [返回值1, 返回值2] = 函数名(输入1,输入2,输入3) 
            % YOUR CODE HERE 
End

示例:
我们新建一个f1.m,内容如下

function s = f1(a)
 s = a+8; 
end

保存到工作目录后就可以使用这个函数
这里写图片描述

5.语句中的分号
语句不带分号会输出运行结果,如果语句带分号则不输出结果。
这里写图片描述
6.第一次编程作业的文件如下图
这里写图片描述
脚本文件ex1用来执行单变量线性回归,ex1_multi.m用来执行多变量线性回归。submit.m用来提交你的作业到服务器,本文不包含对这部分代码的分析。

编程过程及其理解

1.初始化Initialization

%% Initialization
clear all; close all; clc

备注:
1.两个百分号%%是matlab中用来表示代码块的注释。从%%开始到下一个%%之间会作为一个代码块,在matlab中查看时会用黄白相间显示
2.clear 清除工作区的所有变量。还可以后面跟变量名来清除某个变量。
3.close all 关闭所有窗口(显示图像的figure窗口)
4.clc 清除命令窗口的内容(就是命令界面以前的命令)
5.% 代表注释行

2. 基础函数 Part 1:Basic Function
这里写图片描述

% Complete warmUpExercise.m 
fprintf('Running warmUpExercise ... \n');
fprintf('5x5 Identity Matrix: \n');
warmUpExercise()

fprintf('Program paused. Press enter to continue.\n');
pause;

完成warmUpExercise.m 的函数
注释
1.fprintf的用法
fprintf和c语言中的printf用法类似,用于格式化输出,也支持%d等占位符,也可以直接输出字符串,\n表示换行符。Matlab中字符串用单引号括起来。fprintf函数可以将数据按指定格式写入到文本文件中。
数据的格式化输出:fprintf(fid,format,variables)
按指定的格式将变量的值输出到屏幕或指定文件
fid为文件句柄,若缺省,则输出到屏幕
format用来指定数据输出时采用的格式
%d 整数
%e实数:科学计算法形式
%f实数:小数形式
%g由系统自动选取上述两种格式之一
%s输出字符串
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
2.\n是换行,英文是New line,表示使光标到行首。
\r是回车,英文是Carriage return,表示使光标下移一格。
3.pause用来暂停。
中间调用了warmUpExercise函数,也就是warmUpExercise.m对应的函数。这个函数要求输出一个5*5的单位矩阵,直接使用eye函数就可以了。
3.函数warmUpExercise()如下

function A = warmUpExercise()
A = [];
A = eye(5);
end

注释:
1.A= [ ] ,A是空矩阵
2.eye() ,单位矩阵

输入参数无,返回值A。
之后在命令界面可以调用这个函数
这里写图片描述
4. 画图Part 2: Plotting

fprintf('Plotting Data ...\n')
data = csvread('ex1data1.txt');
X = data(:, 1); y = data(:, 2);
m = length(y);
plotData(X, y);
fprintf('
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值