Untuk memulai machine learning dengan Python, pilih tugas kecil, pisahkan data pelatihan dan pengujian, lalu bandingkan model sederhana dengan baseline dasar. Anda tidak perlu menyewa GPU untuk latihan pertama. Dalam panduan ini, kita akan membangun pengklasifikasi lengkap di CPU, menafsirkan kesalahannya, dan memutuskan kapan masuk akal untuk mengubah infrastruktur.
Tujuannya adalah menghasilkan eksperimen yang dapat Anda ulangi dan jelaskan. Membuat satu prediksi yang benar kurang berguna dibanding mengetahui data apa yang dilihat model, bagaimana model dievaluasi, dan di mana model gagal.
Apa yang harus dipelajari terlebih dahulu dalam machine learning dengan Python
Proyek pembelajaran terawasi memiliki masukan, yang disebut fitur, dan jawaban yang diketahui, yang disebut target. Dalam contoh artikel ini, fiturnya adalah pengukuran bunga dan targetnya adalah spesies. Model mempelajari hubungan menggunakan set pelatihan lalu mencoba mengklasifikasikan contoh yang dipisahkan.
Sebelum memilih pustaka, tuliskan pertanyaan yang ingin dijawab:
| Tugas | Jenis jawaban | Kemungkinan eksperimen pertama |
|---|---|---|
| Mengklasifikasikan sebuah observasi | Satu kategori | Regresi logistik atau pohon keputusan |
| Mengestimasi suatu jumlah | Satu angka | Regresi linear dan analisis kesalahan |
| Menemukan kelompok tanpa label | Pengelompokan | Metode clustering dan inspeksi kelompok |
| Bekerja dengan gambar atau bahasa dalam skala besar | Representasi dan prediksi yang lebih kompleks | Pustaka deep learning yang sesuai, setelah menentukan evaluasi |
Jangan memilih jaringan saraf hanya karena terlihat lebih canggih. Jika solusi sederhana menyelesaikan tugas dalam biaya dan tenggat yang diperlukan, solusi tersebut menjadi baseline penting bagi alternatif apa pun setelahnya.
Siapkan lingkungan terisolasi
Anda memerlukan instalasi Python yang kompatibel dengan scikit-learn dan akses ke terminal. Buat folder kerja dan lingkungan virtual untuk menghindari konflik dengan proyek lain:
python -m venv .venv
Di macOS atau Linux, aktifkan dengan source .venv/bin/activate. Di PowerShell Windows, gunakan .venv\Scripts\Activate.ps1, sesuai kebijakan terminal setempat. Kemudian instal pustaka dan catat versinya:
python -m pip install scikit-learn
python -m pip freeze > requirements.txt
Gunakan python3 sebagai pengganti python jika itu adalah nama executable di komputer Anda. File dependensi membantu membuat ulang lingkungan; simpan juga versi Python, kode, dan konfigurasi eksperimen.
Model lengkap pertama: klasifikasi bunga
dataset Iris dari scikit-learn berisi 150 observasi, empat fitur numerik, dan tiga kelas. Dataset ini kecil dan cocok untuk mempelajari alur kerja, tetapi tidak membuktikan bahwa sistem siap untuk data nyata.
Simpan kode di bawah sebagai exemplo_iris.py dan jalankan python exemplo_iris.py. Kode ini menggunakan 120 observasi untuk pelatihan dan 30 untuk pengujian. Pembagian terstratifikasi mempertahankan representasi kelas; seed tetap memungkinkan pembagian yang sama diulangi.
import platform
from time import perf_counter
import sklearn
from sklearn.datasets import load_iris
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.20, random_state=42, stratify=y
)
models = {
"baseline": DummyClassifier(strategy="most_frequent"),
"logistica": make_pipeline(
StandardScaler(), LogisticRegression(max_iter=1000)
),
}
for name, model in models.items():
start = perf_counter()
model.fit(X_train, y_train)
train_seconds = perf_counter() - start
pred = model.predict(X_test)
print(name, "acuracia=", round(accuracy_score(y_test, pred), 3),
"f1_macro=", round(f1_score(
y_test, pred, average="macro", zero_division=0
), 3))
print("matriz de confusao:", confusion_matrix(y_test, pred).tolist())
print("tempo de treino (s):", round(train_seconds, 6))
print("Python:", platform.python_version(),
"scikit-learn:", sklearn.__version__)
DummyClassifier menyediakan pembanding yang tidak mempelajari hubungan antara fitur dan kelas. Dengan strategi yang digunakan di sini, model ini memprediksi kelas yang paling sering muncul dalam pelatihan. Jika model yang lebih rumit tidak meningkatkan baseline seperti ini, selidiki data, tujuan, dan evaluasi sebelum menghabiskan lebih banyak sumber daya. Lihat strateginya di dokumentasi DummyClassifier.
Regresi logistik menerima data melalui sebuah Pipeline: pertama standardisasi, lalu pengklasifikasi. Transformasi disesuaikan pada data pelatihan dan diterapkan kembali pada data pengujian. Hal ini mencegah perhitungan skala menggunakan informasi yang seharusnya disimpan untuk evaluasi, suatu bentuk umum kebocoran data. Dokumentasi praktik terbaik scikit-learn menjelaskan kehati-hatian ini.
Cara menafsirkan keluaran tanpa menipu diri sendiri
Pada eksekusi contoh ini di CPU, dengan Python 3.14.4 dan scikit-learn 1.9.1, kami memperoleh hasil di bawah ini. Ini adalah hasil dari latihan dan pembagian data ini, bukan janji untuk kumpulan data lain.
| Model | Akurasi pada pengujian | F1 makro |
|---|---|---|
| Baseline kelas paling sering | 0,333 | 0,167 |
| Standardisasi + regresi logistik | 0,933 | 0,933 |
Matriks model kedua adalah [[10, 0, 0], [0, 9, 1], [0, 1, 9]]: dua dari 30 bunga pada pengujian tertukar antara dua kelas terakhir. Ini lebih informatif daripada hanya mengatakan bahwa model benar sekitar 93%.
Akurasi menunjukkan proporsi prediksi yang benar pada kumpulan yang dievaluasi. F1 makro menghitung F1 untuk setiap kelas dan mengambil rata-rata tanpa memberi bobot lebih besar pada kelas yang paling sering. Matriks kebingungan menunjukkan kelas mana yang tertukar. Gunakan ketiga pembacaan tersebut untuk memahami perilaku, alih-alih hanya mencari angka terbesar.
Waktu yang dicetak hanyalah waktu pelatihan dari eksekusi tersebut di komputer Anda. Pada kumpulan sekecil ini, waktu bervariasi menurut mesin dan noise pengukuran. Jangan gunakan angka ini untuk menjanjikan penghematan di cloud atau membandingkan CPU dan GPU.
Hasil Iris juga tidak boleh dijadikan ekspektasi akurasi untuk produk Anda. Pada data sendiri, distribusi, kualitas label, dan biaya kesalahan dapat sepenuhnya berbeda. Satu kegagalan yang jarang terjadi mungkin lebih penting daripada puluhan prediksi benar yang mudah.
Sebelum mengubah algoritme, jawablah:
- Apakah model mengungguli baseline dasar dengan menggunakan pengujian yang persis sama?
- Kelas mana yang menampung kesalahan dan apa dampaknya pada tugas?
- Apakah terdapat informasi dalam masukan yang hanya tersedia setelah prediksi?
- Apakah pengujian merepresentasikan contoh baru atau berisi duplikat dan observasi yang terkait dengan pelatihan?
- Apakah kinerja tetap terjaga pada pembagian data valid lainnya?
Dari latihan ke kumpulan data nyata
Pembagian acak praktis untuk Iris. Namun, ini mungkin tidak memadai jika Anda memprediksi peristiwa masa depan, memiliki beberapa baris per pelanggan, atau menemukan salinan dari observasi yang sama. Dalam kasus ini, pertimbangkan pemisahan berdasarkan waktu atau kelompok, sesuai dengan cara model akan digunakan. Parameter random_state tidak memperbaiki pembagian yang secara konseptual keliru. referensi train_test_split menjelaskan kontrol yang tersedia untuk pembagian sederhana ini.
Sisihkan validasi untuk memilih konfigurasi dan pertahankan pengujian akhir yang terpisah. Jika Anda berkali-kali melihat pengujian untuk memutuskan penyesuaian berikutnya, pengujian itu mulai memengaruhi pilihan Anda. Untuk proyek kecil, spreadsheet eksperimen sudah membantu:
| Catatan | Apa yang perlu dicatat |
|---|---|
| Data | Asal, tanggal, ukuran, kolom, dan aturan pengecualian |
| Pembagian | Berdasarkan waktu, kelompok, atau acak; seed jika berlaku |
| Model | Algoritme, parameter, dan versi dependensi |
| Evaluasi | Metrik utama, kesalahan per kelas, dan perbandingan dengan baseline |
| Operasi | Waktu, memori, ukuran artefak, dan biaya yang diukur |
| Keputusan | Apa yang membaik dan masalah mana yang masih terbuka |
Saat mengganti Iris dengan tabel sendiri, validasi tipe, bidang yang hilang, dan kategori sebelum melatih. Pertahankan transformasi bersama model agar prediksi menggunakan persiapan data yang sama. Kolom yang berubah satuan dapat menyebabkan masalah meskipun kode terus berjalan.
Kapan GPU membantu — dan kapan tidak
Contoh dalam panduan ini berjalan di CPU. Menambahkan kartu ke mesin tidak secara otomatis membuat semua kode scikit-learn menggunakannya. Proyek ini mendokumentasikan dukungan GPU untuk sekumpulan estimator dan konfigurasi yang terbatas, termasuk melalui masukan dan opsi tertentu. Periksa jalur tepat dari algoritme yang dipilih.
GPU layak diuji ketika terdapat implementasi yang kompatibel dan beban kerja yang dapat memanfaatkannya, seperti pelatihan jaringan saraf tertentu atau pemrosesan batch. Meski demikian, peningkatannya harus menutupi transfer data, persiapan lingkungan, dan biaya infrastruktur.
| Situasi yang diamati | Tindakan berikutnya yang direkomendasikan |
|---|---|
| Data sedikit dan pelatihan cepat di CPU | Prioritaskan kualitas data dan evaluasi |
| Pembacaan atau persiapan menghabiskan sebagian besar waktu | Ukur penyimpanan, pemuatan, dan transformasi |
| Algoritme tanpa jalur yang kompatibel dengan GPU | Tinjau kembali pustaka atau tetap gunakan CPU |
| Pelatihan yang kompatibel dengan GPU menghabiskan sebagian besar siklus | Jalankan pengujian terkontrol pada konfigurasi kandidat |
| Model besar atau volume inferensi tinggi | Ukur memori, latensi, dan konkurensi dengan beban kerja nyata |
Bandingkan total waktu hingga memperoleh hasil yang berguna, bukan hanya waktu eksekusi suatu operasi. Sertakan instalasi, transfer, pelatihan, validasi, penyimpanan, dan periode tidak aktif. Alternatif yang lebih cepat per epoch dapat lebih buruk jika memerlukan lebih banyak percobaan untuk mencapai kualitas yang diperlukan.
Ketika proyek mencapai tahap ini, Flatkey Cloud GPU memungkinkan Anda mengevaluasi opsi sewa GPU NVIDIA. Konfirmasikan konfigurasi, wilayah, ketersediaan, dan ketentuan untuk beban kerja yang direncanakan. Bawa ukuran dataset, pustaka, memori yang diperlukan, dan tujuan pengujian; tutorial ini tidak mengharuskan Anda menyewa GPU untuk menyelesaikannya.
Sebelum menggunakan model
Tentukan format input yang diterima, perilaku untuk kolom yang tidak valid, dan cara memantau kesalahan setelah dipublikasikan. Simpan versi model dan persiapan data bersama-sama. Uji satu prediksi dengan data yang representatif di luar notebook sebelum memikirkan skala.
Jika langkah berikutnya adalah menyajikan model bahasa dengan infrastruktur sendiri, panduan deployment vLLM membahas jenis beban kerja lain. Jangan samakan pengklasifikasi tabular kecil dengan pengoperasian LLM: kebutuhan memori, evaluasi, dan server berbeda.
Pertanyaan umum
Apakah saya memerlukan GPU untuk mempelajari machine learning dengan Python?
Tidak. Contoh yang disajikan dapat dijalankan di CPU. Pilih infrastruktur yang lebih besar ketika ada bottleneck yang terukur dan implementasi yang dapat memanfaatkannya.
Mengapa menggunakan baseline sebelum model yang lebih kompleks?
Baseline menunjukkan apa yang dapat diperoleh dengan aturan sederhana. Ini memungkinkan Anda menilai apakah model mempelajari sesuatu yang berguna dan apakah kompleksitas tambahan dapat dibenarkan.
Apakah seed yang sama menjamin hasil yang sama di lingkungan apa pun?
Seed menetapkan pilihan acak yang dikendalikan oleh parameter tersebut. Catat juga versi dan lingkungan; perbedaan implementasi dan eksekusi dapat memengaruhi hasil. Jangan samakan keterulangan suatu pembagian dengan jaminan performa universal.
Apa proyek berikutnya setelah Iris?
Pilih tugas kecil dengan data yang Anda pahami, target yang dapat diverifikasi, dan kriteria keberhasilan. Ulangi prosesnya: baseline, pembagian yang benar, model, analisis kesalahan, dan pengukuran. Kebiasaan ini adalah dasar untuk berkembang dalam machine learning dengan Python tanpa meningkatkan biaya sebelum diperlukan.



