Proses Klasifikasi K-NN dengan Python

Proses dari klassifikasi menggunakan K-NN yaitu

  1. Loading Data : Kegiatan pengumpulan data yang akan digunakan untuk melakukan machine learning.
  2. Prepocessing Data : Kegiatan penyetingan data supaya dapat diproses oleh mesin.
  3. Splitting Data : Pembagian data untuk latih dan unutk uji.
  4. Training Model : Melakukan iterasi untuk memperoleh model.
  5. Testing Model : Mencoba model yang telah diporoleh untuk mengetahui akurasinya.

Testing model dapat dilakukan dengan nilai k yang berbeda-beda,besar atau kecilnya nilai K akan berpengaruh terhadap akurasi yang dihasilkan oleh mesin tersebut [baca disini].

Dalam menjalankannya digunakan aplikasi anaconda jupoternotebook

Impor Library Merupakan Proses yang pertama dilakukan.

import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
from sklearn.model_selection import train_test_split
from sklearn import neighbors
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

Setelah itu melakukan import data

df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep= ';') 
#pemanggilan data dari internet dengan format file .csv yang menggunakan tanda pemisah/separator ';'

Data dapat diperoleh dari data local ataupun dari internet seperti yang dilakukan sekarang ini. Data yang kita gunakan dapat ditampilkan dengan Perintah Menampilkan Data

df #menampilkan data secara keseluruhan
df.head() #menampilkan lima data teratas dari tabel
fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholquality
07.40.700.001.90.07611.034.00.99783.510.569.45
17.80.880.002.60.09825.067.00.99683.200.689.85
27.80.760.042.30.09215.054.00.99703.260.659.85
311.20.280.561.90.07517.060.00.99803.160.589.86
47.40.700.001.90.07611.034.00.99783.510.569.45

untuk melihat info dari data yang dimiliki dapat digunakan

df.info()

Pada data kali ini kolom terakhir merupakan label yang digunakan yaitu kolom dengan nama feature quality. label dan feature harus dibuat dalam variabel berbeda untuk melakukan proses klasifikasi, oleh karena itu diguakan perintah berikut

x = df.drop('quality',1) #variabel yang menyimpan data tanpa ada label.
y1 = df['quality'].values #variabel yang menyimpan data label

dalam melakukan klasifikasi data yang digunakan dalam bentuk array. untuk itu digunakan syntax seperti berikut ini

x = x.values

Selanjutnya dilakukan Split data untuk memisahkan data yang akan digunakan untuk training dan data yang akan digunakan untuk testing,

x_train, x_test, y_train, y_test = train_test_split(x,y1,test_size = 0.2,random_state = 42)
x_train

Selanjutnya dilakukan proses Learning dengan menggunakan syntax

knn = neighbors.KNeighborsClassifier(n_neighbors = 3) 
knn_model_1 = knn.fit(x_train,y_train)

Untuk dapat melihat akurasi dari hasil latih maka digunakan data test yang merupakan hasil Slit sebelumnya

knn_result_1 = knn_model_1.score(x_test,y_test)
print('k-NN accuracy for test set : %f' % knn_result_1)

Untuk Mengetahui info akurasi lebih detail dapat dilihat dengan

y_true, y_pred = y_test, knn_model_1.predict(x_test)
print(classification_report(y_true,y_pred))

Dan berikut ini merupakan Confusion Matrics

confusion_matrix(y_true, y_pred)

yang mana dengan cara di atas akan di dapatkan confusion matrix seperti berikut ini

array([[ 0,  0,  1,  0,  0,  0],
       [ 0,  1,  2,  7,  0,  0],
       [ 1,  4, 81, 40,  3,  1],
       [ 0, 11, 57, 51, 13,  0],
       [ 0,  0, 10, 18, 12,  2],
       [ 0,  0,  1,  2,  2,  0]], dtype=int64)

Dari confution matrix dapat juga diketahui akurasi presisi dan sensitivitasnya, Cara Membaca Confusion Matrix, perhitungan Akurasi, presisi dan sensitifitas.

Leave a comment

Design a site like this with WordPress.com
Get started