Materi
Klasifikasi teks memberi label kepada dokumen, misalnya kategori pengaduan atau topik berita, berdasarkan contoh yang sudah berlabel. Dokumentasi scikit-learn menyebut MultinomialNB sebagai salah satu dari dua varian Naive Bayes klasik untuk klasifikasi teks, dengan data yang direpresentasikan sebagai vektor hitungan kata, dan mencatat bahwa vektor TF-IDF juga dikenal bekerja dalam praktik.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
teks = ["hujan deras sore ini", "tim menang tipis", "angin kencang dan hujan", "pelatih tim baru"]
label = ["cuaca", "olahraga", "cuaca", "olahraga"]
model = make_pipeline(CountVectorizer(), MultinomialNB())
model.fit(teks, label)
print(model.predict(["hujan sepanjang hari"])) # ['cuaca']Alurnya tiga langkah: fit pada data latih, predict pada data baru, lalu bandingkan dengan label sebenarnya. make_pipeline(CountVectorizer(), MultinomialNB()) merangkai vectorizer dan model, sehingga fit dan predict menerima teks mentah; pipeline menjalankan fit_transform pada data latih dan transform pada data baru. predict_proba memberi peluang setiap kelas, urut sesuai atribut classes_.
Parameter alpha (bawaan 1.0) adalah penghalusan aditif; alpha = 1 disebut penghalusan Laplace. Setiap hitungan kata ditambah alpha, sehingga kata yang tidak pernah terlihat di satu kelas tidak membuat peluang kelas itu nol. Kata yang sama sekali tidak ada di kosakata latih diabaikan saat predict.
Akurasi adalah proporsi prediksi yang benar: accuracy_score(y_benar, y_prediksi). Data kecil karangan di kelas ini cukup untuk melihat cara kerjanya, bukan untuk menilai mutu model; angka akurasi baru bermakna bila dihitung dari data uji yang tidak ikut dipakai saat fit.