トレインテストと相互検証セットを組み込んだ不均衡なデータセットを正しく分割する方法
同意する-7.36%
同意しない-1.68%
話し合う-17.82%
無関係-73.13%
私はこのようにデータを分割しています:
(データセットを67/33分割に分割)
- トレーニング67%、テスト33%
(検証のためにさらに80/20の分割トレーニング)
- トレーニング80%、検証20%
(次に、3分割交差検証セットを使用してトレーニングと検証を分割します)
余談ですが、1.68%の賛成と反対を得るのは非常に困難でした。
それは私には全く意味がないので、これは私が問題を抱えているところです。80/20分割で作成された検証セットは、5倍でも階層化されていますか?
これが私が現在いるところです:
データを67%のトレーニングセットと33%のテストセットに分割します
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33)
x_train2, x_val, y_train2, y_val = train_test_split(x_train1, y_train1, test_size=0.20)
skf = StratifiedKFold(n_splits=3, shuffle = True)
skf.getn_splits(x_train2, y_train2)
for train_index, test_index in skf.split(x_train2, y_train2):
x_train_cros, x_test_cros = x_train2[train_index], x_train2[test_index]
y_train_cros, y_test_cros = y_train2[train_index], y_train[test_index]
検証セットに対してもskfを再度実行しますか?作成されたskfのテストテストセットは、シーケンシャルモデルで使用されていますか?
私が使用している方法の引用:
トータ、アスウィニ; ティラック、プリヤンカ; Ahluwalia、Simrat; and Lohia、Nibrat(2018)「フェイクニュースの検出:ディープラーニングアプローチ」、SMUデータサイエンスレビュー:Vol。1:第3条、第10条。https://scholar.smu.edu/datasciencereview/vol1/iss3/10
回答
2 SuryaLohia.
関数 'train_test_split()'にもう1つのパラメーターを追加する必要があります。
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)
これにより、すべてのターゲットカテゴリが均等に分散されます。