Skip to main content
  1. Belajar/
  2. Machine Learning with Python/
  3. 2. Persiapan Data untuk Machine Learning/

Pembagian Dataset

12 mins· loading · loading ·
Persiapan Data untuk Machine Learning - This article is part of a series.
Part 3: This Article

Pembagian dataset adalah langkah penting dalam persiapan data untuk machine learning. Pada tahap ini, dataset dibagi menjadi dua bagian utama: training data (data pelatihan) dan testing data (data pengujian). Pembagian dataset ini diperlukan agar kita dapat melatih model menggunakan sebagian data dan menguji performanya pada data yang lain.

A. Tujuan Pembagian Dataset
#

Tujuan dari pembagian dataset adalah untuk:

  • Melatih Model: Menggunakan data pelatihan untuk melatih model machine learning.
  • Menguji Model: Menguji performa model pada data pengujian untuk mengukur seberapa baik model tersebut dapat melakukan prediksi pada data yang belum pernah dilihat sebelumnya.

B. Pembagian Proporsional
#

Pembagian dataset dilakukan secara proporsional, yang berarti kita membagi data dengan menjaga distribusi kelas yang ada dalam dataset asli. Misalnya, jika dataset memiliki kelas A dan B, pembagian dataset harus memastikan bahwa proporsi kelas A dan B tetap sama di dalam data pelatihan dan pengujian.

C. Mengenal Fungsi train_test_split
#

Fungsi train_test_split adalah fungsi yang sangat penting dalam machine learning, terutama saat mempersiapkan data untuk melatih dan menguji model. Fungsi ini berasal dari pustaka scikit-learn dan digunakan untuk membagi dataset menjadi dua bagian utama: data pelatihan dan data pengujian. Berikut adalah beberapa poin penting terkait dengan fungsi train_test_split:

1. Pembagian Proporsional
#

Fungsi train_test_split memastikan pembagian dataset dilakukan secara proporsional, yang artinya distribusi kelas dalam dataset asli akan dipertahankan pada data pelatihan dan pengujian.

2. Parameter Utama
#

Berikut adalah beberapa parameter dari fungsi train_test_split:

  • test_size: Menentukan proporsi dataset yang akan dialokasikan untuk data pengujian. Misalnya, test_size=0.2 berarti 20% data akan menjadi data pengujian.
  • random_state: Menentukan seed untuk memastikan pembagian dataset dapat direproduksi dengan hasil yang konsisten.

3. Variabel Hasil
#

Fungsi train_test_split menghasilkan empat variabel:

  • X_train (fitur data pelatihan)
  • X_test (fitur data pengujian)
  • y_train (variabel target data pelatihan), dan
  • y_test (variabel target data pengujian).

4. Format Penggunaan
#

Berikut adalah format penggunaan fungsi train_test_split:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Memisahkan dataset menjadi data pelatihan dan pengujian membantu menghindari fenomena overfitting, di mana model dapat terlalu fit data pelatihan dan kinerjanya menurun pada data yang belum pernah dilihat sebelumnya.

D. Contoh Kode Pembagian Dataset
#

from sklearn.model_selection import train_test_split

# Pembagian dataset dengan proporsi 80% data pelatihan dan 20% data pengujian
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Menampilkan jumlah data dalam setiap bagian
print(f"Jumlah Data Pelatihan: {len(X_train)}")
print(f"Jumlah Data Pengujian: {len(X_test)}")

Hasilnya adalah sebagai berikut:

Jumlah Data Pelatihan: 455
Jumlah Data Pengujian: 114

Pada contoh ini, 80% dari data akan menjadi data pelatihan (X_train dan y_train), sementara 20% sisanya akan menjadi data pengujian (X_test dan y_test). Parameter random_state=42 digunakan agar pembagian dataset dapat direproduksi dengan hasil yang konsisten. Kita dapat menggunakan sembarang angka pada random_state. Agar dapat pembagian tersebut dapat direproduksi ulang, kamu harus menggunakan angka yang sama pada random_state.

E. Pembagian Dataset Menjadi Train, Validation, dan Test
#

Selain pembagian dataset menjadi data pelatihan dan data pengujian, seringkali kita juga membagi dataset menjadi tiga bagian: data pelatihan, data validasi, dan data pengujian. Data validasi digunakan untuk mengoptimalkan hyperparameter model setelah dilatih pada data pelatihan.

Untuk membagi dataset menjadi 3 bagian, kita bisa menggunakan fungsi yang sama, yaitu fungsi train_test_split sebanyak dua kali. Pembagian pertama berfungsi untuk membagi data menjadi data pelatihan dan data sisa. Langkah berikutnya dalah membagi data sisa menjadi data validasi dan data pengujian. Berikut adalah contoh penggunaannya:

from sklearn.model_selection import train_test_split

# Pembagian pertama: membagi data menjadi train (80%) dan temp_combined (20%)
X_train, temp_combined, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42)

# Pembagian kedua: membagi temp_combined menjadi validation (50%) dan test (50%)
X_val, X_test, y_val, y_test = train_test_split(temp_combined, y_temp, test_size=0.5, random_state=42)

Pada contoh ini:

  • X_train dan y_train adalah data pelatihan.
  • X_val dan y_val adalah data validasi.
  • X_test dan y_test adalah data pengujian.

Dengan cara ini, kita memiliki tiga set data yang berbeda untuk melatih, mengoptimalkan, dan menguji model machine learning. Proporsi pembagian dapat disesuaikan sesuai kebutuhan dan ukuran dataset.

F. Perhatikan Stratifikasi (Stratified Sampling):
#

Jika kelas-kelas pada variabel target bersifat imbalance (tidak seimbang), penting untuk mempertimbangkan stratifikasi dalam setiap tahap pembagian dataset. Ini dapat membantu menjaga distribusi kelas yang seimbang di dalam setiap set data. Kita dapat menambahkan parameter stratify pada setiap pemanggilan fungsi train_test_split untuk membuat stratifikasi. Perhatikan contoh berikut:

# Pembagian pertama dengan stratifikasi
X_train, temp_combined, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

# Pembagian kedua dengan stratifikasi
X_val, X_test, y_val, y_test = train_test_split(temp_combined, y_temp, test_size=0.5, random_state=42, stratify=y_temp)

Stratifikasi sangat penting untuk memastikan bahwa distribusi kelas tetap seragam di seluruh set data, termasuk set data validasi dan pengujian.

Persiapan Data untuk Machine Learning - This article is part of a series.
Part 3: This Article