Algoritma dan Model

Melalui kelas ini, kamu diajak untuk:

  • Mengidentifikasi model-model algoritma klasifikasi dan cara mengukur tingkat akurasinya.
  • Mengetahui cara menggunakan model untuk mendapatkan hasil prediksi.

Algoritma dan Model Klasifikasi

Di materi sebelumnya, kita telah melatih dataset dan mendapatkan dataset yang akan diuji. Langkah selanjutnya adalah memilih algoritma dan model klasifikasi yang paling akurat. Algoritma klasifikasi dalam Python ada banyak modelnya, mulai dari RandomForestClassifier hingga Logistic Regression.

Ketuk untuk mengenali beberapa model-model klasifikasi.

Logistic Regression

Ekstensi dari regresi linier dengan menerapkan fungsi logistik dari hasil regresi linier.

Decision Tree

Membagi dataset berdasarkan kondisi bercabang yang menghasilkan keputusan akhir.

Random Forest

Improvisasi dari decision tree dengan mengambil rata-rata beberapa decision tree yang diturunkan dari subset data train.

K Neighbors

Klasifikasi berdasarkan jarak dan kedekatan titik data dengan titik-titik lainnya.

MLP Classifier

Klasifikasi yang bergantung pada neural network sebagai pembuat keputusan.

Support Vector Machine

Digunakan untuk klasifikasi linier dan non-linier dengan mencari hyperplane, atau pemisah antar kelas (label).

Naive Bayes

Metode probabilitas untuk mencari prediksi berdasarkan pengalaman sebelumnya.

Melihat Akurasi Model

Setiap model memiliki tingkat akurasi yang berbeda. Akurasi model amat dipengaruhi oleh dataset. Satu model dapat memiliki akurasi tinggi untuk kasus tertentu bisa saja tidak cukup akurat di kasus lain. Maka dari itu, untuk memilih model pada dataset penguin, kita perlu melihat tingkat akurasi masing-masing model dengan fungsi score().

Logistic Regression

[in]:
# deklarasi fungsi logistic regression
logreg = LogisticRegression()
# pengaplikasian logistic regression
logreg.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan Logistic Regression: {:.2f}'.format(logreg.score(X_train, y_train)))
print('Akurasi test set dengan Logistic Regression: {:.2f}'.format(logreg.score(X_test, y_test)))

[out]:


Akurasi train set dengan Logistic Regression: 0.99
Akurasi test set dengan Logistic Regression: 0.99

Decision Tree

[in]:

# deklarasi fungsi decision tree
dt = DecisionTreeClassifier()
# pengaplikasian decision tree
dt = dt.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan Decision Tree Model: {:.2f}'.format(dt.score(X_train, y_train)))
print('Akurasi test set dengan Decision Tree Model: {:.2f}'.format(dt.score(X_test, y_test)))

[out]:

Akurasi train set dengan Decision Tree Model: 1.00
Akurasi test set dengan Decision Tree Model: 0.99

Random Forest

[in]:
# deklarasi fungsi random forest
rfor = RandomForestClassifier()
# pengaplikasian random forest
rfor.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan Random Forest: {:.2f}'.format(rfor.score(X_train, y_train)))
print('Akurasi test set dengan Random Forest: {:.2f}'.format(rfor.score(X_test, y_test)))

[out]:

Akurasi train set dengan Random Forest: 1.00
Akurasi test set dengan Random Forest: 1.00

K Neighbors

[in]:
# deklarasi k neighbors
knn = KNeighborsClassifier()
# pengaplikasian k neighbors
knn.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan K Neighbors Classifier: {:.2f}'.format(knn.score(X_train, y_train)))
print('Akurasi test set dengan K Neighbors Classifier: {:.2f}'.format(knn.score(X_test, y_test)))

[out]:

Akurasi train set dengan K Neighbors Classifier: 0.85
Akurasi test set dengan K Neighbors Classifier: 0.77

MLP Classifier

[in]:
# deklarasi fungsi MLP Classifier
mlpc = MLPClassifier()
# pengaplikasian MLP Classifier
mlpc.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan MLP Classifier: {:.2f}'.format(mlpc.score(X_train, y_train)))
print('Akurasi test set dengan MLP Classifier: {:.2f}'.format(mlpc.score(X_test, y_test)))

[out]:

Akurasi train set dengan MLP Classifier: 0.35
Akurasi test set dengan MLP Classifier: 0.41

Support Vector Machine

[in]:
# deklarasi fungsi SVM
clf = svm.SVC()
# pengaplikasian SVM
clf.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan MLP Classifier: {:.2f}'.format(clf.score(X_train, y_train)))
print('Akurasi test set dengan MLP Classifier: {:.2f}'.format(clf.score(X_test, y_test)))

[out]:

Akurasi train set dengan SVM: 0.73
Akurasi test set dengan SVM: 0.74

Naive Bayes

[in]:

# deklarasi fungsi Naive Bayes
gnb = GaussianNB()
# pengaplikasian Naive Bayes
gnb.fit(X_train, y_train)
# menampilkan hasil akurasi
print('Akurasi train set dengan Naive Bayes: {:.2f}'.format(gnb.score(X_train, y_train)))
print('Akurasi test set dengan Naive Bayes: {:.2f}'.format(gnb.score(X_test, y_test)))

[out]:

Akurasi train set dengan Naive Bayes: 0.97
Akurasi test set dengan Naive Bayes: 0.99

Dari hasil di atas, tingkat akurasi setiap model relatif tinggi dengan MLP Classifier sebagai pengecualian. Tugas kita adalah memilih model dengan tingkat akurasi tertinggi. Dalam kasus ini, kita akan menggunakan Random Forest.

Membuat Prediksi

Kita sampai pada pekerjaan utama, yaitu membuat prediksi. Mula-mula, mari buka kembali X_test atau dataset yang akan diprediksi oleh model.

print(X_test)

Berikut tampilannya

Dapat dilihat bahwa X_test terdiri dari 69 baris tanpa label spesies. Label spesies untuk 69 baris ini akan diprediksi oleh model Random Forest dengan fungsi predict().

[in]:
# mengaplikasikan fungsi prediksi
y_pred = rfor.predict(X_test)
# menampilkan hasil
print(y_pred)

[out]:
['Gentoo' 'Adelie' 'Gentoo' 'Chinstrap' 'Chinstrap' 'Adelie' 'Chinstrap'
 'Gentoo' 'Gentoo' 'Gentoo' 'Adelie' 'Gentoo' 'Adelie' 'Adelie' 'Adelie'
 'Chinstrap' 'Chinstrap' 'Chinstrap' 'Adelie' 'Adelie' 'Gentoo' 'Adelie'
 'Gentoo' 'Adelie' 'Chinstrap' 'Gentoo' 'Gentoo' 'Chinstrap' 'Gentoo'
 'Adelie' 'Adelie' 'Adelie' 'Adelie' 'Gentoo' 'Chinstrap' 'Adelie'
 'Adelie' 'Chinstrap' 'Gentoo' 'Gentoo' 'Gentoo' 'Gentoo' 'Adelie'
 'Gentoo' 'Gentoo' 'Adelie' 'Gentoo' 'Gentoo' 'Gentoo' 'Chinstrap'
 'Adelie' 'Adelie' 'Adelie' 'Adelie' 'Gentoo' 'Gentoo' 'Chinstrap'
 'Adelie' 'Adelie' 'Gentoo' 'Chinstrap' 'Gentoo' 'Chinstrap' 'Adelie'
 'Gentoo' 'Adelie' 'Gentoo' 'Adelie' 'Gentoo']

Kita juga dapat melakukan prediksi dengan nilai data di luar X_test. Lihat contohnya di bawah ini.

[in]:
data_baru = [["45.5", "15.2", "183.5", "3750"]]
y_pred = rfor.predict(data_baru)
print(y_pred)

[out]:
['Chinstrap']

Pro Tips

  • Algoritma klasifikasi terdiri dari banyak model dan setiap model punya tingkat akurasi yang berbeda tergantung pada dataset yang digunakan.
  • Model untuk melakukan prediksi dipilih berdasarkan tingkat akurasi yang paling tinggi.

Kuis

Apa fungsi yang digunakan untuk mengukur tingkat akurasi model?

Selamat, Anda telah menyelesaikan pelajaran ini
Klik untuk menyelesaikan