套用中位數插補
在本章中,你會使用威斯康辛乳癌資料集的一個版本。這個資料集是典型的二元分類問題:50% 的樣本為良性,50% 為惡性,而你的任務是分辨哪些是良性、哪些是惡性。
這個資料集的特點是許多預測變數含有遺漏值,而且大多數資料列至少有一個遺漏值。這對建模造成挑戰,因為多數機器學習演算法無法直接處理遺漏值。舉例來說,你的第一直覺可能是對這份資料擬合羅吉斯迴歸模型,但在此之前,你需要先決定如何處理 NA。
所幸,caret 的 train() 函式提供名為 preProcess 的引數,讓你可以指定使用中位數插補來填補遺漏值。在前面章節中,你曾用 train() 函式並以 y ~ . 這類公式來建立模型。另一種方式是對 train() 指定 x 與 y 引數,其中 x 是一個物件,資料列為樣本、資料欄為特徵;y 是包含結果的數值或因子向量。換句話說,x 是一個矩陣或資料框,內容等同於你在呼叫 lm() 時會放在 data 引數的整個資料集,但不含應變數那一欄;y 則是只包含應變數那一欄的向量。
在這個練習中,傳給 train() 的引數 x 已載入為 breast_cancer_x,y 則為 breast_cancer_y。
本練習屬於課程
使用 R 的 caret 進行 Machine Learning
練習說明
- 使用
train()函式在乳癌資料集上擬合名為median_model的glm模型。使用preProcess = "medianImpute"來處理遺漏值。 - 在主控台印出
median_model。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Apply median imputation: median_model
median_model <- train(
x = ___,
y = ___,
method = ___,
trControl = myControl,
preProcess = ___
)
# Print median_model to console