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.

python
# 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:

text
== 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: bmi

Bedah singkatnya:

  1. Baris 8–22 (perbandingan tiga dataset): parameter as_frame=True menghadirkan 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.
  2. Baris 24–32 (anatomi iris): bundel.frame menggabungkan fitur dan target dalam satu tabel; target_names menerjemahkan label angka ke nama spesies — struktur “Bunch” scikit-learn ini juga pola bagi dataset yang lebih besar.
  3. Baris 34–40 (eksplorasi diabetes): corrwith menunjuk bmi sebagai 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.

RepositoriKarakterAwal yang baik
OpenMLDataset bertag, API fetch_openml dari sklearnDataset kecil bertabulasi
UCI Machine Learning RepositoryKlasik akademik, halaman per datasetDataset berdeskrripsi lengkap
Kaggle DatasetsTerbesar, dengan notebook komunitasData nyata + contoh analisis
Hugging Face DatasetsBerorientasi NLP/teks dan audioPraktik 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 #