產生隨機的訓練集/測試集切分
接下來幾個練習你會使用套件 ggplot2 中的 mpg 資料。這個資料描述不同年份、不同品牌與車型的一些特性。目標是要從高速公路油耗來預測市區油耗。
在本練習中,你要將 mpg 切分為訓練集 mpg_train(佔資料的 75%)與測試集 mpg_test(佔資料的 25%)。其中一種作法是使用 runif() 函式(文件)產生一欄介於 0 到 1 的均勻隨機數。
如果你有一個大小為 \(N\) 的資料集 dframe,且想要隨機抽取大約佔 \(N\) 的 \(100 * X\)%(其中 \(X\) 介於 0 到 1),那麼:
- 產生一個均勻隨機數向量:
gp = runif(N)。 dframe[gp < X,]的大小會大致符合需求。dframe[gp >= X,]則是其互補集合。
本練習屬於課程
R 中的監督式學習:回歸
練習說明
- 使用
nrow(文件)取得資料框mpg的列數。把這個數字指定給變數N,並印出。 - 計算 N 的 75% 大約是幾列。指定給變數
target,並印出。 - 使用
runif()產生一個長度為N的均勻隨機數向量,命名為gp。 - 使用
gp將mpg分成mpg_train與mpg_test(其中mpg_train約含有 75% 的資料)。 - 使用
nrow()檢查mpg_train與mpg_test的大小。它們的規模大致正確嗎?
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# mpg is available
summary(mpg)
dim(mpg)
# Use nrow to get the number of rows in mpg (N) and print it
(N <- ___)
# Calculate how many rows 75% of N should be and print it
# Hint: use round() to get an integer
(target <- ___)
# Create the vector of N uniform random variables: gp
gp <- ___
# Use gp to create the training set: mpg_train (75% of data) and mpg_test (25% of data)
mpg_train <- ___
mpg_test <- ___
# Use nrow() to examine mpg_train and mpg_test
___
___