Cara membagi set data tidak seimbang dengan benar yang menggabungkan uji train dan set validasi silang
Setuju - 7,36%
Tidak setuju - 1,68%
Diskusikan - 17.82%
Tidak terkait - 73,13%
Saya membagi data dengan cara ini:
(bagi kumpulan data menjadi pemisahan 67/33)
- melatih 67%, uji 33%
(bagi pelatihan lebih lanjut 80/20 untuk validasi)
- pelatihan 80%, validasi 20%
(Kemudian pisahkan pelatihan dan validasi menggunakan set validasi silang 3 kali lipat)
Selain itu, mendapatkan 1,68% dari tidak setuju dan setuju itu sangat sulit.
Di sinilah saya mengalami masalah karena itu tidak masuk akal bagi saya. Apakah set validasi yang dibuat dalam pemisahan 80/20 juga dikelompokkan dalam 5 kali lipat?
Di sinilah saya saat ini:
Pisahkan data menjadi 67% Set Pelatihan dan 33% Set Pengujian
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]
Apakah saya akan menjalankan skf lagi untuk set validasi juga? Di mana set pengujian dari skf dibuat digunakan dalam model sekuensial?
Kutipan untuk metode yang saya gunakan:
Thota, Aswini; Tilak, Priyanka; Ahluwalia, Simrat; dan Lohia, Nibrat (2018) "Deteksi Berita Palsu: Pendekatan Pembelajaran Mendalam," Ulasan Sains Data SMU: Vol. 1: No. 3, Pasal 10. Tersedia di:https://scholar.smu.edu/datasciencereview/vol1/iss3/10
Jawaban
Anda perlu menambahkan satu parameter lagi dalam fungsi 'train_test_split ()':
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)
Ini akan memberi Anda distribusi yang sama untuk semua kategori target.