Apa itu scikit-learn ?

Kedudukan scikit-learn sebagai pustaka machine learning klasik dan desain API yang konsisten.

Daftar isi

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.

KelompokTugas utamaContoh algoritma
KlasifikasiMenetapkan kelas tiap sampelLogisticRegression, KNeighborsClassifier
RegresiMemperkirakan nilai angkaLinearRegression, Ridge
ClusteringMengelompokkan data tanpa labelKMeans, DBSCAN
Reduksi dimensiMemampatkan jumlah kolomPCA
PraprosesMenyiapkan data untuk modelStandardScaler, 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.

python Pemeriksaan versi pustaka
import sklearn

print(sklearn.__version__)
text Keluaran
1.5.2

Pemeriksaan 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.

python demo-pertama.py
"""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_)
text Keluaran
Versi scikit-learn: 1.5.2
Prediksi: [ 24.6402754  -53.19457282]
Koefisien: 45.785204830943506
Intersep: 1.7476729807904583

Keluaran 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, dan transform membuat 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#