Dataset Stratifikasi Data
Untuk memastikan pembagian dataset secara stratifikasi dalam Python, Anda dapat menggunakan fungsi `train_test_split` dari pustaka scikit-learn. Stratifikasi memastikan bahwa proporsi kelas dalam subset data (misalnya, data pelatihan dan pengujian) mencerminkan proporsi kelas dalam dataset asli. Hal ini sangat penting ketika bekerja dengan dataset yang memiliki distribusi kelas yang tidak seimbang.
Berikut adalah contoh kode Python yang menunjukkan cara melakukan pembagian dataset dengan stratifikasi:
from sklearn.model_selection import train_test_split import pandas as pd # Contoh: Membuat DataFrame dengan fitur 'X' dan target 'y' data = { 'X1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'X2': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 'y': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] # Target dengan dua kelas seimbang } df = pd.DataFrame(data) # Memisahkan fitur dan target X = df'X1', 'X2' y = df['y'] # Membagi dataset menjadi data pelatihan dan pengujian dengan stratifikasi X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, stratify=y, random_state=42 ) # Menampilkan proporsi kelas di setiap subset print("Proporsi kelas di y_train:\n", y_train.value_counts(normalize=True)) print("\nProporsi kelas di y_test:\n", y_test.value_counts(normalize=True))
Penjelasan kode:
1. Import Library:
- `train_test_split` dari `sklearn.model_selection` untuk membagi dataset.
- `pandas` untuk manipulasi data dalam bentuk DataFrame.
2. Pembuatan DataFrame:
- Dataset contoh dibuat dengan dua fitur (`X1`, `X2`) dan satu target (`y`) yang memiliki dua kelas seimbang.
3. Pemilahan Fitur dan Target:
- `X` berisi fitur-fitur, sedangkan `y` berisi target.
4. Pembagian Dataset dengan Stratifikasi:
- Menggunakan `train_test_split` dengan parameter `stratify=y` untuk memastikan distribusi kelas pada `y_train` dan `y_test` sama dengan distribusi pada `y` asli.
- `test_size=0.3` menunjukkan 30% data dialokasikan untuk pengujian, dan 70% untuk pelatihan.
- `random_state=42` memastikan hasil pembagian yang konsisten setiap kali kode dijalankan.
5. Verifikasi Proporsi Kelas:
- `value_counts(normalize=True)` digunakan untuk menampilkan proporsi setiap kelas dalam `y_train` dan `y_test`.
Dengan menggunakan stratifikasi, Anda memastikan bahwa setiap subset data memiliki distribusi kelas yang serupa dengan dataset asli, yang penting untuk menghindari bias dalam pelatihan dan evaluasi model.
Catatan: Jika Anda memiliki lebih dari satu fitur kategori yang ingin digunakan untuk stratifikasi, Anda dapat menggabungkan kolom-kolom tersebut sebelum menerapkannya pada parameter `stratify`. Namun, perlu diperhatikan bahwa stratifikasi berdasarkan beberapa kolom dapat menjadi kompleks dan memerlukan penanganan khusus, terutama jika terdapat kombinasi kategori yang jarang muncul.
Untuk pemahaman lebih lanjut tentang stratifikasi dalam pembagian dataset, Anda dapat merujuk ke dokumentasi resmi scikit-learn.