Topik ini memperkenalkan scikit-learn, pustaka machine learning klasik untuk Python, yakni pustaka yang menyediakan algoritma untuk menemukan pola dari data tanpa aturan yang diprogram satu per satu. Bagian-bagian berikut menjelaskan kedudukan pustaka ini di ekosistem Python, cakupan algoritmanya, dan desain API yang menjadi pembeda utamanya. Di akhir topik, demo kecil menunjukkan kode minimum untuk melatih model pertama, sedangkan bagian terakhir merinci batas-batas pustaka ini secara jujur.
Kedudukan scikit-learn dalam ekosistem Python#
scikit-learn adalah pustaka open source untuk machine learning klasik. Istilah open source menunjuk perangkat lunak dengan kode sumber yang terbuka bagi publik. Kata klasik menunjuk algoritma berbasis statistik yang bekerja baik pada data tabular, yaitu data berbentuk tabel baris dan kolom. Pustaka ini dibangun di atas NumPy dan SciPy, dua pustaka numerik inti Python, sehingga data yang masuk ke model umumnya berupa array NumPy.
Proyek ini dimulai sekitar tahun 2007 sebagai proyek sampingan seorang pengembang Python, David Cournapeau, dan kini dikelola komunitas kontributor internasional di bawah lisensi BSD. Nama scikit-learn berakar dari istilah scikit, sebutan untuk perangkat tambahan di atas SciPy, yang dipasangkan dengan kata learn. Dengan kombinasi lisensi bebas, komunitas besar, dan dokumentasi yang terpelihara, pustaka ini menjadi pilihan umum untuk belajar maupun bekerja dengan machine learning klasik.
Cakupan algoritma#
Cakupan algoritma scikit-learn terbagi atas lima kelompok besar yang menaungi hampir semua masalah data klasik. Klasifikasi menetapkan kelas untuk setiap sampel, misalnya memisahkan spesies bunga berdasarkan ukuran kelopaknya. Regresi memperkirakan nilai angka, misalnya memperkirakan suhu dari pembacaan sensor. Clustering, yaitu pengelompokan sampel tanpa label, dan reduksi dimensi menangani data yang tidak berlabel. Reduksi dimensi memampatkan banyak kolom menjadi sedikit kolom yang mewakili informasi utama. Praproses menyiapkan data sebelum masuk ke model, misalnya penyetaraan skala dan pengisian nilai yang hilang.
Tabel berikut merangkum kelima kelompok beserta contoh algoritma yang menyertainya. Semua nama pada kolom contoh adalah kelas yang dapat diimpor langsung dari paket scikit-learn tanpa pemasangan tambahan. Tugas utama pada kolom tengah menjadi kata kunci yang berguna saat memilih algoritma untuk sebuah masalah.
| Kelompok | Tugas utama | Contoh algoritma |
|---|---|---|
| Klasifikasi | Menetapkan kelas tiap sampel | LogisticRegression, KNeighborsClassifier |
| Regresi | Memperkirakan nilai angka | LinearRegression, Ridge |
| Clustering | Mengelompokkan data tanpa label | KMeans, DBSCAN |
| Reduksi dimensi | Memampatkan jumlah kolom | PCA |
| Praproses | Menyiapkan data untuk model | StandardScaler, SimpleImputer |
Kelima kelompok itu berbagi antarmuka yang sama, sehingga perpindahan dari satu algoritma ke algoritma lain tidak menuntut pembelajaran ulang dari nol. Perihal ini menjadi pokok bahasan bagian berikut.
Satu API untuk semua model#
Pembeda utama scikit-learn adalah satu antarmuka yang berlaku untuk semua model. Setiap algoritma dikemas sebagai estimator, yaitu objek yang mempelajari pola dari data melalui pemanggilan metode yang sama. Metode fit() melatih estimator dari data, metode predict() menghasilkan prediksi dari model yang telah dilatih, sedangkan metode transform() mengubah data tanpa memodelkan apa pun dan dimiliki oleh alat praproses.
Keseragaman ini memberi dua dampak langsung. Pertama, mengganti algoritma hanya berarti mengganti satu baris pembuatan objek, karena sisa kode pelatihan dan prediksinya tetap sama. Kedua, langkah praproses dan model dapat dirangkai dengan pola yang sama, sehingga alur dari data mentah hingga prediksi tetap terbaca baris demi baris.
Desain serupa berlaku untuk atribut hasil belajar, misalnya coef_ yang menyimpan koefisien model linear. Konvensi penamaan dengan akhiran garis bawah menandai atribut yang baru terisi setelah fit() dijalankan. Atribut semacam ini dibaca saat model dianalisis, misalnya untuk melihat bobot tiap fitur.
Demo pertama di atas data sintetis#
Demo berikut dijalankan di atas data sintetis, yaitu data buatan yang polanya sudah diketahui, sehingga hasil model dapat diperiksa secara langsung. Data buatan dipilih karena pola yang harus ditemukan model terkendali sepenuhnya. Pemeriksaan pertama memastikan pustaka terpasang dengan mencetak nomor versinya.
import sklearn
print(sklearn.__version__)1.5.2Pemeriksaan kedua melatih model regresi linear pada 100 sampel sintetis dengan satu fitur. Berkas demo-pertama.py berisi seluruh kode yang dapat disalin dan dijalankan pada lingkungan yang sudah memasang scikit-learn. Argumen random_state=42 menjaga pembangkitan data tetap sama pada setiap eksekusi.
"""Demo pertama: regresi linear di atas data sintetis."""
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
import sklearn
print("Versi scikit-learn:", sklearn.__version__)
# data sintetis berukuran 100 sampel dengan 1 fitur
X, y = make_regression(n_samples=100, n_features=1, noise=15.0, random_state=42)
model = LinearRegression()
model.fit(X, y)
X_baru = [[0.5], [-1.2]]
print("Prediksi:", model.predict(X_baru))
print("Koefisien:", model.coef_[0])
print("Intersep:", model.intercept_)Versi scikit-learn: 1.5.2
Prediksi: [ 24.6402754 -53.19457282]
Koefisien: 45.785204830943506
Intersep: 1.7476729807904583Keluaran memperlihatkan alur yang sama persis dengan teorinya. Koefisien 45.785204830943506 dan intersep 1.7476729807904583 membentuk garis y ≈ 45.79x + 1.75, dan nilai prediksi pertama memang sama dengan hasil garis itu pada x = 0.5. Keseluruhan keluaran dengan demikian dapat dihitung ulang dengan tangan.
Batas-batas scikit-learn#
scikit-learn bukan pustaka deep learning, yaitu cabang machine learning yang membangun jaringan saraf berlapis banyak. Pustaka ini tidak menyediakan jaringan saraf dalam untuk data gambar mentah, suara, atau teks berskala besar, dan tidak menyediakan akselerasi GPU, yaitu perangkat keras komputasi grafis yang lazim digunakan jaringan saraf. Untuk kebutuhan semacam itu, pustaka seperti PyTorch atau TensorFlow lebih tepat digunakan.
Batas itu bukan kelemahan pada wilayahnya sendiri. Sebagian besar data di industri berbentuk tabel dengan ukuran yang muat di memori, dan pada wilayah inilah scikit-learn paling kuat. Modelnya cepat dilatih pada CPU biasa, parameternya dapat dibaca, dan hasilnya mudah dievaluasi dengan alat bawaan. Untuk data tabular klasik, model pohon dan model linear dari scikit-learn sering sebanding dengan pendekatan yang jauh lebih rumit.
Dengan memahami wilayah kerjanya, pustaka ini dapat diposisikan dengan benar, yaitu sebagai alat utama untuk machine learning klasik pada data tabular. Untuk pekerjaan di luar wilayah itu, pustaka lain lebih tepat dipilih sejak awal proyek. Pemahaman posisi ini mencegah pemilihan alat yang keliru saat sebuah masalah baru muncul.
Ringkasan#
- scikit-learn adalah pustaka open source untuk machine learning klasik yang dibangun di atas NumPy dan SciPy serta dimulai sekitar tahun 2007.
- Cakupannya meliputi klasifikasi, regresi, clustering, reduksi dimensi, dan praproses dalam satu paket.
- Satu antarmuka
fit,predict, dantransformmembuat algoritma dapat saling diganti dengan perubahan kode yang minimal. - Pustaka ini bukan alat deep learning dan tidak menggunakan GPU, melainkan unggul pada data tabular yang muat di memori.
Referensi#
- Getting Started — scikit-learn — Pengantar resmi yang merinci pola fit dan predict beserta contoh pertamanya.
- Beranda dokumentasi — scikit-learn — Titik masuk dokumentasi yang memuat ringkasan kemampuan pustaka.
- Changelog — scikit-learn — Riwayat rilis dan catatan hak cipta proyek sejak 2007 dengan lisensi BSD.