答案頁 · 12 道題

Python 模型評估與準確率練習答案

本頁彙整 Python 模型評估與準確率 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python 模型評估與準確率 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

為什麼要保留獨立的測試集?

  1. 增加特徵數量
  2. 不再需要標籤
  3. 讓訓練更慢
  4. 估計模型在未見樣本上的表現正確答案

答案: 估計模型在未見樣本上的表現

為什麼: 獨立測試集比再次評估訓練資料更誠實。

02 · 選擇題

精準率的分母是什麼?

  1. 真負例數
  2. 預測為正的樣本數正確答案
  3. 真實正例數
  4. 全部樣本數

答案: 預測為正的樣本數

為什麼: 精準率等於真正例除以真正例加假正例。

03 · 選擇題

召回率的分母是什麼?

  1. 真實正例數正確答案
  2. 預測正例數
  3. 全部負例數
  4. 只有真正例

答案: 真實正例數

為什麼: 召回率等於真正例除以真正例加假負例。

04 · 選擇題

執行結果是什麼?

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
print(sum(a == 1 and p == 1 for a, p in zip(actual, predicted)))
  1. 4
  2. 2
  3. 1正確答案
  4. 3

答案: 1

為什麼: 只有第一對樣本的真實值為 1 且預測為 1。

05 · 填空題

補全真正例條件。

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
tp = sum(a == 1 and p == ____ for a, p in zip(actual, predicted))
print(tp)

答案: 1

為什麼: 真正例要求真實標籤和預測都為正。

06 · 填空題

補全精準率的分母。

tp, fp, fn = 8, 2, 4
precision = tp / (tp + ____)
print(round(precision, 2))

答案: fp

為什麼: 精準率除以所有預測正例:真正例加假正例。

07 · 填空題

補全召回率的分母。

tp, fp, fn = 8, 2, 4
recall = tp / (tp + ____)
print(round(recall, 2))

答案: fn

為什麼: 召回率除以所有真實正例:真正例加假負例。

08 · 填空題

補全準確率的分母。

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
accuracy = sum(a == p for a, p in zip(actual, predicted)) / ____(actual)
print(round(accuracy, 2))

答案: len

為什麼: 準確率用正確預測數除以樣本總數。

09 · 輸出預測

這段程式列印出什麼?

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
tp = sum(a == 1 and p == 1 for a, p in zip(actual, predicted))
tn = sum(a == 0 and p == 0 for a, p in zip(actual, predicted))
fp = sum(a == 0 and p == 1 for a, p in zip(actual, predicted))
fn = sum(a == 1 and p == 0 for a, p in zip(actual, predicted))
print(tp, tn, fp, fn)

答案: 1 1 1 1

為什麼: 混淆矩陣的四個格子各有一個樣本。

10 · 輸出預測

程式碼的輸出結果是什麼?

tp, fp, fn = 8, 2, 4
precision = tp / (tp + fp)
print(round(precision, 2))

答案: 0.8

為什麼: 精準率是 8 除以 10,保留兩位為 0.8。

11 · 輸出預測

螢幕上會顯示什麼?

tp, fp, fn = 8, 2, 4
recall = tp / (tp + fn)
print(round(recall, 2))

答案: 0.67

為什麼: 召回率是 8 除以 12,保留兩位為 0.67。

12 · 輸出預測

這段程式碼會輸出什麼?

actual = [0] * 95 + [1] * 5
predicted = [0] * 100
accuracy = sum(a == p for a, p in zip(actual, predicted)) / len(actual)
print(round(accuracy, 2))

答案: 0.95

為什麼: 全部預測為負能得到 95% 準確率,但沒有找到一個正例。

先試一遍題目

打開 Python 模型評估與準確率 練習頁,用即時回饋回答同樣的 12 道題。

練習本課