トレーニングでデータを分割する方法 & r のテスト セット (3 つのメソッド)


多くの場合、機械学習アルゴリズムをデータセットに適応させるときは、まずデータセットをトレーニング セットとテスト セットに分割します。

R でデータをトレーニング セットとテスト セットに分割するには、次の 3 つの一般的な方法があります。

方法 1: Base R を使用する

 #make this example reproducible
set. seeds (1)

#use 70% of dataset as training set and 30% as test set
sample <- sample(c( TRUE , FALSE ), nrow(df), replace= TRUE , prob=c( 0.7 , 0.3 ))
train <- df[sample, ]
test <- df[!sample, ]

方法 2: caTools パッケージを使用する

 library (caTools)

#make this example reproducible
set. seeds (1)

#use 70% of dataset as training set and 30% as test set
sample <- sample. split (df$any_column_name, SplitRatio = 0.7 )
train <- subset(df, sample == TRUE )
test <- subset(df, sample == FALSE )

方法 3: dplyr パッケージを使用する

 library (dplyr)

#make this example reproducible
set. seeds (1)

#create ID column
df$id <- 1:nrow(df)

#use 70% of dataset as training set and 30% as test set
train <- df %>% dplyr::sample_frac( 0.70 )
test <- dplyr::anti_join(df, train, by = ' id ')

次の例は、R の組み込みiris データセットを使用して各メソッドを実際に使用する方法を示しています。

例 1: Base R を使用してデータをトレーニング セットとテスト セットに分割する

次のコードは、R ベースを使用して、行の 70% をトレーニング セットとして使用し、残りの 30% をテスト セットとして使用して、iris データセットをトレーニング セットとテスト セットに分割する方法を示しています。

 #load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
sample <- sample(c( TRUE , FALSE ), nrow(iris), replace= TRUE , prob=c( 0.7 , 0.3 ))
train <- iris[sample, ]
test <- iris[!sample, ]

#view dimensions of training set
sun(train)

[1] 106 5

#view dimensions of test set
dim(test)

[1] 44 5

結果から次のことがわかります。

  • トレーニング セットは 106 行 5 列のデータ フレームです。
  • テストは 44 行 5 列のデータ ブロックです。

元のデータベースには合計 150 行があったため、トレーニング セットには元の行の約 106/150 = 70.6% が含まれます。

必要に応じて、トレーニング セットの最初の数行を表示することもできます。

 #view first few rows of training set
head(train)

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa

例 2: caTools を使用してデータをトレーニング セットとテスト セットに分割する

次のコードは、R でcaToolsパッケージを使用して、行の 70% をトレーニング セットとして使用し、残りの 30% をテスト セットとして使用して、iris データセットをトレーニング セットとテスト セットに分割する方法を示しています。

 library (caTools)

#load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
sample <- sample. split (iris$Species, SplitRatio = 0.7 )
train <- subset(iris, sample == TRUE )
test <- subset(iris, sample == FALSE )

#view dimensions of training set
sun(train)

[1] 105 5

#view dimensions of test set
dim(test)

[1] 45 5

結果から次のことがわかります。

  • トレーニング セットは 105 行 5 列のデータ フレームです。
  • テストは 45 行 5 列のデータ ブロックです。

例 3: dplyr を使用してデータをトレーニング セットとテスト セットに分割する

次のコードは、R でcaToolsパッケージを使用して、行の 70% をトレーニング セットとして使用し、残りの 30% をテスト セットとして使用して、iris データセットをトレーニング セットとテスト セットに分割する方法を示しています。

 library (dplyr)

#load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#create variable ID
iris$id <- 1:nrow(iris)

#Use 70% of dataset as training set and remaining 30% as testing set 
train <- iris %>% dplyr::sample_frac( 0.7 )
test <- dplyr::anti_join(iris, train, by = ' id ')

#view dimensions of training set
sun(train)

[1] 105 6

#view dimensions of test set
dim(test)

[1] 45 6

結果から次のことがわかります。

  • トレーニング セットは 105 行 6 列のデータ フレームです。
  • テストは 45 行 6 列のデータ ブロックです。

これらのトレーニング セットとテスト セットには、作成した追加の「id」列が含まれていることに注意してください。

機械学習アルゴリズムを調整するときは、この列を使用しないようにしてください (またはデータ フレームから完全に削除してください)。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

R で MSE を計算する方法
R で RMSE を計算する方法
R の調整済み R 二乗を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です