データフレームをランダムに並べ替える
データセットを学習用とテスト用に分割する一つの方法は、まずデータセットをランダムに並べ替え、その後で2つの集合に分けるやり方です。こうすることで、学習用・テスト用のどちらもランダムサンプルになり、データセットの並び順に潜むバイアス(たとえば元々が価格やサイズ順だった場合など)を、モデルの学習や評価に使うサンプルへ持ち込まないようにできます。新しいトランプの山を配る前にシャッフルするイメージです。
まず、作業を再現可能にし、スクリプトを実行するたびに同じランダム分割を得られるよう、乱数シードを設定します。
set.seed(42)
次に、diamonds データセットの行インデックスをシャッフルするために sample() 関数を使います。後でこのインデックスを使ってデータセットを並べ替えます。
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