Klasifikasi dengan KNN (K-Nearest Neighbors) menggunakan Python

INDRIANTI ISMAYANI
5 min readJun 16, 2019

--

Hello teman-teman semua, senang bisa bertemu lagi. Oke kali ini akan membahas tentang Klasifikasi dengan KNN (K-Nearest Neighbors) menggunakan Python. Langsung saja cusss …. πŸ˜ƒ

1. Apa itu KNN ?

K-Nearest Neighbor (KNN) adalah suatu metode yang menggunakan algoritma supervised dimana hasil dari query instance yang baru diklasifikan berdasarkan mayoritas dari kategori pada KNN. Tujuan dari algoritma ini adalah mengklasifikasikan obyek baru bedasarkan atribut dan training sample. Classifier tidak menggunakan model apapun untuk dicocokkan dan hanya berdasarkan pada memori. Diberikan titik query, akan ditemukan sejumlah k obyek atau (titik training) yang paling dekat dengan titik query. Klasifikasi menggunakan voting terbanyak diantara klasifikasi dari k obyek.. algoritma KNN menggunakan klasifikasi ketetanggaan sebagai nilai prediksi dari query instance yang baru.

2. Kelebihan dan Kelemahan KNN

  • Kelebihan β†’ KNN memiliki beberapa kelebihan yaitu bahwa dia tangguh terhadap training data yang noisy dan efektif apabila data latih nya besar.
  • Kelemahan KNN yaitu :
  1. KNN perlu menentukan nilai dari parameter K (jumlah dari tetangga terdekat)
  2. Pembelajaran berdasarkan jarak tidak jelas mengenai jenis jarak apa yang harus digunakan dan atribut mana yang harus digunakan untuk mendapatkan hasil yang terbaik
  3. Biaya komputasi cukup tinggi karena diperlukan perhitungan jarak dari tiap sample uji pada keseluruhan sample latih.

3. Contoh Penerapan KNN Menggunakan Python

Data yang digunakan untuk materi KNN kali ini berasal dari UCI Machine Learning Repository, teman-teman bisa langsung klik link dibawah ini πŸ‘‡

https://archive.ics.uci.edu/ml/datasets.html

  • Klasifikasi data yang akan digunakan, yaitu :

πŸ‘‰ Dataset Immunotherapy berisi informasi tentang hasil perawatan kutil dengan menggunakan pengobatan immunotherapy dari 90 pasien yang menggunakan pengobatan immunotherapy. Dengan 8 variabe yaitu (Sex, Age, Time, Number of Warts, Type, Area, Induration Diameter dan Result of Treatment). Berikut Pengklasifikasian variabel sex (jenis kelamin) untuk 1=laki-laki, dan 2 = wanita, Type (jenis kutil) untuk 1 = verruca vulgaris, 2= plantar, dan 3=lain-lain, dan variabel Result of Treatment ( y ) untuk 1=berhasil, dan 0=gagal.

Berikut 20 data pertama dari 90 data adalah format .CSV dengan menggunakan β€œData Immunotherapy”

Gambar 1. Tabel Dataset
  • Setelah mengklasifikasikan data, selanjutnya mengimport load package yang dibutuhkan yaitu numpy dam pandas
import pandas as pd
import numpy as np
  • Memasukkan data immunotherapy format data adalah .csv yang sesuai untuk memasukkan data ke dalam python
Immunotherapy = pd.read_csv("Immunotherapy.csv", delimiter = ",")
  • Memunculkan 5 data pertama
Immunotherapy.head()
Gambar 2. Output 5 Data Pertama

Ouput pada Gambar 2. merupakan output 5 data pertama dari data immunotherapy yang digunakan.

  • Untuk mengetahui info dari jenis data yang digunakan, yaitu dengan memanggil .info disini data yang saya gunakan yaitu jenis data integerdan float
Gambar 3. Info Dataset

Variabel independen yang digunakan adalah seluruh kolom kecuali kolom y, sehingga untuk memilih kolom-kolom tersebut digunakan syntax berikut dengan menghilangkan kolom y.

  • Variabel independen yang digunakan adalah seluruh kolom kecualipada kolom Result of Treatment atau yang saya simbolkan dengan β€œy”, sehingga untuk memilih kolom-kolom tersebut digunakan syntaxberikut dengan menghapus kolom β€œy”
# Variabel independen
x = Immunotherapy_numeric.drop(["y"], axis = 1)
x.head()
Gambar 4. Output setelah Menghapus Kolom Variabel Independen β€œy”
  • Untuk variabel dependen yang di gunakan adalah variabel Result of Treatment atau yang disimbolkan dengan β€œy”, sehingga digunakansyntax dibawah ini untuk menyeleksi kolom yang digunakan
# Variabel dependen
y = Immunotherapy_numeric["y"]
y.head()
Gambar 5. Output Menyeleksi Kolom β€œy”
  • Mengaktifkan package model selection dari SKlearn
from sklearn.model_selection import train_test_split
  • Membagi data training dan data testing
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 123)
  • Mengaktifkan package dan syntax untuk mengubah skala data
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()  
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
  • Mengaktifkan package untuk klasifikasi KNN dengan mengimportpackage KNeighbors Classifier dari SKlearn
from sklearn.neighbors import KNeighborsClassifier
  • Memasukkan data training pada fungsi klasifikasi KNN
knn.fit(x_train, y_train)
Gambar 6. Output Data Training pada Fungsi Klasifikasi KNN
  • Menentukan hasil prediksi dari x_test
y_pred = knn.predict(x_test)
y_pred
Gambar 7. Output Prediksi x_test
  • Menentukan probabilitas hasil prediksi
knn.predict_proba(x_test)
Gambar 8. Output Probabilitas dari Hasil Prediksi
  • Mengimport package confusion matrix untuk melihat keakuratan prediksi dengan data aktual
from sklearn.metrics import classification_report, confusion_matrix
  • Menampilkan confusion matrix hasil prediksi klasifikasi
print(confusion_matrix(y_test, y_pred))
Gambar 9. Output Confusion Matrix Hasil dari Prediksi klasifikasi

Berdasarkan Gambar 9. diatas confusion matrix hasil dari prediksi klasifikasi di atas diketahui bahwa yang sesuai prediksi benar sebanyak 1 dan yang sesuai prediksi salah adalah sebanyak 14 juga dengan masing-masing selisih kesalahan sebanyak 3 untuk yang diprediksi salah dan 0 untuk yang diprediksi benar.

  • Melihat ketepatan prediksi dapat menggunakan beberapa nilai berikut seperti precision,recall, dll. Nilai-nilai tersebut dapat diperoleh dengan menggunakan syntax berikut:
print(classification_report(y_test, y_pred))
Gambar 10.

Berdasarkan Gambar 10. diatas nilai-nilai di atas yaitu sebesar 0.86 atau sebesar 86% merupakan nilai yang cukup besar dan menandakan keakuratan prediksi bisa dikatakan cukup baik.”

β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” -SELESAI β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”-

Terimakasih teman-teman sudah meluangkan waktunya untuk membaca artikel ini, semoga bermanfaat dan segera dicoba yaa ….

Sampai bertemu di pembahasan yang lainnya, Babaaay :)

--

--