Latihan SKLearn SVM untuk classification

Kode program yang akan diajarkan di sini bisa diunduh di tautan berikut ini, untuk membukanya upload berkasnya dari Google Colab.

Sekarang saatnya kita mencoba menggunakan model SVM yang tersedia di library SKLearn. Untuk latihan kali ini kita akan memakai dataset Pima Indian. Dataset ini dikumpulkan oleh National Institute of Diabetes and Digestive and Kidney Diseases.
Dataset berisi 8 kolom atribut dan 1 kolom label yang berisi 2 kelas yaitu 1 dan 0. Angka 1 menandakan bahwa orang tersebut positif diabetes dan 0 menandakan sebaliknya. Terdapat 768 sampel yang merupakan 768 pasien perempuan keturunan suku Indian Pima.
Model machine learning yang akan kita buat bertujuan untuk mengklasifikasikan apakah seorang pasien positif diabetes atau tidak.
Tahap pertama yang perlu kita lakukan adalah mengunduh dataset Pima Indian dari tautan berikut. Setelah mengunduh dataset, jangan lupa masukkan ke dalam Colab. Dataset yang telah berhasil diunggah ke Colab akan tampil sebagai berikut.
20200430215018bf3f7541959b7e2e5744f87170d17302.png
Pada tahap selanjutnya kita akan mengimpor library pandas dan mengubah dataset menjadi sebuah dataframe.

  1. import pandas as pd

  2. df = pd.read_csv('diabetes.csv')


Lalu kita tampilkan 5 baris teratas dari dataframe untuk melihat isi dari dataset. Untuk melakukannya kita dapat menjalankan kode df.head() seperti di bawah.

  1. df.head()


202004302153042e9a31f72bc888ba288b079bda6f3663.png
Hal paling penting selanjutnya adalah kita perlu mengecek apakah terdapat nilai-nilai yang hilang pada dataset serta apakah ada atribut yang bukan berisi bilangan numerik. Kita bisa melakukan ini dengan memanggil fungsi .info() pada dataframe.

  1. df.info()


2020043021540468d55498f34c239c16e337cb9d7b3bdd.png
Output dari fungsi info() menunjukkan bahwa semua atribut nilainya lengkap, dan juga nilai-nilai dari tiap kolom memiliki tipe data numerik yaitu int64 dan float64.
Pada tahap ini data sudah bisa dipakai untuk pelatihan model.
Kita lalu memisahkan antara atribut dan label pada dataframe. Untuk memisahkan kolom-kolom pada dataframe kamu bisa melihat dokumentasinya pada tautan ini.

  1. # memisahkan atribut pada dataset dan menyimpannya pada sebuah variabel

  2. X = df[df.columns[:8]]

  3.  

  4. # memisahkan label pada dataset dan menyimpannya pada sebuah variabel

  5. y = df['Outcome']


Jika kita lihat, nilai-nilai pada dataset memiliki skala yang berbeda. Contohnya pada kolom Glucose dan kolom Diabetes Pedigree Function. Kita perlu mengubah nilai-nilai dari setiap atribut berada pada skala yang sama. Kita dapat mencoba menggunakan standarisasi dengan fungsi StandardScaler() dari SKLearn.

  1. from sklearn.preprocessing import StandardScaler

  2.  

  3.  

  4. # standarisasi nilai-nilai dari dataset

  5. scaler = StandardScaler()

  6. scaler.fit(X)

  7. X = scaler.transform(X)


Setelah atribut dan label dipisah, kita bisa memisahkan data untuk training dan testing menggunakan fungsi .train_test_split().

  1. from sklearn.model_selection import train_test_split

  2.  

  3.  

  4. X_train, X_test, y_train, y_test = train_test_split(

  5.     X, y, test_size=0.33, random_state=42)


Kita kemudian membuat objek Support Vector Classifier dan menampungnya pada variabel clf. Akhirnya kita sampai pada tahapan yang kita tunggu-tunggu, kita memanggil fungsi fit untuk melatih model.

  1. from sklearn.svm import SVC

  2.  

  3.  

  4. clf = SVC()

  5. clf.fit(X_train, y_train)


Terakhir, kita bisa melihat bagaimana akurasi prediksi dari model yang kita latih terhadap data testing.

  1. clf.score(X_test, y_test)


20200430220814d41d434f0c8262bf11d287dc3f2daee4.png
Selamat, Anda telah berhasil mengembangkan sebuah model Support Vector Classifier untuk mendeteksi diabetes

*

Post a Comment (0)
Previous Post Next Post