Proses dari klassifikasi menggunakan K-NN yaitu
- Loading Data : Kegiatan pengumpulan data yang akan digunakan untuk melakukan machine learning.
- Prepocessing Data : Kegiatan penyetingan data supaya dapat diproses oleh mesin.
- Splitting Data : Pembagian data untuk latih dan unutk uji.
- Training Model : Melakukan iterasi untuk memperoleh model.
- 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 acidity | volatile acidity | citric acid | residual sugar | chlorides | free sulfur dioxide | total sulfur dioxide | density | pH | sulphates | alcohol | quality | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11.0 | 34.0 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
| 1 | 7.8 | 0.88 | 0.00 | 2.6 | 0.098 | 25.0 | 67.0 | 0.9968 | 3.20 | 0.68 | 9.8 | 5 |
| 2 | 7.8 | 0.76 | 0.04 | 2.3 | 0.092 | 15.0 | 54.0 | 0.9970 | 3.26 | 0.65 | 9.8 | 5 |
| 3 | 11.2 | 0.28 | 0.56 | 1.9 | 0.075 | 17.0 | 60.0 | 0.9980 | 3.16 | 0.58 | 9.8 | 6 |
| 4 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11.0 | 34.0 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
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.