Buku menyediakan teori; kursus menyediakan struktur; tetapi keterampilan machine learning hanya terbentuk ketika tangan Anda menyentuh data. Pertanyaannya tinggal: data yang mana? Chapter ini memetakan sumber dataset dari yang paling dekat — mainan bawaan scikit-learn yang kita pakai sepanjang course — sampai repositori publik berisi ribuan dataset, lengkap dengan pedoman memilih dataset yang tepat untuk tingkat kemampuan Anda dan kebiasaan lisensi yang aman.
Mulai dari yang Terdekat: Dataset Mainan #
Titik awal terbaik sudah ada di paket scikit-learn Anda sendiri: toy datasets yang terpasang bersama pustaka, tanpa unduhan, tanpa koneksi jaringan, dan selalu identik antar mesin. load_iris, load_wine, dan load_diabetes — yang kita pakai berulang kali di course ini — mengajarkan pola dasar: jumlah kelas yang seimbang, fitur yang terdefinisi rapi, ukuran yang muat di kepala. Dataset fetch_* seperti California Housing berada satu tingkat di atasnya: tetap dikelola scikit-learn tetapi diunduh saat pertama kali dipanggil, dengan cache lokal.
Contoh berikut menelusuri tiga dataset mainan sekaligus membandingkan karakternya — kebiasaan yang sama dengan eksplorasi data di enam proyek course ini.
# Telusuri dataset mainan bawaan scikit-learn: terpasang bersama paket,
# tidak butuh unduhan, dan deterministik - titik awal latihan paling aman.
# Tiga dataset dibandingkan: ukuran, fitur, dan sebaran target.
import pandas as pd
from sklearn.datasets import load_diabetes, load_iris, load_wine
print("== Dataset mainan bawaan scikit-learn ==")
for nama, pemuat in [
("iris", load_iris),
("wine", load_wine),
("diabetes", load_diabetes),
]:
bundel = pemuat(as_frame=True)
X = bundel.data
y = bundel.target
unik = sorted(y.unique())
if len(unik) <= 10:
target = f"klasifikasi {len(unik)} kelas: {', '.join(str(v) for v in unik)}"
else:
target = f"regresi, {len(unik)} nilai unik ({y.min():.0f}..{y.max():.0f})"
print(f"{nama:9s}: {X.shape[0]:3d} baris x {X.shape[1]:2d} fitur | {target}")
print("\n== iris sebagai DataFrame (5 baris pertama) ==")
iris = load_iris(as_frame=True)
df = iris.frame
print(df.head(5).to_string(index=False))
print("\n== Sebaran kelas iris ==")
for nama_kelas, jumlah in df["target"].value_counts().sort_index().items():
label = iris.target_names[nama_kelas]
print(f"kelas {nama_kelas} ({label}): {jumlah} baris")
print("\n== diabetes: fitur dan target numerik ==")
diabetes = load_diabetes(as_frame=True)
print(f"fitur: {list(diabetes.data.columns)}")
print(f"target: {diabetes.target.name}, "
f"rentang {diabetes.target.min():.1f} .. {diabetes.target.max():.1f}")
print(f"korelasi fitur-target tertinggi: "
f"{diabetes.data.corrwith(diabetes.target).abs().idxmax()}")Output yang Dihasilkan:
== Dataset mainan bawaan scikit-learn ==
iris : 150 baris x 4 fitur | klasifikasi 3 kelas: 0, 1, 2
wine : 178 baris x 13 fitur | klasifikasi 3 kelas: 0, 1, 2
diabetes : 442 baris x 10 fitur | regresi, 214 nilai unik (25..346)
== iris sebagai DataFrame (5 baris pertama) ==
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
5.1 3.5 1.4 0.2 0
4.9 3.0 1.4 0.2 0
4.7 3.2 1.3 0.2 0
4.6 3.1 1.5 0.2 0
5.0 3.6 1.4 0.2 0
== Sebaran kelas iris ==
kelas 0 (setosa): 50 baris
kelas 1 (versicolor): 50 baris
kelas 2 (virginica): 50 baris
== diabetes: fitur dan target numerik ==
fitur: ['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
target: target, rentang 25.0 .. 346.0
korelasi fitur-target tertinggi: bmiBedah singkatnya:
- Baris 8–22 (perbandingan tiga dataset): parameter
as_frame=Truemenghadirkan data sebagai pandas DataFrame — iris dan wine sebagai klasifikasi tiga kelas yang seimbang (masing-masing kelas 50 dan 59 baris), diabetes sebagai regresi dengan target numerik. - Baris 24–32 (anatomi iris):
bundel.framemenggabungkan fitur dan target dalam satu tabel;target_namesmenerjemahkan label angka ke nama spesies — struktur “Bunch” scikit-learn ini juga pola bagi dataset yang lebih besar. - Baris 34–40 (eksplorasi diabetes):
corrwithmenunjukbmisebagai fitur berkorelasi tertinggi dengan target — petunjuk yang layak diverifikasi lewat model, persis siklus hipotesis-data yang kita latih di Section Evaluasi dan Validasi Model.
Repositori Publik #
Ketika dataset mainan terasa sempit, empat repositori berikut menjadi tangga berikutnya — diurutkan dari yang paling ramah pemula.
| Repositori | Karakter | Awal yang baik |
|---|---|---|
| OpenML | Dataset bertag, API fetch_openml dari sklearn | Dataset kecil bertabulasi |
| UCI Machine Learning Repository | Klasik akademik, halaman per dataset | Dataset berdeskrripsi lengkap |
| Kaggle Datasets | Terbesar, dengan notebook komunitas | Data nyata + contoh analisis |
| Hugging Face Datasets | Berorientasi NLP/teks dan audio | Praktik di luar tabular |
OpenML menarik karena terintegrasi langsung dengan scikit-learn lewat fetch_openml — dataset dapat dimuat sebagai langkah kode, bukan unduhan manual. UCI adalah repositori tertua di daftar; hampir tiap datasetnya menyertakan paper asal dan deskripsi kolom, menjadikannya tempat bagus untuk belajar membaca dokumentasi data. Kaggle menggabungkan data dengan kompetisi dan notebook publik — cara cepat melihat banyak pendekatan atas data yang sama, dengan satu peringatan: notebook populer tidak selalu benar, perlakukan sebagai inspirasi, bukan otoritas. Hugging Face menjadi rumah utama data non-tabular — teks, citra, audio — saat Anda melanjutkan ke arah itu.
Pedoman Memilih dan Kebiasaan Lisensi #
Tiga pedoman memilih dataset latihan. Pertama, cocokkan dengan tingkat keterampilan: dataset di bawah 10.000 baris dengan puluhan fitur memungkinkan Anda bereksperimen cepat dan tahu setiap keputusan; dataset jutaan baris menenggelamkan pemula ke urusan teknis alih-alih pemodelan. Kedua, cari yang memiliki dokumentasi kolom — setengah nilai latihan ada di memahami arti fitur, dan dataset tanpa kamus kolom mengajarkan kebiasaan buruk memperlakukan data sebagai sekadar angka. Ketiga, naik bertahap sesuai tantangan: seimbang → tidak seimbang; bersih → ada nilai hilang; tabular → teks/citra.
Kebiasaan lisensi tidak bisa ditunda sampai dunia kerja: periksa halaman lisensi setiap dataset yang Anda pakai — sebagian besar dataset latihan berlisensi terbuka (CC0, CC-BY, MIT), tetapi sebagian lain membatasi penggunaan komersial atau mensyaratkan atribusi. Mencatat sumber dan lisensi pada setiap proyek latihan Anda — satu baris di README sudah cukup — membangun kebiasaan yang kelak menjadi keharusan di lingkungan profesional, dan membuat portofolio Anda tampak terlatih sejak pandangan pertama.
Data menempatkan Anda di medan; komunitas menjaga Anda tetap bergerak maju di atasnya. Chapter berikutnya memetakan tempat bertanya, mengikuti perkembangan bidang, dan mulai memberi balik — pada Komunitas dan Kontribusi.
Referensi Resmi #
- scikit-learn: Toy datasets — dokumentasi resmi dataset mainan yang dipakai contoh chapter ini.
- scikit-learn: Real world datasets
— dataset
fetch_*danfetch_openml. - OpenML — repositori dataset bertag dengan integrasi scikit-learn.
- UCI Machine Learning Repository — repositori dataset klasik akademik.