K-Nearest Neighbor
Merupakan algoritma dari jenis Machine Learning Supervised Learning yang bertujuan untuk
klasifikasi data suatu objek berdasarkan sejumlah k-data training yang memiliki jarak yang paling
dekat (nearest neighbor) dengan objek tersebut.
CONTOH:
Memprediksi apakah seseorang bisa lulus S2 tepat waktu berdasarkan variabel IPK
S1 dan usia masuk kuliah S2.
Ada 2 variabel yaitu IPK S1 dan usia masuk kuliah S2, variabel ini
akan digunakan untuk memprediksi apakah seseorang dapat lulus tepat waktu atau tidak
dengan metode KNN.
Catatan: untuk neighbor nya diusahakan jumlah nya tidak genap, karena dapat mengeluarkan
hasil 50%-50%.
Langkah-langkah KNN:
1. Menentukan parameter K, bilangan bulat positif sebagai nearest neighbor (banyaknya
tetangga terdekat).
2. Hitung jarak antara data baru dan semua data yang ada di data training.
3. Menentukan K tetangga terdekat berdasarkan jarak minimum.
4. Tetangga yang memiliki frekuensi terbanyak diambil sebagai nilai prediksi atau hasil
klasifikasi dari data yang baru tersebut.
Pada praktikum ini, kita akan menggunakan dataset Iris. Dataset Iris merupakan dataset
multivariate yang diperkenalkan oleh ahli statistika dan biologi inggris, Ronald Fisher, pada
tahun 1936. Dataset bunga Iris ini sangat terkenal di dunia Machine Learning yang digunakan
untuk ujicoba berbagai metode klasifikasi.
Dataset ini terdiri dari 3 spesies Iris yaitu Iris Setosa, Iris Virginica, dan Iris Versicolor dan tiap
spesiesnya memiliki 50 sampel. Dalam data Iris terdapat 4 atribut yang dapat mempengaruhi
klasifikasi yaitu, sepal length (panjang kelopak), sepal width (lebar kelopak), petal length
(panjang bunga), dan petal width (lebar bunga) dalam centimeter yang berbeda-beda.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
bunga = datasets.load_iris()
bunga
[5.7, 2.5, 5. , 2. ],
[6.5, 3. , 5.2, 2. ],
'data_module': 'sklearn.datasets.data',
# Lihat informasi dari data bunga
bunga.data.shape
(150, 4)
# Cari tau jenis-jenis bunga ada apa saja
bunga.target_names
# Buat data frame
data = bunga.data # Karena data berupa array maka ambil datanya saja
df = pd.DataFrame(data, columns=bunga.feature_names)
df
149 59 30 51 18
#Membagi dataset menjadi 50% data training dan 50% testing
X = bunga['data']
y = bunga['target']
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.50)
# Jenis bunga iris dapat diketahui berdasarkan sepal dan petalnya.
#Sepal adalah kelopak bunga yang besar sedangkan petal adalah kelopak bunga yang kecil
from sklearn.neighbors import KNeighborsClassifier
# Cari tetangganya dulu, misal kita gunakan n_neighbors=7
# weights adalah satuan berat yang digunakan untuk prediksi, default nya uniform yaitu bob
# algorithm digunakan untuk menghotung tetangga terdekat nanti
# auto berarti nanti dia akan memutuskan logaritma yang paling tepat berdasarkan nilai yg
knn = KNeighborsClassifier(n_neighbors=5, weights='uniform', algorithm='auto', metric='euc
knn.fit(x_train, y_train) # Machine belajar
KNeighborsClassifier(metric='euclidean')
##gunakan model yang sudah dibuat untuk memprediksi nilai perkiraan y - dari data testing
y_pred = knn.predict(x_test)
#Melihat hasil dan menampilkan evaluasi untuk ukuran baik buruknya hasil klasifikasi mengg
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)
Confusion Matrix:
[[31 0 0]
[ 0 21 4]
[ 0 0 19]]
Classification Report:
accuracy 0.95 75
Accuracy: 0.9466666666666667
#Kita uji dengan data baru
dataBaru = [[6.2, 1.5, 4.2, 2.6]] # 6.2 utk sepal length, 1.5 sepat width, 4.2 petal lengt
prediksi = knn.predict(dataBaru)
prediksi
array([2])
if(prediksi == 0):
print("Ini adalah bunga sentosa")
elif(prediksi == 1):
print("Ini adalah bunga versicolor")
else:
print("Ini adalah bunga virginica")
Praktikum ini bertujuan untuk memberikan pemahaman praktis mengenai salah satu metode
klasifikasi Naive Bayes Classifier (NBC). NBC merupakan metode klasifikasi tersupervisi yang
berbasis statistik probabilitas dari dataset. NBC pada dasarnya diperuntukkan untuk jenis
atribut kategorikal, namun untuk data numerik bisa disiasati dengan menerapkan metode
Gaussian, sehingga sering disebut sebagai *Gaussian Naive Bayes. *
Untuk librarynya digunakan library GaussianNB dari sklearn. Jadi kita menggunakan libary naive
bayes yang sudah ada
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(x_train,y_train)
GaussianNB()
Predicting
Kita sudah dapat menggunakan model yang terbentuk untuk memprediksikan data
y_pred = model.predict(x_test)
print(y_pred[0:5])
print(y_test[0:5])
[0 0 0 1 0]
[0 0 0 1 0]
Perhitungan Akurasi
Pada klasifikasi, nilai akurasi klasifikasi secara sederhana dapat dihitung dengan
memperbandingkan kelas hasil prediksi algoritma dengan kelas sebenarnya / actual class.
from sklearn import metrics
print("Test set Accuracy: ", metrics.accuracy_score(y_pred, y_test))
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)
Confusion Matrix:
[[31 0 0]
[ 0 24 1]
[ 0 1 18]]
Classification Report:
accuracy 0.97 75
Accuracy: 0.9733333333333334
prediksi = model.predict(dataBaru)
prediksi
array([2])
if(prediksi == 0):
print("Ini adalah bunga sentosa")
elif(prediksi == 1):
print("Ini adalah bunga versicolor")
else:
print("Ini adalah bunga virginica")
Tugas3 : :Jelskan nilai akurasi yang paling besar yang didapatkan dari seluruh model