![]() |
Program Face Recognizer OpenCV Python |
Memaparkan catatan dengan label Tutorial. Papar semua catatan
Memaparkan catatan dengan label Tutorial. Papar semua catatan
Tutorial Membuat Program GUI Google Mail Sender Menggunakan Bahasa Python
Code Python Science Tkinter Tutorial![]() |
Program Google Mail Sender Python |
Tapi hasilnya tetap seperti dulu, bahkan sedikit kemajuan dengan adanya warna yang saya pilih agar menarik. Oleh karena itu sekarang saya akan membagikan tutorialnya untuk membuat Program GUI Google Mail Sender menggunakan Bahasa Python.
Tutorial Grafika Komputer dengan Bahasa C++ dan Freeglut #1 : Instalasi Dev-C++ dan Freeglut
Code Science Tutorial![]() |
Tutorial Grafika Komputer C++ dan Freeglut |
Tutorial Membuat Program Face, Eye dan Edge Detector Menggunakan OpenCV Python
Code Python Science Tutorial![]() |
Face dan Edge Detector OpenCV Python |
Tutorial Program GUI Encode dan Decode QR Code dengan Bahasa C#
Code Science Tutorial![]() |
Tutorial QR Code Bahasa C# |
Membuat Program AI Chatbot Bersuara Seperti Jarvis Menggunakan Bahasa C++
Code Science Tutorial![]() |
Program AI Chatbot C++ |
Tutorial Membuat SideNav Dan Animasi CSS Dengan JavaScript
Blog Code Science Tutorial Web Program![]() |
Tutorial CSS dan JavaScript |
Menebak Jenis Kelamin Seseorang Berdasarkan Namanya Menggunakan Python Machine Learning
Code Python Science Tutorial![]() |
Prediksi Nama Python Machine Learning |
Mengenal Algoritma K-Nearest Neighbors dan Penerapannya pada Python Machine Learning
Code Python Science Tutorial![]() |
Algoritma KNearestNeighbors pada Python |
Dan pada posting kali ini kita belajar bagaimana untuk membuat barisan code sederhana dengan memanfaatkan Python Machine Learning. Untuk menggunakan Python Machine Learning kita cukup memerlukan modul external bernama Scikit-Learn yang pernah saya bahas pada Membuat Simple Classifier Menggunakan Python Machine Learning.
Jika pada postingan sebelumnya saya menggunakan salah satu algoritmanya bernama Tree dan memanggil metode DecisionTreeClassifier. Maka kali ini kita akan mulai Algoritma baru yang bernama KNearestNeighbors.
K-nearest neighbor adalah algoritma supervised learning dimana hasil dari instance yang baru diklasifikasikan berdasarkan mayoritas dari kategori K-tetangga terdekat. Tujuan dari algoritma ini adalah untuk mengklasifikasikan obyek baru berdasarkan atribut dan sampel - sampel dari data training.
Algoritma K Nearest neighbor menggunakan neighborhood classification sebagai nilai prediksi dari nilai instance yang baru. Sebelum menyetuh keyboard untuk mulai menuliskan baris code, kita akan belajar bagaimana penerapan KNearestNeighbors dengan manual menggunakan kertas.
Sebagai contoh pada tabel dibawah ini saya memiliki 4 buah data, data dibawah ini adalah hubungan antara Daya dalam detik dengan kekuatan yang dihasilkan dalam kg per meter persegi, beserta kategorinya, Jelek atau Bagus.
Dari tabel dan data yang telah kita ketahui diatas kita ingin mencari apakah sebuah data baru dengan Daya 3 s dan Kekuatan 7 kg/meter persegi berlabel bagus ? atau justru jelek ?
Nah disini kita bisa menggunakan Algortima K-Nearest Neighbors. Hal pertama kita harus memplot seluruh data tersebut kedala bidang cartesius. Hal ini sebagai pandangan awal atau bisa disebut hipotesis.
import matplotlib.pyplot as plt
x = [7,7,3,1]
y = [7,4,4,4]
plt.scatter(x,y)
#data baru
plt.scatter(3,7)
plt.xlabel("Daya")
plt.ylabel("Kekuatan")
plt.show()
Dari code plot data diatas, kita akan melihat tampilan data baru yang ditandai dengan warna yang berbeda. Berikut tampilannya.
Disana terlihat bahwa ada 3 data dengan jarak yang cukup dekat dengan data baru yaitu data yang terletak pada titik 1,4, titik 3,4 dan titik 7,7. Sekarang kita coba analisis tampilannya, apakah label pada masing masing data terdekat pada data baru yang telah diketahui.
Agar lebih mudah saya misalkan dengan N, artinya Nearest. Disana terlihat bahwa N-1 Berlabel Bagus pada tabel diatas. N-2 juga demikian berlabel Bagus. Tetapi N-3 berlabel Jelek. Dari sini kita bisa asumsikan bahwa data baru kita adalah bagus. Mengapa ??
Algoritma K Nearest neighbor menggunakan neighborhood classification sebagai nilai prediksi dari nilai instance yang baru. Sebelum menyetuh keyboard untuk mulai menuliskan baris code, kita akan belajar bagaimana penerapan KNearestNeighbors dengan manual menggunakan kertas.
ALUR CERITA ALGORITMA K-NEAREST NEIGHBORS
Nah, sekarang kita akan belajar bagaimana Algoritma KNeareseNeighbors berjalan, atau alur cerita dari algoritma ini. Sebenarnya mudah saja, kita hanya harus memplot semua nilai training data yang ada, untuk kemudian data baru dapat kita tentukan, data tersebut masuk kategori mana, berdasarkan posisi terdekat dari data yang sudah ada.Sebagai contoh pada tabel dibawah ini saya memiliki 4 buah data, data dibawah ini adalah hubungan antara Daya dalam detik dengan kekuatan yang dihasilkan dalam kg per meter persegi, beserta kategorinya, Jelek atau Bagus.
Daya | Kekuatan | Label |
---|---|---|
7 s | 7 kg/meter persegi | Jelek |
7 s | 4 kg/meter persegi | Jelek |
3 s | 4 kg/meter persegi | Bagus |
1 s | 4 kg/meter persegi | Bagus |
Nah disini kita bisa menggunakan Algortima K-Nearest Neighbors. Hal pertama kita harus memplot seluruh data tersebut kedala bidang cartesius. Hal ini sebagai pandangan awal atau bisa disebut hipotesis.
Baca Juga: Membuat Jarvis Menggunakan PythonAgar lebih simple, disini saya menggunakan fungsi plot dari Matplotlib pada Python. Saya masukkan seluruh datanya dengan mengasumsikan Daya sebagai X dan Kekuatan sebagai Y. Kemudian saya tambahkan juga data baru yang akan kita cari yaitu 3 dan 7. Berikut codenya.
import matplotlib.pyplot as plt
x = [7,7,3,1]
y = [7,4,4,4]
plt.scatter(x,y)
#data baru
plt.scatter(3,7)
plt.xlabel("Daya")
plt.ylabel("Kekuatan")
plt.show()
Dari code plot data diatas, kita akan melihat tampilan data baru yang ditandai dengan warna yang berbeda. Berikut tampilannya.
![]() |
Data K-Nearest Neighbors |
![]() |
Data K-Nearest Neighbors |
Karena 3 tetangga terdekat dari data baru didominasi oleh label bagus. Yaitu 2 data, sedangkan yang berlabel jelek hanyalah 1 data.
Nah, jika begitu apakah hipotesis kita benar ?? Kita lakukan analisa lagi dengan menggunakan Matematika. Disini kita menggunakan teknik square distance. Caranya adalah kita hitung dengan rumus (X_train_data - X_data_Baru)^2 + (Y_train_data - Y_data_baru)^2
Dari Data pada tabel diatas dan data baru yang diketahui kita bisa membuat perhitungan sebagai berikut.
Terlihat dari hasil N-Value pada tabel diatas bahwa hipotesis kita benar. Disana tertera bahwa titik 7,7, titik 3,4 dan titik 1,4 memang yang terdekat dari data baru (ditandai dengan value yang kecil). Dan hasil analisa kita bisa dibilang akurat karena sesuai antara data visual dengan data matematis.
Dari Data pada tabel diatas dan data baru yang diketahui kita bisa membuat perhitungan sebagai berikut.
Daya | Kekuatan | N-Value |
---|---|---|
7 | 7 | (7 - 3)^2 + (7 - 7)^2 = 16 |
7 | 4 | (7 - 3)^2 + (4 - 7)^2 = 25 |
3 | 4 | (3 - 3)^2 + (4 - 7)^2 = 9 |
1 | 4 | (1 - 3)^2 + (4 - 7)^2 = 13 |
MEMILIH JUMLAH TETANGGA (NEIGHBORS) DENGAN TEPAT
Setelah kita melakukan percobaan diatas, kalian pasti sudah tidak asing dengan Neighbors. Yap tetangga ! disana saya mengurutkan tetangga dari yang terdekat dan membuang tetangga terjauh. Maka disana saya menggunakan n = jumlah data - 1.
Sebenarnya pemilihan n ini bebas saja, tetapi tetap ada aturannya jumlah tetangga terdekat atau n harus kurang dari atau sama dengan jumlah data yang diketahui.
Memang cukup simple jika bermain dengan data yang sedikit seperti diatas, tanpa menentukan jumlah n yang spesifik kita sudah bisa mendapatkan hasil yang cukup akurat. Lalu bagaimana kita menentukan jumlah tetangga yang akurat untuk data yang sangat besar agar hasil lebih akurat ??
Untuk itu kita sudah harus melepaskan pensil kita dan mulai mengetik baris kode. Kenapa ?? Biarkan mesin berpikir karena itulah tujuan dari Machine Learning.
Kembali ke topik cara menentukan jumlah tetangga terdekat agar mendapatkan hasil prediksi yang akurat, kita memerlukan metode yang dinamakan Tuning Parameter. Apa maksudnya ? Maksudnya adalah kita list semua prediksi nilai n kita kemudian kita tes skornya masing - masing. Nilai tertinggi berarti nilai n tersebut semakin akurat dalam menentukan data baru.
Tuning Parameter Pada K-Nearest Neighbors
Nah, untuk memulai Tuning Parameter kita harus menyiapkan data yang besar. Tentunya agar tuningnya tidak menghasilkan miss scoring, atau score yang kurang tepat. Oleh karena itu disini saya menggunakan data dari iris.
Bagi yang belum tahu iris. Iris adalah kumpulan data dari 3 jenis bunga yang masing - masing bunganya memiliki 50 data meliputi panjang dan lebar pada petal dan sepal bunga tersebut. Data Iris ini otomatis terbawa didalam paket Scikit-Learn.
Dan pada sub-bab ini kita akan menggunakan Datasets tersebut dan memulai mencari nilai n yang paling tepat untuk memprediksi data iris baru dengan keakuratan yang maksimal. Berikut codenya.
from sklearn.datasets import load_irisimport matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
x = iris.data
y = iris.target
k_range = range(1,31)
k_skor = []
for i in k_range:
knn = KNeighborsClassifier(n_neighbors = i)
skor = cross_val_score(knn, x, y, cv=10, scoring='accuracy')
k_skor.append(skor.mean())
plt.plot(k_range, k_skor)
plt.xlabel('K argumen')
plt.ylabel('K Skor')
plt.show()
Pertama - tama kita harus mengambil data dan target iris kedalam 2 variabel terpisah, ini bertujuan agar tidak tercampur nanti saat tuning maupun saat memprediksi data baru. Data ini adalah data - data atau ciri - ciri bunga, sedangan target adalah semacam label pada tabel kita diatas.
Kemudian kita membuat range dengan value angka yang kita prediksi menjadi nilai n yang terbaik. Disini saya mengetes 30 value, dari 1 sampai 30. Kemudian kita buat list untuk menampung skor untuk tiap nilai n kita nantinya.
Kemudian kita loop dan kita definisikan KNeighborsClassifier dan test skor masing - masing nilai n kita dengan cross_val_score, dengan cv atau lipatan data adalah 10, dan scoring berdasarkan accuracy atau ketepatan. Terakhir agar mudah dibaca maka kita plot data pada nilai k dan skor k.
Dan hasilnya adalah kita melihat grafik seperti ini
Pada grafik terlihat kalau N terakurat berada pada angka 13, 18 dan 20. Tapi, karena setelah angka 20 muncul, skor cenderung turun, maka n = 20 adalah nilai tetangga terbaik untuk mendapatkan hasil prediksi data baru pada Iris datasets.
Dan hasilnya adalah kita melihat grafik seperti ini
![]() |
Tuning Parameter K-Nearest Neighbors |
PENERAPAN K-NEAREST NEIGHBOR PADA PYTHON
Setelah kita paham bagaimana Algortima K-Nearest Neighbors bekerja maka kita akan mencoba membuat prediksi pada iris dengan menggunakan nilai n = 20, sesuai hasil terbaik dari tuning parameter diatas.
Sama seperti sebelumnya, kita harus mendefinisikan data dan target iris kedalam 2 variabel terpisah.
Kemudian kita fit dan predict. Masih sama ketika saya posting Machine Learning menggunakan Tree Classifier dulu. Berikut code lengkapnya.
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
x = iris.data
y = iris.target
knn = KNeighborsClassifier(n_neighbors = 20)
knn.fit(x,y)
knn.predict([[20,34,21,7]])
Yap, begitulah kita memprediksi data baru menggunakan K-Nearest Neighbors mengunakan Python. Dan jika code diatas kita run maka akan mendapatkan output berupa array. Seperti yang telah saya katakan pada post Machine Learning pertama.
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
x = iris.data
y = iris.target
knn = KNeighborsClassifier(n_neighbors = 20)
knn.fit(x,y)
knn.predict([[20,34,21,7]])
Yap, begitulah kita memprediksi data baru menggunakan K-Nearest Neighbors mengunakan Python. Dan jika code diatas kita run maka akan mendapatkan output berupa array. Seperti yang telah saya katakan pada post Machine Learning pertama.
Baca juga: GUI Angka Terbilang dengan PythonBahwasanya Scikit-Learn lebih baik membaca angka daripada kata. Oleh karena itu jenis bunga pada Iris juga dimisalkan angka yaitu 0 untuk Setosa, 1 untuk Versicolor dan 2 untuk Virginica.
KESIMPULAN
Machine Learning adalah tren pengolahan data yang sangat menyenangan untuk dipelajari. Saran saya jangan hanya hafal baris code pada modul Machine Learning yang tersedia tetapi pahami juga bagaimana hasil tersebut didapatkan.
Karena dengan begitu maka ilmu kita akan terasa lebih bermakna. Dan semoga ilmu diatas bermanfaat. Silahkan tanyakan apabila ada yang kurang dipahami. Terima kasih sudah membaca artikel saya tentang Mengenal Algoritma K-Nearest Neighbors dan Penerapannya pada Python Machine Learning.
Langgan:
Catatan (Atom)