4.3.1.2 Membandingkan Jarak Terdekat Nearest Neighbor
Langkah kedua adalah membandingkan jarak kemiripan similarity dari semua data yang telah dihitung menggunakan rumus euclidean distance untuk mendapatkan
jarak terdekat nearest neighbor. Langkah pertama adalah dengan membuat suatu tempat untuk menyimpan nilai jarak terdekat ke dalam sebuah map, berikut adalah
source code-nya: MapInstance, Double closest = new HashMapInstance, Double;
untuk menyimpan instance dan nilai jarak terdekat double max = dm.getMaxValue;
Selanjutnya untuk setiap data kanker lakukan perhitungan jarak euclidean distance antara data yang dites dengan data yang di-training dengan memanggil method
euclidean distance yang telah dibuat sebelumnya. for Instance tmp : this {
perulangan dilakukan sebanyak dataset double d = dm.UkurdgnEuclidinst, tmp;
hitung dengan euclidean distance Kemudian lakukan perbandingan antar jarak terdekat untuk mendapatkan jarak
yang paling dekat. Untuk mendapatkan jarak yang paling dekat nearest neighbor ada beberapa langkah yaitu 1 menyimpan semua hasil perhitungan euclidean distance ke
sebuah hashmap, 2 mengurutkan jarak dari terdekat ke terjauh, dan 3 menghapus jarak terjauh dan mengambil jarak terdekat sesuai k yang telah ditentukan.
if dm.compared, max inst.equalstmp { Cek jika sudah dicompare
closest.puttmp, d; masukkan jarak terdekat
Pada kode program di atas sistem akan mengecek jika jarak sudah didapatkan, jika ya maka akan dimasukkan ke dalam hashmap, kemudian setelah itu agar jumlah
jarak terdekat sesuai dengan k yang telah ditentukan maka jarak yang terjauh akan dihapus.
if closest.size k jika jumlah jarak terdekat melebihi k
max = removeFarthestclosest,dm; }} hapus jarak terjauh
return closest.keySet;} Pada kode program diatas jika jumlah jarak terdekat melebihi k maka sistem
akan menghapus jarak terjauh sehingga sistem akan mengambil jarak terdekat sesuai dengan k yang telah ditentukan. Dan kode program di bawah ini adalah untuk
menghapus jarak terjauh. private double removeFarthestMapInstance, Double vector,DistanceMeasure
dm { Instance tmp = null;
double max = dm.getMinValue; for Instance inst : vector.keySet {
double d = vector.getinst; if dm.comparemax,d {
max = d; tmp = inst;
} }
vector.removetmp; return max;
} Pada kode program di atas sistem akan mengurutkan jarak terdekat dan akan
menghapus jarak yang paling jauh. Setelah jarak terdekat didapatkan maka langkah selanjutnya adalah menentukan
nilai hasil klasifikasi dengan mengambil nilai dari data yang merupakan data yang memiliki jarak terdekat.
4.3.1.3 Mengambil Nilai Jarak Terdekat
Untuk mendapatkan nilai hasil klasifikasi maka dilakukan pengambilan nilai dari data yang merupakan data yang memiliki jarak yang paling dekat. Langkah pertama
sistem akan memanggil method untuk membandingkan jarak terdekat, kenudian untuk semua nilai data training diset nol 0, tetapi khusus untuk jarak terdekat sistem akan
menambah satu +1 pada nilai yang dimiliki oleh jarak terdekat. Penambahan nilai satu pada value yang dimiliki jarak terdekat bertujuan agar pada saat perbandingan
probabilitas sistem akan memilih atau mengambil nilai yang dimiliki oleh jarak terdekat sebagai nilai hasil dari klasifikasi. Berikut adalah kode programnya:
SetInstance neighbors = training.kNearestk, instance, dm; menyimpan hasil jarak terdekat
Membangun kelas distribusi HashMapObject, Double out = new HashMapObject, Double;
menyimpan hasil klasifikasi for Object o : training.classes{
Selama o bagian dari data training out.puto, 0.0;
set nilai kelasnya menjadi 0 for Instance i : neighbors {
selama I bagian dari jarak terdekat out.puti.classValue, out.geti.classValue + 1;
set nilai kelas menjadi 1 }
return out; kembalikan nilai out
Setelah didapatkan nilai satu untuk nilai kelas yang dibandingkan maka sistem akan membandingkan nilai tersebut untuk menentukan hasil akhir klasifikasi. Berikut
adalah kode program untuk membandingkan nilai. public Object classifyInstance instance {
MapObject, Double distribution = KelasDistribusiinstance; double max = 0;
Object out = null; for Object key : distribution.keySet {
if distribution.getkey max { max = distribution.getkey;
out = key;