Cross Validation dengan Scikit-Learning Python

Selain dengan membagi data latih dengan data validasi/testing dengan proporsi tertentu misalnya 70/30 (lihat pos terdahulu untuk split data), teknik lain yang terkenal dan sangat dianjurkan adalah validasi silang (cross validation). Metode ini mirip split data tetapi dengan mentraining ulang data latih yang dirubah menjadi data testing dan sebaliknya. Dikenal dengan istilah K-Fold Cross Validation dengan K berarti jumlah sub pelatihannya. Perhatikan 5 data grup pelatihan pada 5-Fold Cross Validation berikut.

Masing-masing grup split terdiri dari 4 data latih dan 1 data uji yang berwarna biru. Bagaimana dengan akurasinya? Mudah saja. Kita tinggal merata-ratakan berapa akurasi tiap pelatihan.

Menggunakan Jupyter Notebook/Google Colab

Berikutnya kita coba menggunakan data latih bawaan Scikit-Learning. Gunakan kode berikut yang diambil dari situs resminya ini.

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm
X, y = datasets.load_iris(return_X_y=True)
from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, X, y, cv=5)
scores

Perhatikan baris terakhir yang memangil fungsi cross validation dengan cv=5. Jalankan maka anda akan memperoleh akurasinya. Di sini diambil contoh menggunakan SVM. Berikut tampilan dengan menggunakan Google Colab.

Jika dirata-rata akurasinya adalah (0.967 + 1 + 0.967 + 0.967 + 1)/5 sekitar 0.98 (98%) yang berarti sangat akurat dengan lima kali cek akurasi dengan 5 grup split data berbeda.  Untuk Cross Validation pada Jaringan Syaraf Tiruan silahkan lihat video di bawah. Sekian, semoga bermanfaat.

Iklan