Tren testi ve çapraz doğrulama kümesini içeren dengesiz veri kümesi nasıl doğru şekilde bölünür?

Aug 16 2020

Yukarıdaki resim kopyalamaya çalıştığım şey. Bunu doğru şekilde yapıp yapmadığımı bilmiyorum. FakeNewsChallenge veri kümesiyle çalışıyorum ve son derece dengesiz ve bir makalede kullanılan bir yöntemi çoğaltmaya ve geliştirmeye çalışıyorum.


Katılıyorum -% 7,36

Katılmıyorum -% 1,68

Tartışma -% 17.82

İlgisiz -% 73,13

Verileri şu şekilde bölüyorum:

(veri kümesini 67/33 bölüme ayır)

  • eğitim% 67, test% 33

(doğrulama için 80/20 ileri bölünmüş eğitim)

  • eğitim% 80, doğrulama% 20

(Daha sonra eğitimi ve doğrulamayı 3 katlı çapraz doğrulama seti kullanarak bölün)

Bir kenara,% 1.68 katılmayan ve aynı fikirde olanların olması son derece zor oldu.


Bana tamamen mantıklı gelmediği için burada bir sorun yaşıyorum. 80/20 bölünmesinde oluşturulan doğrulama seti 5 katmanda da katmanlandırılıyor mu?

Şu anda bulunduğum yer burası:


Verileri% 67 Eğitim Seti ve% 33 Test Setine bölün

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]

Doğrulama seti için de skf'yi tekrar çalıştırabilir miyim? Sıralı modelde kullanılmak üzere skf tarafından oluşturulan test test setleri nerede?


Kullandığım yönteme ilişkin alıntı:

Thota, Aswini; Tilak, Priyanka; Ahluwalia, Simrat; ve Lohia, Nibrat (2018) "Fake News Detection: A Deep Learning Approach," SMU Data Science Review: Cilt. 1: No. 3, Madde 10. Şuradan ulaşılabilir:https://scholar.smu.edu/datasciencereview/vol1/iss3/10

Yanıtlar

2 SuryaLohia. Aug 16 2020 at 06:14

'Train_test_split ()' işlevine bir parametre daha eklemeniz gerekir:

x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)

Bu size tüm hedef kategorilerin eşit dağılımını sağlayacaktır.