Minggu, 03 Januari 2021

Metode dan Klasifikasi KNN (K-Nearest Neighbor)

 

Algoritma K-Nearest Neighbor (KNN) adalah sebuah metode klasifikasi terhadap sekumpulan data berdasarkan pembelajaran data yang sudah terklasifikasikan sebelumya. Termasuk dalam supervised learning, dimana hasil query instance yang baru diklasifikasikan berdasarkan mayoritas kedekatan jarak dari kategori yang ada dalam K-NN.

Tujuan dari algoritma ini adalah untuk mengklasifikasikan obyek baru berdasarkan atribut dan sample-sample dari training data.

Kelebihan dan Kekurangan KNN (K-Nearest Neighbor) ..

==> Kelebihan KNN (K-Nearest Neighbor)

  1. Sangat nonlinear.
  2. Mudah dipahami dan diimplementasikan.

==> Kekurangan KNN (K-Nearest Neighbor)

  1. Perlu menunjukkan parameter K (jumlah tetangga terdekat).
  2. Tidak menangani nilai hilang (missing value) secara implisit.
  3. Sensitif terhadap data pencilan (outlier).
  4. Rentan terhadap variabel yang non-informatif.
  5. Rentan terhadap dimensionalitas yang tinggi.
  6. Biaya komputasi cukup tinggi karena diperlukan perhitungan jarak dari setiap sampel uji pada keseluruhan sampel latih.

Study Kasus

Data yang digunakan yaitu Data Cryotherapy Dataset diperoleh dari UCI Machine Learning Repositor

Berdasarkan Data Cryotherapy Dataset dapat diketahui bahwa terdapat 90 data yang menjelaskan tentang hasil perawatan kutil. Dalam data ini terdapat 7 variabel yaitu Sex , Age , Time , Number of Warts , Type , Area dan Result of Treatment. Klasifikasi Data Cryotherapy yaitu Sex : 1 = laki-laki 2 = wanita ; Type : 1 = kutil biasa 2 = kutil plantar 3 = kutil lainnya ; Result of Treatment : 1 = sembuh 2 = tidak sembuh.

Selanjutnya, klasifikasi menggunakan K-Nearest Neighbor dapat dilakukan dalam phyton seperti berikut.

Pertama, import package pandas dan numpy.

import pandas as pd
import numpy as np

Kedua, menginput data Cryotherapy dengan format .csv .

cryotherapy = pd.read_csv(“cryotherapy.csv”)

Ketiga, membaca data Cryotherapy dengan 5 data teratas.

cryotherapy.head()

Keempat, menampilkan informasi tentang jenis data Cryotherapy.

cryotherapy.info()

Berdasarkan output diatas, maka dapat diketahui bahwa dari data Cryotherapy tipe datanya ada float dan integer. Terdapat tipe data float sebanyak 1 dan tipe data integer sebanyak 6.

Kelima, menentukan variabel independen dari data sehingga, menghapus variabel dependen yaitu Result of Treatment.

# Variabel independen
x = cryotherapy.drop([“Result_of_Treatment”], axis = 1)
x.head()

Berdasarkan hasil output diatas yang termasuk variabel dependen yaitu Sex , Age , Time , Number of Warts , Type dan Area. Dalam variabel dependen yang terdapat klasifikasi yaitu Sex dan Type.

Keenam, menampilkan data variabel dependen yaitu Result of Treatment.

# Variabel dependen
y = cryotherapy[“Result_of_Treatment”]
y.head()

Ketujuh, untuk melakukan klasifikasi K-Nearest Neighbor aktifkan package sklearn.

from sklearn.model_selection import train_test_split

Kedelapan, 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)

Kesembilan, mengubah skala data dengan mengaktifkan package dan menuliskan syntax.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

scaler.fit(x_train)

x_train = scaler.transform(x_train)

x_test = scaler.transform(x_test)

Kesepuluh, mengaktifkan package untuk klasifikasi KNN dengan import KNeighborsClassifier dari package sklearn.

from sklearn.neighbors import KNeighborsClassifier

Kesebelas, Mengaktifkan fungsi klasifikasi.

# Mengaktifkan fungsi klasifikasi
klasifikasi = KNeighborsClassifier(n_neighbors=5)

Keduabelas, Menginput data training pada fungsi klasifikasi.

# Memasukkan data training pada fungsi klasifikasi
klasifikasi.fit(x_train, y_train)

Ketigabelas, Menentukan hasil prediksi dari x_test.

# Menentukan hasil prediksi dari x_test
y_pred = klasifikasi.predict(x_test)
y_pred

Keempatbelas, menentukan probabilitas dari hasil prediksi.

# Menentukan probabilitas hasil prediksi
klasifikasi.predict_proba(x_test)

Kelimabelas, untuk menghitung confussion matrix maka import package confussion matrix.

from sklearn.metrics import classification_report, confusion_matrix

Keenambelas, menampilkan confussion matrix hasil prediksi klasifikasi.

print(confusion_matrix(y_test, y_pred))

Ketujuhbelas, menampilkan hasil ketepatan prediksi dengan menggunakan nilai precision, recall dll seperti berikut.

print(classification_report(y_test, y_pred))

Berdasarkan nilai ketepatan prediksi diatas maka dapat diketahui bahwa 0.84 merupakan nilai rata-rata yang cukup besar dari perhitungan yang lainnya maka hal itu menandakan ketepatan prediksi yang paling baik yaitu pada bagian precision dengan nilai 0.84 .

Kedelapanbelas, untuk mengitung nilai akurasi maka import accuracy score.

niali akurasi
from sklearn.metrics import accuracy_score
accuracy= accuracy_score(y_test, y_pred)
accuracy

Berdasarkan nilai output diatas , maka dapat diketahui bahwa nilai akurasi yang didapatkan yaitu 0.8333 .

Operator Identitas

 

Operator identitas adalah operator yang bisa dipakai untuk memeriksa apakah nilai sebuah variabel ada di tempat yang sama (di memory) atau tidak. Operator ini dikenal juga sebagai identity operators.

Operator ini terdiri dari 2 jenis:

Operator Penjelasan
is     = Bernilai True jika kedua operand merujuk ke object yang sama dan berisi nilai yang sama
is not = Bernilai True jika kedua operand merujuk ke object yang tidak sama

Berikut contoh penggunaannya:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a = 5
b = 5
c = 6
print('a is b :', a is b)
print('a is c :', a is c)
print('a is not c :', a is not c)
print('\n')
  
i = 'Duniailkom'
j = 'Duniailkom'
print('i is j :', i is j)
print('i is not j :', i is not j)
print('\n');
  
x = ['a','b','c']
y = ['a','b','c']
print('x is y :', x is y)
print('x is not y :', x is not y)

Hasil kode program:

a is b : True
a is c : False
a is not c : True
 
i is j : True
i is not j : False
 
x is y : False
x is not y : True

Contoh kode program operator identitas di Python

Untuk tipe data dasar seperti number atau string, jika dua buah variabel berisi nilai yang sama, maka operator is akan menghasilkan nilai True.

Namun dalam contoh terakhir, variabel x dan y berisi tipe data list. Meskipun nilai element-nya sama persis, tapi Python menyimpannya di alamat memory yang berbeda, sehingga dianggap tidak identik. Hasilnya, x is y adalah False.


Pengertian dan Contoh Operator Keanggotaan Python

Operator keanggotaan adalah operator yang dipakai untuk memeriksa apakah suatu nilai ada di dalam sebuah himpunan atau tidak. Himpunan yang dimaksud terdiri dari tipe data “berbentuk array” seperti string, list, tuple, set dan dictionary. Operator ini dikenal juga sebagai membership operators.

Operator ini terdiri dari 2 jenis:

Operator Penjelasan
in = Bernilai True jika nilai yang dicari ada di dalam himpunan
not in = Bernilai True jika nilai yang dicari tidak ada dalam himpunan

Berikut contoh penggunaannya:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foo = 'Duniailkom'
print('foo :',foo)
print('\'i\' in foo     :', 'i' in foo)
print('\'k\' not in foo :', 'k' not in foo)
print('\'d\' not in foo :', 'd' not in foo)
print('\n')
 
 
bar = ['a','b','c']
print('bar :',bar)
print('\'a\' in bar     :', 'a' in bar)
print('\'a\' not in bar :', 'a' not in bar)
print('\'d\' not in bar :', 'd' not in bar)
print('\n')
 
baz = (12,43,102,55)
print('baz :',baz)
print('102 in baz     :', 102 in baz)
print('102 not in baz :', 102 not in baz)
print('35 not in baz  :', 35 in baz)

Hasil kode program:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
foo : Duniailkom
'i' in foo     : True
'k' not in foo : False
'd' not in foo : True
 
bar : ['a', 'b', 'c']
'a' in bar     : True
'a' not in bar : False
'd' not in bar : True
 
baz : (12, 43, 102, 55)
102 in baz     : True
102 not in baz : False
35 not in baz  : False

Contoh kode program operator membership di Python

Operator in menyederhanakan proses pencarian sebuah nilai di dalam himpunan atau array. Dalam bahasa pemrograman lain, ini bisa dilakukan dengan fungsi tambahan atau dibuat manual menggunakan perulangan.



Operator Logika

 

Relational Operator adalah operator yang dapat digunakan untuk membandingkan antara dua operand,misalkan lebih besar mana antara a dan b,manakah yang lebih kecil antara c dan 12. Dari perbandingan di atas akan didapatkan suatu hasil yaitu salah atau benar.

Ada enam macam Relatioal Operator:

  • <       : kurang dari
  • <=     : kurang dari atau sama dengan
  • >       : lebih besar
  • >=     : lebih besar atau sama dengan
  • ==     : sama dengan
  • /=      : tidak sama dengan

Logical Operator adalah pengkombinasi antara operator-operator di atas yang terdiri dari || (OR), && (AND), ! (NOT). Logical Operator adalah operator yang digunakan untuk membandingkan 2 kondisi logika, yaitu logika benar (TRUE) dan logika salah (FALSE). Logical Operator  sering digunakan untuk kodisi IF, atau untuk keluar dari proses perulangan (looping). Jenis operand dalam Logical Operator  ini adalah variabel dengan tipe boolean. Namun jika operand bukan boolean, akan “dikonversi” menjadi boolean oleh PHP.

Jenis-jenis operator logika dalam PHP dapat dilihat dari tabel berikut:

 

Operator && dan || memiliki “kekuatan” lebih tinggi dari pada AND dan OR, sehingga baris perintah: $a AND $b || $c, akan dieksekusi oleh PHP menjadi $a AND ($b || $c).

Dari tabel diatas, saya hanya memberikan hasil untuk kondisi TRUE, maka selain kondisi tersebut, hasilnya adalah FALSE.

Assignment Operator adalah identik dengan “=” (sama dengan),operator ini dipadukan dengan operator aritmatika sehingga menjadi +=,-=,*=,dan %=. Pembacaan operasi assignment dilakukan dari kanan ke kiri, bukan dari kiri ke kanan seperti yang biasa kita pahami dalam matematika.

Kode berikut:

a = 250;

 Berarti “memasukkan nilai 250 ke dalam variabel a”. Dalam bahasa pseudo code (jika anda membaca buku tentang algoritma), ini biasa ditulis dengan simbol panah ke kiri:

a <- 250

 

Operator assignment ini disebut juga sebagai operator penugasan.

Conditional Operator adalah operator yang dapat digunakan untuk menentukan (pengambilan keputusan) secara sederhana (satu baris statement),dimana hanya digunakan karakter khusus ‘?’ (tanda tanya) dan ‘:’ (colon/titik dua). Conditional Operator atau Operator Kondisional juga berfungsi mengevaluasi ekspresi dan memberikan hasil tertentu tergantung dari hasil evaluasi(true atau false), hampir sama seperti Statement if else atau switch case.

PROGRAM PERCOBAAN:

1.Mengamati penggunaan operator conditional untuk menentukan suatu keputusan mana yang benr dan yang salah,dimana operator ini merupakan prinsip dasar dari statement “if-else” yang akan dilakukan percobaannya.

Hasil 1: misal a=2 ; b=1 ; c=3 ; d=0 

 

Hasil 2 : misal a=1 ; b=2 ; c=3 ; d=2