Membaca Data Teks ke dalam Sistem

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;