MODUL PRAKTIKUM · SOAL 05
Pembagian Data Latih dan Data Uji
Fungsi train_test_split() kustom untuk membagi 50 sampel menjadi 80% data latih dan 20% data uji tanpa duplikasi.
05/ 05
Hasil train-test split
Dataset contoh dibuat secara programatis sebanyak 50 sampel; pengacakan menggunakan shuffle() pada indeks.
Total sampel50dataset awal
Data latih (80%)40untuk melatih model
Data uji (20%)10untuk evaluasi
| Pemeriksaan | Hasil | Status |
|---|---|---|
| Total baris train + test | 50 | Sesuai |
| ID duplikat antar subset | 0 | Tidak ada |
| Rasio pembagian | 80% : 20% | 80 : 20 |
Pratinjau data latih
Ditampilkan 8 baris pertama dari subset train.
| ID sampel | Nilai tugas | Nilai ujian |
|---|---|---|
| 45 | 88 | 90 |
| 39 | 87 | 70 |
| 26 | 78 | 65 |
| 12 | 62 | 95 |
| 43 | 74 | 68 |
| 44 | 81 | 79 |
| 30 | 65 | 63 |
| 46 | 95 | 55 |
Pratinjau data uji
Seluruh 10 baris subset test ditampilkan untuk memudahkan pemeriksaan.
| ID sampel | Nilai tugas | Nilai ujian |
|---|---|---|
| 49 | 75 | 88 |
| 38 | 80 | 59 |
| 21 | 84 | 56 |
| 33 | 86 | 96 |
| 2 | 74 | 77 |
| 23 | 98 | 78 |
| 10 | 89 | 73 |
| 15 | 83 | 82 |
| 5 | 95 | 64 |
| 7 | 68 | 86 |
Kode PHP Native
Algoritma mengacak indeks, menentukan jumlah data uji, kemudian membentuk dua subset.
function train_test_split($data, $test_size = 0.2, $shuffle = true) {
$indices = array_keys($data);
if ($shuffle) {
shuffle($indices);
}
$testCount = (int) round(count($data) * $test_size);
$testIndices = array_slice($indices, 0, $testCount);
$trainIndices = array_slice($indices, $testCount);
$train = [];
$test = [];
foreach ($trainIndices as $idx) $train[] = $data[$idx];
foreach ($testIndices as $idx) $test[] = $data[$idx];
return ["train" => $train, "test" => $test];
}
Kesimpulan: Data latih digunakan untuk proses pembelajaran model, sedangkan data uji untuk mengukur performa pada data yang tidak dipakai saat pelatihan. Karena data diacak, urutan dan anggota subset dapat berubah pada setiap pemuatan halaman.