[ML/DL] Train/Test/Valid Dataset
モデルを学習する際に使用するデータはtrain/test/valid(またはDev)に分けて学習に用いる.なぜそうするのか、各データセットの用途とデータを分離するためのモジュールを見てみましょう.一目瞭然
表ソース:https://untitledtblog.tistory.com/1582 簡単に言えば、
1.train dataは、モデルの学習に使用するデータセットです
2.検証データを使用して、モデルが正常に学習されているかどうか、および継ぎ手があるかどうかを確認するデータセット
3.テストデータは、学習終了後にモデルのパフォーマンスを評価するために最後に使用されるデータセットです.
そう言ってもいいです.
すなわち、検証(または開発と呼ばれる)データセットは、トレーニング中に参照できますが、テストデータセットは、学習プロセスに関係のないパフォーマンスを評価するためにのみ使用されるデータです.
しかし、validation datasetは訓練中の重みを決定するために使用されず、validation datasetは訓練中に発生する過度な継ぎ手を防止するために、いつ学習を停止するかを判断するために使用されるだけである.
sklearnやpytorchなどのマシンラーニングライブラリは、データを分割する機能を提供しているので、データセットを必要な割合で簡単に分割できます. sklearnのshuffleSplitとtorch.utils.データのサブセットを使用してデータを分割する from torch.utils.data import Subset
Subset関数を使用してデータセットを作成すると、親セットが更新されると、サブセットも更新されます. sklearningからデータを配布
train test splitモジュール の使用
表ソース:https://untitledtblog.tistory.com/1582
1.train dataは、モデルの学習に使用するデータセットです
2.検証データを使用して、モデルが正常に学習されているかどうか、および継ぎ手があるかどうかを確認するデータセット
3.テストデータは、学習終了後にモデルのパフォーマンスを評価するために最後に使用されるデータセットです.
そう言ってもいいです.
すなわち、検証(または開発と呼ばれる)データセットは、トレーニング中に参照できますが、テストデータセットは、学習プロセスに関係のないパフォーマンスを評価するためにのみ使用されるデータです.
しかし、validation datasetは訓練中の重みを決定するために使用されず、validation datasetは訓練中に発生する過度な継ぎ手を防止するために、いつ学習を停止するかを判断するために使用されるだけである.
sklearnやpytorchなどのマシンラーニングライブラリは、データを分割する機能を提供しているので、データセットを必要な割合で簡単に分割できます.
Subset関数を使用してデータセットを作成すると、親セットが更新されると、サブセットも更新されます.
# split the data into two groups
# trian 0.8, test 0.2
from sklearn.model_selection import ShuffleSplit
sss = ShuffleSplit(n_splits=1, test_size=0.2, random_state=0)
indices = range(len(fetal_ds1))
for train_index, val_index in sss.split(indices):
print(len(train_index))
print('-'*10)
print(len(val_index))
# creat train_ds and val_ds
from torch.utils.data import Subset
train_ds = Subset(fetal_ds1, train_index)
print(len(train_ds))
val_ds = Subset(fetal_ds2, val_index)
print(len(val_ds))
train test splitモジュール
from sklearn.datasets import load_iris # 샘플 데이터 로딩
from sklearn.model_selection import train_test_split
# load sample
dataset = load_iris()
data = dataset['data']
target = dataset['target']
# train_test_split
x_train, x_valid, y_train, y_valid = train_test_split(data, target, test_size=0.2, shuffle=True, stratify=target, random_state=34)
注:https://teddylee777.github.io/scikit-learn/train-test-split、https://deep-learning-study.tistory.com/676Reference
この問題について([ML/DL] Train/Test/Valid Dataset), 我々は、より多くの情報をここで見つけました https://velog.io/@hanakim120/MLDL-TrainTestValid-Datasetテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol