Python 挑戰 ML (機器學習) -- 練習題 [1]

📝 測驗說明與操作指南

  • 作答方式:請閱讀題目後,直接點擊下方您認為正確的選項((A), (B), (C), (D))。
  • 即時判定:點擊選項後,系統會立即判定對錯。若答對,系統會顯示綠色提示;若答錯,系統會標示紅色,並為您標出真正的正確答案。
  • 觀看解析:作答完成後,選項下方會自動展開詳細的觀念解析,幫助您釐清知識點。
⚠️ 注意:本測驗採用單次作答設計,點選選項後即無法更改,請確認思考後再作答。
Q1. 在實作機器學習演算法時,我們經常需要計算特徵向量 x 與權重向量 w 的內積(Dot Product)。下列哪一段 NumPy 程式碼能正確計算兩個一維陣列 xw 的內積?

✅ 答對了!

❌ 答錯了!

💡 解析:np.dot 是 NumPy 中用來正確計算兩個一維陣列內積的標準函式。

Q2. 在評估迴歸模型時,均方誤差(MSE)是常用的損失函數。若 y_true 為實際標籤,y_pred 為模型預測值,兩者皆為長度相同的 NumPy 陣列。下列哪一行程式碼能正確計算 MSE?

✅ 答對了!

❌ 答錯了!

💡 解析:均方誤差(MSE)為誤差平方和的平均值,此語法正確映射了先算差的平方、再求平均的數學公式。

Q3. 當我們載入一份客戶資料集後,使用 Pandas 的 df.describe() 函式可以快速查看數值特徵的統計摘要。若某一欄位「年齡」在 describe() 的輸出中,50% 的數值為 35,這代表什麼統計意義?

✅ 答對了!

❌ 答錯了!

💡 解析:在統計學上,50% 的百分位數(Percentile)即代表將資料一分為二的中位數(Median)。

Q4. 在解讀 Keras 的模型摘要(Model Summary)時,參數數量的計算對於硬體評估與記憶體需求十分重要。假設某一個全連接層(Dense Layer)的輸入維度是 10,輸出維度是 5,且預設包含偏差項(Bias),則該層的總參數數量為何?

✅ 答對了!

❌ 答錯了!

💡 解析:全連接層的參數數量公式為「(輸入維度 + 1) * 輸出維度」,其中的 1 即為偏差項。因此 (10 + 1) * 5 = 55。

Q5. 在深度學習模型中,為了解決過擬合(Overfitting)問題,我們常會在 Keras 實作中加入 Dropout(0.5) 層。關於這行程式碼的實務意義,下列敘述何者正確?

✅ 答對了!

❌ 答錯了!

💡 解析:Dropout 會在訓練階段以指定機率隨機丟棄(設為0)神經元的輸出,以此強迫模型不依賴單一特徵,學習更強健的表示。

Q6. 在實作遷移學習(Transfer Learning)時,我們通常會使用預訓練模型(如 VGG16)並凍結其底層特徵萃取層,只訓練我們自己接上的分類層。在 Keras 中,下列哪一行程式碼能正確凍結特定的網路層 base_model,使其在訓練過程中不更新權重?

✅ 答對了!

❌ 答錯了!

💡 解析:將模型層的 trainable 屬性設為 False,可阻止該層在反向傳播時計算梯度並更新權重,完成權重凍結。

Q7. 在機器學習專案中,對特徵進行標準化(Standardization)是避免模型受不同尺度影響的關鍵。使用 Scikit-learn 的 StandardScaler 時,為了避免「資料洩漏(Data Leakage)」,下列哪一種作法是實務上的最佳實踐?

✅ 答對了!

❌ 答錯了!

💡 解析:這是標準防洩漏的做法。訓練集負責計算並記住均值與標準差,測試集僅依賴訓練集的參數進行轉換,以模擬完全未知的真實資料。

Q8. 進行資料前處理前,我們需要檢查資料集中是否存在缺失值(Missing Values)。在 Pandas 中,下列哪一個函式組合最適合用來快速計算每一欄(Column)的缺失值總數?

✅ 答對了!

❌ 答錯了!

💡 解析:isnull() 會將遺漏值轉換為 True(數值1),非遺漏值轉換為 False(數值0),搭配 sum() 可以精準加總出每一欄包含的缺失值總數。

Q9. 為了降低資料維度並消除雜訊,我們決定使用主成分分析(PCA)。若我們希望 PCA 轉換後,能夠動態決定主成分數量以剛好保留原始資料中 95% 的變異量,在 Scikit-learn 中應如何正確設定 PCA 物件的參數?

✅ 答對了!

❌ 答錯了!

💡 解析:在 Scikit-learn 的 PCA 中,當 n_components 設為小於 1.0 的浮點數時,演算法會自動判斷需幾個主成分才能解釋指定比例(如 95%)的變異量。

Q10. 為了使用 Seaborn 進行視覺化比較,有時我們需要將「寬格式(Wide Format)」的 DataFrame 轉換為「長格式(Long Format)」。在 Pandas 中,下列哪一個函式最適合執行這項轉換,例如將散落在各欄的多個「季度銷售額」打平合併為「季度」與「銷售額」兩個對應欄位?

✅ 答對了!

❌ 答錯了!

💡 解析:pd.melt() 專門用於將多欄資料「融化」轉換為兩欄式(變數名稱與數值)的長格式,這對於適配 Seaborn 的繪圖邏輯尤為重要。

Q11. 在 Keras 中建構多類別分類模型(例如區分貓、狗、鳥)時,若目標標籤(Label)在資料前處理階段已經被轉換為獨熱編碼(One-Hot Encoding),例如 [0, 0, 1],我們應該在 model.compile() 中選擇哪一種損失函數(Loss Function)?

✅ 答對了!

❌ 答錯了!

💡 解析:當標籤採用 One-Hot 編碼的多維矩陣形式時,categorical_crossentropy 是相對應且標準的多類別分類損失函數。

Q12. 當我們使用 Scikit-learn 的 cross_val_score 進行 K 折交叉驗證時,若傳入 cv=5 參數,下列關於其演算法運作機制的描述何者正確?

✅ 答對了!

❌ 答錯了!

💡 解析:cv=5 代表 5 折交叉驗證,演算法會確保每一份資料都有一次機會成為驗證集,另外四次成為訓練集,這是評估模型泛化穩定度的標準做法。

Q13. 邏輯迴歸模型與神經網路的二元輸出層中,常使用 Sigmoid 函數將線性數值轉換為介於 0 與 1 之間的機率。下列哪一段 NumPy 程式碼能正確實作數學上的 Sigmoid 函數 f(x) = 1 / (1 + e^(-x))?

✅ 答對了!

❌ 答錯了!

💡 解析:np.exp 是 NumPy 計算歐拉數(Euler's number)指數 e 的正確方法,此語法完美映射了數學公式,並能針對整個陣列向量化運算。

Q14. 在探索式資料分析(EDA)階段,若我們想比較不同「產品類別」(類別變數)在「銷售額」(數值變數)上的分佈範圍、中位數差異以及是否含有離群值(Outliers),最適合使用哪一種 Seaborn 繪圖函式?

✅ 答對了!

❌ 答錯了!

💡 解析:boxplot(箱型圖)利用四分位數完美封裝了資料的分佈特徵,能同時在一張圖上比較多個類別的集中趨勢與異常離群值。

Q15. 當我們嘗試用 Scikit-learn 的 LinearRegression().fit(X, y) 訓練簡單線性迴歸模型時,若特徵 X 只有一個變數(為一維 NumPy 陣列),常會遇到「Expected 2D array, got 1D array instead」的錯誤。我們應如何使用 NumPy 修改 X 的形狀來修復此問題?

✅ 答對了!

❌ 答錯了!

💡 解析:Scikit-learn 預期輸入特徵 X 是一個二維矩陣 (n_samples, n_features)。使用 reshape(-1, 1) 會保持樣本數不變,但強制為其增加一個特徵維度(轉為單列的矩陣),成功解決報錯。

Q16. 為了確保模型評估的公正性與可重現性,我們經常使用 train_test_split 劃分訓練與測試資料。若希望在專案討論中,每次執行程式碼時,資料切分洗牌(shuffle)的結果都能保持一模一樣,我們應該設定哪一個參數?

✅ 答對了!

❌ 答錯了!

💡 解析:random_state 能設定虛擬亂數產生器的種子(Seed),只要給定相同的整數值,就能保證每次隨機切分的結果完全一致,是實驗重現的關鍵參數。

Q17. 為了避免神經網路過度擬合(Overfitting),實務上常會在 Keras 訓練過程中加入 EarlyStopping 回呼機制。在 EarlyStopping 的設定中,參數 patience=5 代表什麼意義?

✅ 答對了!

❌ 答錯了!

💡 解析:patience(耐心值)決定了我們願意容忍模型幾個 epoch 效能不再進步才終止訓練。這樣既能防止過擬合,又不會因為單次的效能震盪而過早結束。

Q18. 在建構機器學習流程時,若直接將前處理步驟(如填補缺失值、標準化)和模型訓練分開寫,在進行交叉驗證(CV)時非常容易導致資料洩漏(因為評估集偷偷參與了總體的標準化運算)。為了解決這個問題,Scikit-learn 提供了下列哪一個物件來串接這些步驟?

✅ 答對了!

❌ 答錯了!

💡 解析:Pipeline 可以將資料前處理與預測模型打包成單一物件。在交叉驗證的每一折中,它會確保僅用當下的訓練折擬合前處理參數,徹底避免測試集資料洩漏。

Q19. 假設資料表中「性別」欄位為字串型態的「Male」與「Female」,許多機器學習模型(如神經網路、線性迴歸)無法直接處理非數值的字串。在 Pandas 中,哪一種方法可以最直觀、最快將其轉換為模型可接受的獨熱編碼(One-hot encoding)格式的虛擬變數(Dummy variables)?

✅ 答對了!

❌ 答錯了!

💡 解析:pd.get_dummies() 能自動識別類別型變數,並將其快速展開為多個 0 和 1 的布林/數值特徵欄位,是進行獨熱編碼最便捷的 Pandas 方法。

Q20. 在評估分類模型時,classification_report 是一個非常實用的 Scikit-learn 報告工具。當其輸出的某類別「Recall(召回率)」數值非常低時,在風險較高的商業情境上(例如疾病檢測、詐騙偵測)通常意味著什麼嚴重問題?

✅ 答對了!

❌ 答錯了!

💡 解析:召回率衡量的是「實際有問題的樣本中,被正確抓出多少」。數值低代表許多患病者被判定為健康而漏診,這在醫療或風控上代價極高。

沒有留言:

張貼留言

>