ランダムな学習用/テスト用分割を作る
次のいくつかの演習では、パッケージ ggplot2 のデータ mpg を使います。このデータには、さまざまな年式の複数メーカー・車種の特徴が含まれています。ここでの目標は、高速道路での燃費から市街地での燃費を予測することです。
この演習では、mpg を学習用データ mpg_train(データの 75%)とテスト用データ mpg_test(データの 25%)に分割します。これを行う 1 つの方法は、関数 runif()(docs)を使って 0 から 1 の一様乱数の列を作ることです。
サイズが \(N\) のデータセット dframe があり、\(N\) のうち約 \(100 * X\)%(\(X\) は 0 から 1 の間)をランダムに取りたいときは、次のようにします。
- 一様乱数のベクトルを生成します:
gp = runif(N)。 dframe[gp < X,]はおおよそ目的のサイズになります。dframe[gp >= X,]はその補集合になります。
この演習はコースの一部です
R による Supervised Learning:回帰
演習の手順
- 関数
nrow(docs)を使って、データフレーム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
___
___