Keterampilan NumPy hanya melekat bila dilatih pada data nyata, bukan sekadar array buatan bab. Kabar baiknya, sumber data latihan tersedia dalam tiga bentuk yang saling melengkapi: dataset kecil yang sudah terpasang bersama pustaka, portal data resmi yang bisa diunduh, dan dataset sintetis yang kita hasilkan sendiri dengan seed.
Bab ini menunjukkan cara mengakses ketiganya, lengkap dengan saran ukuran yang masuk akal untuk latihan pada mesin sehari-hari.
Dataset Bawaan scikit-learn #
Paket scikit-learn membawa sejumlah dataset kecil yang sudah bersih dan siap dimuat — tanpa unduhan, tanpa akun. Daftar lengkapnya ada di halaman toy datasets , dan ringkasan modulnya di scikit-learn.org/stable/datasets . Dua di antaranya kita muat berikut:
import numpy as np
from sklearn.datasets import load_wine, load_diabetes
wine = load_wine()
diabetes = load_diabetes()
print("wine :", wine.data.shape, wine.data.dtype)
print("diabetes:", diabetes.data.shape)
print("target :", wine.target_names)
print("3 fitur awal:", wine.feature_names[:3])Output yang Dihasilkan:
wine : (178, 13) float64
diabetes: (442, 10)
target : ['class_0' 'class_1' 'class_2']
3 fitur awal: ['alcohol', 'malic_acid', 'ash']Mari kita bedah baris demi baris:
- Baris 1-2 (impor):
numpykita pakai untuk membacadtype, dan modulsklearn.datasetsadalah bagian scikit-learn yang terpasang terpisah dari NumPy (pip install scikit-learnbila belum ada). - Baris 4-5 (
load_wine(),load_diabetes()): setiap fungsiload_*mengembalikan objek mirip dictionary (Bunch) yang berisi data terukur:data(ndarray 2-D berisi fitur),target(label per baris),feature_names, dantarget_names. - Baris 6-7 (
wine.data.shape):shapemenunjukkan(jumlah_sampel, jumlah_fitur)— wine berisi 178 sampel × 13 fitur, diabetes 442 × 10;dtype-nyafloat64, tanda data siap diolah NumPy tanpa konversi. - Baris 8-9: nama target dan fitur tercetak sebagai array string;
feature_names[:3]memotong tiga nama pertama.
Dataset lain di kelompok yang sama: load_iris, load_digits, dan load_breast_cancer. Ukurannya kecil (puluhan sampai ratusan baris), sehingga cocok untuk melatih indexing, agregasi, dan boolean masking tanpa menunggu proses lama — keterampilan dari bab Indexing Array Multidimensi dan NaN-aware Aggregation.
Portal Data Resmi #
Untuk data yang lebih “hidup”, portal resmi menyediakan unduhan gratis:
| Sumber | Jenis data | Cara mengakses |
|---|---|---|
| data.go.id | Data pemerintah Indonesia: harga pangan, kesehatan, pendidikan, dan lainnya | Unduh file CSV/Excel, lalu muat dengan np.genfromtxt |
| toy datasets scikit-learn | Dataset kecil terkurasi, sudah bersih | Terpasang bersama scikit-learn, dimuat via fungsi load_* |
| modul datasets scikit-learn | Toy datasets + generator sampel sintetis + loader kategori besar | Modul sklearn.datasets |
Di luar tabel, dua sumber yang sering disebut komunitas tanpa kami tautkan: repositori dataset universitas (kumpulan dataset klasik untuk pembelajaran mesin) dan situs kompetisi data yang menyediakan dataset dari berbagai industri. Keduanya kadang meminta akun; periksa lisensinya sebelum dipakai.
Dataset Sintetis dengan Generator Ber-seed #
Untuk latihan tertentu — menguji performa, membangun pipeline, atau menuliskan soal — dataset sintetis sering lebih tepat daripada data nyata. Resep berikut membuat file CSV penjualan kecil yang hasilnya selalu sama di mesin mana pun:
import numpy as np
rng = np.random.default_rng(42)
jumlah = rng.integers(10, 100, size=5)
harga = rng.integers(10, 60, size=5) * 1000
data = np.column_stack((jumlah, harga))
np.savetxt("penjualan.csv", data, fmt="%d", delimiter=",", header="jumlah,harga")
with open("penjualan.csv") as f:
print(f.read().rstrip())Output yang Dihasilkan:
# jumlah,harga
18,52000
79,14000
68,44000
49,20000
48,14000Mari kita bedah baris demi baris:
- Baris 3 (
default_rng(42)): generator ber-seed menjamin baris angka yang sama persis setiap file dijalankan — prinsip dari bab Reproducibility dan Random Seed. - Baris 4-5 (
rng.integers(...)): dua kolom acak dibuat terpisah;hargadikalikan 1000 agar bernuansa rupiah. - Baris 6 (
np.column_stack): dua array 1-D disusun berdampingan menjadi matriks 5×2. - Baris 7 (
np.savetxt(...)): matriks disimpan sebagai CSV;fmt="%d"memaksa bilangan bulat, danheadermenambah baris judul kolom dengan awalan#bawaan. - Baris 8-9 (
open(...)): file hasilnya dibaca ulang untuk membuktikan isinya.
Keunggulan dataset sintetis: ukurannya bebas (ganti size=5 menjadi size=1_000_000 untuk latihan performa seperti pada bab Mengukur Waktu Eksekusi), datanya bebas masalah lisensi, dan hasil eksperimen mudah dibagikan karena pembaca lain bisa menghasilkan angka yang sama.
Mulai dari yang Kecil #
Mesin latihan sehari-hari biasanya punya RAM terbatas, jadi urutan yang efektif:
- Mulai dari dataset di bawah 10 MB — seluruh pipeline (muat, bersihkan, analisis, simpan) berjalan dalam hitungan detik, sehingga iterasi belajar cepat.
- Latih alur lengkap pada data kecil terlebih dahulu, termasuk penanganan nilai hilang seperti pada bab Penanganan Data Numerik yang Tidak Valid.
- Perbesar ukuran secara bertahap hanya saat tujuannya melatih performa dan manajemen memori — bukan saat masih menyusun logika.
Dengan tiga sumber di atas — dataset bawaan, portal resmi, dan data sintetis — kita tidak akan kehabisan bahan latihan untuk semua bab course ini, termasuk proyek-proyek pada section Proyek.