隨機重新排序資料框
要把資料集切成訓練集與測試集,其中一個方法是先隨機排列資料集,然後再分成兩部分。這樣可以確保訓練集與測試集都是隨機樣本,並且不會把資料集原本的排序偏差(例如原本依價格或大小排序)帶進用來訓練與測試模型的樣本中。你可以把這想成在發牌前先把一副新牌洗勻。
首先,設定隨機種子,讓你的結果可重現,每次執行指令都會得到相同的隨機切分:
set.seed(42)
接著,使用 sample() 函式隨機打亂 diamonds 資料集的列索引。之後你可以用這些索引來重新排序資料集。
rows <- sample(nrow(diamonds))
最後,使用這個隨機向量來重新排序 diamonds 資料集:
diamonds <- diamonds[rows, ]
本練習屬於課程
使用 R 的 caret 進行 Machine Learning
練習說明
- 將隨機種子設為 42。
- 建立名為
rows的列索引向量。 - 隨機重新排序
diamonds資料框,並指派給shuffled_diamonds。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Set seed
# Shuffle row indices: rows
# Randomly order data