私は80/20のトレーニングとテストセットでデータセットを分割しようとしています。私は場所によって分割しようとしていますが、これは4レベルの要素ですが、各レベルは等しくサンプリングされていません。 172
LOCATION2:615
がLocation3:603
Location4:502異なる割合のランダムな層別サンプリング
私はまた、前述したように、全体のデータセット80/20を分割しようとしたが、午前
位置1 - 1892個のサンプルのうち、各場所を80/20に分割して、訓練とテストの各セットから均等な割合を得るようにしてください。私はこれについてstratified
の機能を使用してsplitstackshape
パッケージの1つの投稿を見ましたが、私の要素を分割したくないようです。
x <- c(1, 2, 3, 4, 1, 3, 7, 4, 5, 7, 8, 9, 4, 6, 7, 9, 7, 1, 5, 6)
xx <- c("A", "A", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "D", "D", "D", "D", "D")
df <- data.frame(x, xx)
validIndex <- stratified(df, "xx", size=16/nrow(df))
valid <- df[-validIndex,]
train <- df[validIndex,]
A
、B
、C
、- ここ
を簡略化再現性の例でありますは、実際のデータセットの概算比率(それぞれ〜10,32,32,26%)の
たぶん私は欠けている何かを、しかし、あなたの最初のデータセットがランダム80/20分割されている場合、あなたはそれぞれの場所が80/20を分割することを期待しています。あなたがランダムなやり方でやっているから。 – AntoniosK
'caret'パッケージには、データを分割するための関数もいくつかあります:http://topepo.github.io/caret/splitting.html –
@AntoniosKデータセットの割合が均等でない場合でも、私はそれが割合を考慮せずにランダムに80%を取ると思った - おそらく私は間違っている – Danib90