開始使用免費開始

為什麼這是最佳?

你用來取得迴歸參數的 np.polyfit() 會找到「最佳」的斜率與截距。它是透過最小化殘差平方和(RSS,residual sum of squares)來達成的。在本練習中,你將繪製被最佳化的這個函式——RSS 對斜率參數 a 的關係圖。做法是先把截距固定為你在最佳化中得到的數值,然後繪出 RSS 與斜率的關係。它在哪裡達到最小?

本練習屬於課程

Statistical Thinking in Python(第 2 部分)

檢視課程

練習說明

  • 指定要計算 RSS 的斜率取值。使用 np.linspace()00.1 的範圍內取得 200 個點。例如,若要在 00.5 的範圍內取得 100 個點,可以這樣使用 np.linspace()np.linspace(0, 0.5, 100)
  • 使用 np.empty_like() 與你上面建立的陣列來初始化一個名為 rss 的陣列,用來存放 RSS。empty_like() 會回傳一個與給定陣列(此處為 a_vals)形狀與型別相同的新陣列。
  • 撰寫一個 for 迴圈來計算各個斜率下的 RSS 總和。提示:RSS 為 np.sum((y_data - a * x_data - b)**2)。你在上一個練習中計算的變數 b 已在命名空間中。此處將 fertility 視為 y_datailliteracy 視為 x_data
  • 繪製 RSS(rss)相對於斜率(a_vals)的圖。
  • 按下 Submit Answer 來查看圖表!

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Specify slopes to consider: a_vals
a_vals = ____

# Initialize sum of square of residuals: rss
rss = ____

# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
    rss[i] = ____((____ - a*____ - b)**2)

# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')

plt.show()
編輯並執行程式碼