Week2 Exercise 1: Linear Regression Visualizing J 代码详解

该博客聚焦机器学习Week2 Exercise 1的线性回归部分,主要介绍如何绘制成本函数J(θ 0, θ 1)随自变量θ 0,θ 1的变化情况。阐述了整体思路,包括生成坐标向量、计算成本函数值和绘制图象,还对相关代码进行了详细解释。

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

机器学习 Week2 Exercise 1: Linear Regression

part 4: Visualizing J

目的:绘制cost function J(θ\thetaθ 0 , θ\thetaθ 1)随自变量θ\thetaθ 0,θ\thetaθ 1的变化情况。
整体思路:
  • 先生成坐标向量theta0_vals、theta1_vals,代表θ\thetaθ 0θ\thetaθ 1的取值
  • 然后由坐标向量theta0_vals、theta1_vals中的θ\thetaθ 0θ\thetaθ 1,由computeCost(X, y, t)函数计算出对应的cost function J(θ\thetaθ 0 , θ\thetaθ 1)的值
  • 最后绘制出图象
代码详解:
% ============= Part 4: Visualizing J(theta_0, theta_1) =============
theta0_vals = linspace(-10, 10, 100);
theta1_vals = linspace(-1, 4, 100);
  • y = linspace(x1,x2,n) 生成 n 个点。这些点的间距为 (x2-x1)/(n-1)。n默认为100。
  • 比如y1 = linspace(-5,5,7)
  • y1 = 1×7
    -5.0000 -3.3333 -1.6667 0 1.6667 3.3333 5.0000**
J_vals = zeros(length(theta0_vals), length(theta1_vals));
for i = 1:length(theta0_vals)
	for j = 1:length(theta1_vals)
	t = [theta0_vals(i); theta1_vals(j)];
	J_vals(i,j) = computeCost(X, y, t);
	end
end
  • 注意matlab数组下标从1开始,而不是0
  • 由computeCost(X, y, t)函数计算出对应的cost function J(θ\thetaθ 0 , θ\thetaθ 1)的值
J_vals = J_vals';
figure;
surf(theta0_vals, theta1_vals, J_vals)
xlabel('\theta_0'); ylabel('\theta_1');
  • 由于surf函数的特性,需要将J_vals转置。
  • figure 创建一个新的图窗窗口
  • figure 相关用法:
  1. figure(‘Color’,‘white’) 将背景色设置为白色。
  2. figure(‘Name’,‘Measured Data’);创建一个图窗并指定 Name 属性。默认情况下,生成的标题包含图窗编号。
  3. figure(‘Name’,‘Measured Data’,‘NumberTitle’,‘off’);生成的标题不包含图窗编号.
  • surf(X,Y,Z) 创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。函数还对颜色数据使用 Z,因此颜色与高度成比例。

在这里插入图片描述

figure;
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 3, 20))
xlabel('\theta_0'); ylabel('\theta_1');
hold on;
plot(theta(1), theta(2), 'rx', 'MarkerSize', 10, 'LineWidth', 2)
  • 前面J_vals已将转置过了
  • logspace函数将区间[10-2,103]分成20等份,返回1*20矩阵
    用法:y = logspace(a,b,n) 在 10 的幂 10^a 和 10^b之间生成 n 个点。
  • contour(X,Y,Z,levels) 将 levels 指定为单调递增值的向量时,可在某些特定高度绘制等高线。要在一个高度 (k) 绘制等高线,要将 levels 指定为二元素行向量 [k k]。
  • ‘\theta_0’和’\theta_1’ 用了转义字符
  • hold on 当前轴及图形不被刷新,准备接受后续图形绘制
  • hold off 结束当前图形不被刷新的性质
  • MarkSize指定符号大小,LineWidth指定线宽

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值