🗞️Praktikum 2
Klasifikasi Berita dengan Perceptron
Deskripsi
Dalam kasus ini, Anda akan melakukan klasifiaksi berita berdasarkan 3 kategori, yaitu Sport Hockey, Sport Baseball, dan Otomotif. Proses klasifikasi akan menggunakan model Perceptron.
Langkah 1 - Import Library
from sklearn.datasets import fetch_20newsgroups # download dataset
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import Perceptron
from sklearn.metrics import f1_score, classification_report
Langkah 2 - Pilih Label dan Split Data
categories = ['rec.sport.hockey', 'rec.sport.baseball', 'rec.autos']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories, remove=('headers', 'footers', 'quotes'))
newsgroups_test = fetch_20newsgroups(subset='test', categories=categories, remove=('headers', 'footers', 'quotes'))
Langkah 3 - Ekstrak Fitur dan Buat Model Perceptron
# Ekstrak Fitur
vectorizer = TfidfVectorizer()
# Fit fitur
X_train = vectorizer.fit_transform(newsgroups_train.data)
X_test = vectorizer.transform(newsgroups_test.data)
# Fit Model
clf = Perceptron(random_state=11)
clf.fit(X_train, newsgroups_train.target)
# Prediksi
predictions = clf.predict(X_test)
print(classification_report(newsgroups_test.target, predictions))
Hasilnya adalah,
precision recall f1-score support
0 0.88 0.88 0.88 396
1 0.82 0.83 0.83 397
2 0.88 0.87 0.87 399
accuracy 0.86 1192
macro avg 0.86 0.86 0.86 1192
weighted avg 0.86 0.86 0.86 1192
Penjelasan
Dataset yang digunakan pada kode program diatas adalah 20newsgroup
yang terdiri dari sekitar 20.000 dokumen. Scikit-learn bahkan menyediakan fungsi yang memberikan kemudahan untuk mengunduh dan membaca kumpulan dataset dengan menggunakan sklearn.datasets. pada kode program diatas Perceptron mampu melakukan klasifikasi multikelas; strategi yang digunakan adalah one-versus-all untuk melakukan pelatihan untuk setiap kelas dalam data training. Dokumen teks memerlukan ekstraksi fitur salah satunya adalah bobot tf-idf pada kodeprogram diatas digunakan tfidf-vectorizer
.
Last updated
Was this helpful?