Week2 Exercise 1: Linear Regression Visualizing J 代碼詳解

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指定線寬

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章