Algoritma KNN (K-Nearest Neighbor)

Mengenal apa itu algoritma KNN pada Machine Learning

sumber: VectorStock

Apa itu Algoritma K-Nearest Neighbor?

Algoritma k-NN merupakan salah satu dari algoritma supervised learning. Mengenai pembahasan supervised learning telah dibahas melalui artikel sebelumnya, dapat diakses melalui link berikut: disini. Mengapa k-NN dikatakan sebagai algoritma supervised learning? Karena k-NN bekerja secara langsung pada sampel yang dipelajari (data latih) dibandingkan membuat rule/aturan seperti algoritma lainnya.

Banyaknya k-Tetangga Terdekat

Untuk mengimplementasikan algoritma k-NN, perlu menentukan jumlah kluster yang digunakan untuk melakukan klasifikasi data baru. Banyaknya kluster(k) sebaiknya berjumlah ganjil, seperti k = 1, 3, 5, dan seterusnya. Penentuan jumlah kluster yang akan diimplementasikan dipertimbangkan berdasarkan banyaknya data yang ada. Semakin banyak data, jumlah kluster yang dipilih sebaiknya berjumlah rendah. Namun semakin besar jumlah data, kluster yang dipilih sebaiknya semakin tinggi.

Implementasi Algoritma K-NN

Bertanya pada Tetangga — Ketika orang terdekat kita mengidap penyakit diabetes. Namun, kita tidak tahu apakah kita juga bisa terjangkit penyakit diabetes juga atau tidak. Yang kita tahu, pola makan yang kita jalani sehat-sehat saja. Tetapi, pola makan belum menjamin juga apakah kita memiliki tanda-tanda mengidap diabetes atau tidak. Faktor lainnya yaitu ada kadar gula yang kita konsumsi, berat badan, umur, dan juga faktor genetik dari keturunan. Lalu, apakah kita dapat memprediksi penyakit diabetes melalui algoritma k-NN?

Untuk memprediksi hasil positif dan negatif mengidap penyakit diabetes diatas akan diimplementasikan menggunakan bahasa pemrograman Phyton dengan menggunakan Anaconda Jupyter Notebook.

  1. Siapkan dataset yang akan digunakan, disini saya menggunakan dataset yang telah di download sebelumnya disini. Upload dataset ke server Jupyter Notebook.
  2. Buat file Python 3 baru dengan cara klik New->Python 3 dan beri nama pada file tersebut. Import semua package yang dibutuhkan dan lakukan masukan nama file dataset yaitu diabetes.csv. Dataset yang saya gunakan telah diubah menjadi 50 sampel. Lima variavel diukur dari sampel meliputi: Glucosa(Gula), BMI(Berat Badan), DiabetesPedigreeFunction(Genetik), dan Age(Umur).
Gambar 1

3. Buat diagram boxplot untuk masing-masing variabel.

Gambar 2

Dari boxplot di atas, dapat dilihat variabel Glucosa terletak diantara data 100 hingga 150. Lalu, variabel BMI terletak diantara data 20 hingga 40. Variabel DiabetesPedigreeFunction terletak dibawah angka 1. Yang terakhir, variabel umur berada di rentan 30 hingga 50

4. Menampilkan scatter plot dari semua variabel untuk melihat sebaran data.

Gambar 3

5. Sebelum masuk ke analisis K-NN, import sklearn pada program, kemudian ketikkan script program seperti dibawah. Script dibagi menjadi 2 bagian data 80% untuk data training, dan 20% untuk data test, sehingga pada test_size=0.2

6. Setelah data di-split menjadi 80% untuk training set, dan 20% untuk test set, selanjutnya masuk ke analisis K-NN. Ketikkan script berikut:

Gambar 4

Tujuan dari penggunaan metode analisis ini yaitu untuk menentukan faktor-k yang sesuai dari accuracy yang dihasilkan. Semakin tinggi akurasi, maka faktor-k tersebut yang akan dijadikan referensi untuk semua data set. Diketahui bahwa klustering dengan nilai k=5 didapat Accuracy yaitu 0.6 atau dapat dikatakan 60%.

Gambar 5

Dari Gambar 5, hasil klustering dengan nilai k=3 adalah 0.7 atau 70%, dan ini merupakan akurasi paling tinggi dibandingkan dengan k=5 dan k=1.

Dari kedua hasil diatas, dapat disimpulkan bahwa tingkat akurasi pengujian model penentuan diabetes menggunakan algoritma K-NN ini dipengaruhi oleh klustering data.

Akhir kata, mohon maaf apabila ada kesalahan. Semoga dapat bermanfaat, Terima Kasih.

--

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Rheadavin Adhiskara

Rheadavin Adhiskara

IT Enthusiast | Developers

More from Medium

Using Member Functions

Bagging and Boosting

Inventory Material Segmentation Using K Means Clustering|detail code explained

CS373 Spring 2022: Dinesh Krishnan Balakrishnan