Anda di halaman 1dari 31

MANUAL BOOK

APLIKASI PENGOLAHAN DATA PREDIKSI


KEMISKINAN BERBASIS DATA E-COMMERCE
MENGGUNAKAN METODE K-NEAREST
NEIGHBOR DAN SELEKSI FITUR INFORMATION
THEORETICAL BASED

Disusun Oleh :
Tiara Fatehana Aulia
6701174078

PROGRAM STUDI D3 SISTEM INFORMASI


FAKULTAS ILMU TERAPAN
UNIVERSITAS TELKOM
BANDUNG, 2020
DAFTAR ISI

1 BAB I Pengenalan Python dan Instalasi Tools..............................................................................3


1.1 Python...................................................................................................................................3
1.2 Instalasi Python.....................................................................................................................3
1.3 Pengenalan Pip (Python Package Manager).........................................................................5
1.4 Scikit-learn.............................................................................................................................5
1.5 SK-Feature.............................................................................................................................6
1.6 Django...................................................................................................................................6
2 BAB II Preprocessing Data.............................................................................................................7
2.1 Load Dataset.........................................................................................................................7
2.2 Implementasi Seleksi Fitur..................................................................................................10
2.3 Implementasi K-Nearest Neighbor.....................................................................................11
2.4 Evaluasi................................................................................................................................12
3 BAB III Hasil Prediksi Kemiskinan : K-Nearest Neighbor............................................................13
4 BAB IV Cara Penggunaan Aplikasi Prediksi Kemiskinan.............................................................16
4.1 Menu dan Cara Penggunaan...............................................................................................16
5 BAB V Kesimpulan.......................................................................................................................20
5.1 Kesimpulan..........................................................................................................................20
1 BAB I Pengenalan Python dan Instalasi Tools
1.1 Python
Python adalah bahasa pemograman yang dapat melakukan eksekusi dengan sejumlah instruksi yang
multifungsi secara langsung. Python termasuk Bahasa pemograman yang mudah dipahami. Pada bab
I ini, penulis menggunakan python 3 sebagai platform[1]. Python dapat diunduh di halaman
https://www.python.org/downloads/ . Pada Gambar 1 merupakan beberapa versi dari python yang
dapat digunakan. Disini penulis menggunakan python 3.7.

Gambar 1 Halaman Unduh Versi Python

1.2 Instalasi Python


Setelah python sudah berhasil di download pada Gambar 1 , maka proses selanjutnya adalah proses
instalasi tools.

1. Double klik pada file python yang sudah ter-download, atau klik kanan lalu pilih Run as
Administrator. Jika muncul notifikasi Run as Administrator, silahkan pilih Yes.
2. Kemudian, centang Install launcher for all users dan Add python to PATH.
3. Terakhir, klik Install now.
4. Tunggu proses installing sampai selesai.

5. Jika sudah selesai, nanti aka nada notifikasi “setup was succesfull”

6. Setelah unduh selesai, kita bisa memeriksa apakah python sudah berhasil di instal pada
perangkat kita dengan membuka Command Prompt yang terlihat pada Gambar 2.
Gambar 2 Periksa Python

1.3 Pengenalan Pip (Python Package Manager)


Fungsi dari pip adalah sebagai package manager pada python yang akan kita gunakan untuk
menginstall library yang kita butuhkan. Untuk memastikan pip juga sudah terinstall di
komputer/laptop masing-masing, kita dapat memastikannya dengan ketik pip kemudian enter maka
akan muncul pada gambar 3. Disarankan untuk meng-upgrade versi pip dengan versi terbaru dengan
menjalankan perintah “pip install –upgrade pip”.

Gambar 3 Pip

1.4 Scikit-learn
Scikit-learn merupakan library yang ada pada python untuk menjalankan algoritma machine
learning. Scikit-learn menyediakan jenis algoritma yang cukup lengkap baik untuk supervised atapun
unsupervised learning seperti classification, regression, clustering, dimensionality reduction, model
selection, dan data preprocessing[2]. Beberapa library lain yang dibutuhkan untuk menjalankan
scikit-learn dan melakukan analisis data beserta cara install-nya sebagai berikut:
1. Pandas : pip install pandas
2. NumPy : pip install numpy
3. Scipy : pip install scipy

1.5 SK-Feature
SK-Feature merupakan library yang terdapat pada Bahasa pemograman Python. Library ini
memungkinkan untuk melakukan seleksi fitur pada sebuah dataset agar dataset menjadi data yang
bersih dan siap untuk diproses pada machine learning[2]. Untuk meng-install SK Feature dengan cara
membuka cmd dan ketik ”pip install skfeature-chappers” seperti Gambar 4.

Gambar 4 Install Sk Feature

1.6 Django
Django merupakan sebuah framework yang ditulis dengan baha pemograman Phyton. Django
merupakan framework yang sangat mudah dan ringkas dalam penulisannya dan mengikuti pola
arsitektur MVT (Model – View – Template). Django merupakan framework full-stack , yang artinya
django meliputi sisi front-end dan juga back-end[3]. Untuk meng-install Django dengan menjalankan
cmd dan ketik “pip install Django==2.1”.

Gambar 5 Install Django


2 BAB II Preprocessing Data
Pada bab ini, akan menjelaskan dari melakukan load dataset, mengambil kolom feature dan label,
implementasi seleksi fitur dan implementasi machine learning.

Gambar 6 Proses Preprocessing

2.1 Load Dataset


1. Mengambil Label dan Fitur

Berikut merupakan script untuk load dataset dengan df=pd.read_csv. Kemudian mengambil kolom
fitur yaitu raw_X dan kolom label yaitu raw_y.

df = pd.read_csv(r'D:\\tiara\\kodinganPA\\mywebsite\\media\\documents\\e_commerce2.csv')
dataset = df.iloc[0:,3:].values
data = np.array(dataset)

#get_data
kolom_id = df.iloc[0:,0].values
raw_X = df.iloc[0:,3:increment].values #fitur
raw_y = df.iloc[0:,2].values #label
kolom_city = df.iloc[0:,1].values #label

Disini datasetnya menggunakan data e-commerce dari OLX tahun 2016, yang berisikan 96 fitur dan
118 label. Ada berbagai item, yaitu mobil, moto, rumah, tanah, dan apartment. Data e-commerce ini
sangat berpengaruh dalam memprediksi kemiskinan karena di Indonesia pada jaman sekarang,
banyak masyarakatnya yang menggunakan internet untuk melakukan jual beli. Di Indonesia juga
banyak sekali aplikasi yang menyediakan jasa untuk jual beli, seperti Tokopedia, Shopee, Lazada, dan
lain-lain. Berikut merupakan fitur-fitur yang ada dalam dataset E-Commerce.
Gambar 7 Fitur-Fitur Dataset E-commerce

2. Data Cleansing

Dataset ini masih banyak yang harus dibersihkan untuk tidak menghambat proses selanjutnya.
Berikut merupakan script untuk data cleansing.
# clean data / pre-processing
clean_X = np.nan_to_num(raw_X)
clean_y = np.nan_to_num(raw_y)

Data cleansing berguna untuk membersihkan data, jadi jika ada data yang null akan digantikan ke 0
untuk proses selanjutnya tidak terhambat.

3. Normalisasi Data

Setelah proses data cleansing, masuk ke proses normalisasi data. Normalisasi data adalah skala nilai
pada dara akan disamakan untuk memudahkan dalam proses selanjutnya. Disini penulis skala
nilainya 0-10. Ada beberapa metode untuk melakukan normalisasi data. Berikut merupakan metode-
metode normalisasi data[4].

a. Min-max normalization
Metode min-max berfungsi untuk menyeragamkan nilai menjadi rentang nilai tertentu. Kelebihan
dari metode ini adalah kita bisa mendefinisikan nilai terendah dan tertinggi dari hasil feature scaling.
Secara matematis, min-max feature scaling dari kolom/vector Y dapat diekspresikan sebagai berikut:

y −min ⁡(Y )
y ' =a+ ×(b−a) , (1)
max ( Y ) −min ⁡(Y )

Dimana y , y ' , a , b masing-masing adalah nilai asli, nilai hasil feature scaling, nilai minimum skala
baru, dan nilai maksimum skala baru hasil feature scaling.

b. Mean normalization

Mean normalization dapat diformulasikan sebagai berikut

y−average ⁡(Y )
y'= , (2)
max ( Y )−min ⁡(Y )

c. Standardization (Z-score Normalization)

Metode umum perhitungan z-score adalah menentukan mean distribusi dan standar deviasi untuk
setiap feature. Selanjutnya kita kurangi mean dari setiap feature. Kemudian kita membagi nilai (rata-
rata sudah dikurangi) dari setiap feature dengan standar deviasinya sebagai berikut:
y− ý
y'= , (3)
σ

dimana ý dan σ masing-masing adalah nilai mean/rata-rata dan standar deviasi.

Berikut merupakan script untuk normalisasi data.

# normalisasi data
sc = MinMaxScaler(feature_range=(0,10))
sc.fit(clean_X)
X = np.array(sc.transform(clean_X))
y = np.array(clean_y)

pada script tersebut, penulis menggunakan Min Max Normalization dengan method MinMaxScaler
dengan range 0-10.

2.2 Implementasi Seleksi Fitur


Setelah dilakukan normalisasi data, data yang sudah di normalisasi akan masuk ke proses seleksi
fitur. Dalam proses seleksi fitur, disediakan beberapa algoritma, seperti information theoretical
based feature selection. Setelah data masuk ke proses seleksi fitur, data yang akan dihasilkan adalah
setiap fitur memiliki rangking masing-masing. Kemudian setelah di seleksi dan mendapatkan masing-
masing rangking, akan dilanjutkan ke proses berikutnya yaitu proses filtering fitur, dimana proses
tersebut memilih fitur yang paling relevan untuk diolah agar mendapatkan prediksi tingkat
kemiskinan. Penulis menggunakan algoritma CIFE (Conditional Infomax Feature Extraction) yang
meminimalkan redundansi pada fitur. Redundansi memiliki kondisi dimana, antara fitur yang tidak
terpilih dan fitur yang terpilih, label akan memberikan kelas dan harus memaksimalkan[5]. Berikut
script seleksi fitur CIFE.

selected_feature = CIFE.cife(X, y, n_selected_features=96)


print(selected_feature)

encoder = preprocessing.LabelEncoder()
ImportantFeature = []
for row in X :
row_array = []
for number, feature_idx, in enumerate(selected_feature) :
row_array.append(row[feature_idx])
ImportantFeature.append(row_array)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, shuffle=False)
y_train_encoder = encoder.fit_transform(y_train)

Sama seperti pada bagian normalisasi, pada label dan feature encoding dilakukan dengan
menggunakan package sklearn.preprocessing. Contoh dibawah adalah penggunaan encoding untuk
label. Label encoding akan dilakukan dengan menggunakan fungsi LabelEncoder(). Terdapat 2
langkah untuk melakukan encoding label seperti berikut:

1. Pemanggilan encoder = preprocessing.LabelEncoder() yang bertujuan untuk melakukan


fitting terhadap parameter label yang akan digunakan
2. Kemudian y_train_encoder = encoder.fit_transform(y_train) adalah perintah untuk
melakukan transformasi nilai asli menjadi nilai label yang sudah di-encode.
Untuk implementasi seleksi fitur CIFE menggunakan package yang ada pada library skfeature yaitu
skfeature.function.information_theoretical_based import CIFE. Implementasi CIFE akan dilakukan
dengan menggunakan fungsi CIFE.cife() dengan parameter n_selected_fitur=96 karena pada dataset
e-commerce berjumlah 96 fitur. Berikut hasil implementasi pada seleksi fitur CIFE.

Gambar 8 Implementasi Seleksi Fitur

Pada Gambar 8, terdapat beberapa rangking dari fitur – fitur tersebut. Rangking pertama ada di fitur
93, kemudian di rangking 2 di fitur 95 sampai seterusnya rangking 96 di fitur 13. Dari mulai yang
relevan hingga yang tidak relevan untuk memprediksi kemiskinan. Berikut 5 fitur yang berpengaruh
dalam prediksi kemiskinan, yaitu avg_buyer_land_rent, std_buyer_land_rent,
std_viewer_rumah_sell, std_viewer_car, dan std_viewer_rumah_rent. Item yang bepengaruh
adalah tanah, rumah, dan mobil.

2.3 Implementasi K-Nearest Neighbor


K-Nearest Neighbor adalah metode untuk melakukan klasifikasi terhadap objek berdasarkan data
pembelajaran yang jaraknya paling deket dengan objek tersebut. Tujuan dari algoritma ini adalah
untuk mengklasifikasikan objek baru berdasarkan atribut dan sampel-sampel dari data training. kNN
dilakukan dengan mencari kelompok K objek dalam data training yang paling dekat atau mirip
dengan objek pada data baru atau data testing. Penulis menggunakan library scikit-learn untuk
mengimplementasikan KNN regressor dengan menggunakan package sklearn.neighbors[6]. Untuk
mencari nilai k nya adalah dengan cara menambahkan parameter yaitu n_neighbors, dan mencari
jarak antar tetangganya menggunakan method yaitu DistanceMetric yang sudah disediakan oleh
library scikit-learn[7].

KNN disini digunakan untuk regresi bukan untuk klasifikasi, untuk itu pada library scikit-learn
terdapat method yaitu KneighborsRegressor. Berikut script untuk implementasi KNN.

dist = DistanceMetric.get_metric('euclidean')
cloo = KNeighborsRegressor(n_neighbors=8, metric = 'euclidean')
KNN.fit(X_train, y_train)
y_pred = KNN.predict(X_test)

2.4 Evaluasi
Pada tahap ini karena prediksi kemiskinan merupakan regresi, maka outputnya adalah nilai R-
Squared dan nilai RMSE. Matrik R2 digunakan untuk varians vector yang dapat diprediksi oleh model
regresi, seperti jika R2 = 1 maka model regresi dikatakan benar tetapi jika R 2 = negatif maka model
regresi dikatakan salah dalam memprediksi nilai. Matrik RMSE digunakan untuk melakukan
pengukuran terhadap perbedaan kesalahan antara vector actual dengan prediksi. Jika nilai RMSE
lebih rendah, maka lebih sedikit perbedaan antara nilai actual dengan nilai prediksi.

Berikut ini adalah rumus dari R-Square[8]:

SSR
R 2=
SST
(4)

Where :

SSR = Kuadrat dari selisih antara Y prediksi dengan nilai ∑ ¿

SST = kuadrat dari selisih antara nilai Y aktual dengan nilai ∑ ¿

Berikut ini adalah rumus dari RMSE[9]:

n
RMSE=
√ 1
n∑i=1
( ^y j − y 1)
2
(5)

Keterangan :

n = jumlah data
y = nilai hasil observasi
^y j = nilai hasil prediksi
i = urutan data pada database

Berikut script untuk mencari nilai R2 dan RMSE.

r2 = r2_score(y_true, y_pred)
rmse = sqrt(mean_squared_error(y_true, y_pred))

untuk mencari nilai R2 menggunakan fungsi r2_score() sedangkan mencari nilai RMSE menggunakan
fungsi sqrt(mean_squared_error()). Untuk y_true merupakan data actual atau label asli, sedangkan
y_pred adalah label prediksinya.

3 BAB III Hasil Prediksi Kemiskinan : K-Nearest Neighbor


1. Hasil R-Squared dan RMSE

Berikut merupakan hasil R-Squared dan RMSE.


Tabel 1 Hasil R2 dan RMSE

Jumlah Fitur Nilai R-Square Nilai RMSE


10 -0.0006 4.9265
20 0.2345 4.3091
30 0.4071 3.7923
40 0.4206 3.7487
50 0.4083 3.7884
60 0.4612 3.6150
70 0.4940 3.5034
80 0.4964 3.4950
90 0.5059 3.4620
96 0.4998 3.4830
Untuk hasil R-Squared dan RMSE, penulis melakukan training data selama 10 kali dalam
kelipatan 10 fitur untuk hasil yang lebih maksimal. Jadi disini akan diambil jumlah fitur yang ke-
untuk menjadi best predict atau prediksi terbaik. Pada hasil prediksi kemiskinan menggunakan
metode KNN, hasil R2 dan RMSE terbaik pada jumlah fitur 90 dengan nilai R2 adalah 0.5059 dan
nilai RMSE adalah 3.4620.

2. Grafik R-Squared dan RMSE

Berikut merupakan grafik R-squared dengan metode KNN. Untuk menampilkan grafik seperti
dibawah ini menggunakan package matplotlib.pyplot import plt. Berikut merupakan script
menampilkan grafik R-Squared.

plt.plot(increment_storage,r2_storage)
plt.ylabel('RSQUARE')
plt.xlabel('Features')
plt.title('RSQUARE Result with CIFE')
# plt.show()

Gambar 9 Grafik R2

Berikut merupakan grafik RMSE dengan metode KNN. Untuk menampilkan grafik seperti
dibawah ini menggunakan package matplotlib.pyplot import plt. Berikut merupakan script
menampilkan grafik RMSE.
plt.plot(jumlah_fitur,rmse_storage)
plt.ylabel('RMSE')
plt.xlabel('Features')
plt.title('RMSE Result with CIFE')
plt.show()

Gambar 10 Grafik RMSE


3. Grafik Hasil Prediksi Kemiskinan
Berikut merupakan grafik prediksi kemiskinan dengan metode KNN. Untuk menampilkan grafik
seperti dibawah ini menggunakan package matplotlib.pyplot import plt. Berikut merupakan
script menampilkan grafik prediksi kemiskinan.

fig = plt.figure()
fig.subplots_adjust(hspace=0.2, wspace=0.15, bottom=0.05, right=0.95, left=0.05)
fig.suptitle("Prediction Result CIFE")
for i,data in enumerate(ten_predictions):
ap = fig.add_subplot(2,5,(i+1))
ap.scatter(y,data)
ap.plot(y,y)
ap.set_title("{} Features".format(jumlah_fitur[i]))
plt.ylabel('First Label')
plt.xlabel('Prediction Result')
plt.show()

Gambar 11 Grafik Prediksi Kemiskinan

Pada Gambar 11 merupakan gambar grafik dari prediksi kemiskinan dari training kelipatan 10 fitur,
yaitu jumlah fitur 10, 20, 30, sampai dengan 96 fitur. Garis tengah merupakan bahwa data aktual
mendekati data prediksinya dan titik-titik berwarna biru adalah data prediksinya. Jika titik menjauhi
dari garis tengah maka data prediksinya kurang mendekati data aktual.
4 BAB IV Cara Penggunaan Aplikasi Prediksi Kemiskinan
4.1 Menu dan Cara Penggunaan
1. Struktur Menu

Adapun struktur menu pada Aplikasi Untuk Memprediksi Kemiskinan Berbasis Data E-
Commerce Menggunakan metode KNN dan seleksi Fitur Information Theoretical Based
adalah sebagai berikut :

1) Menu Dashboard
2) Menu Upload Data
 Download template data e-commerce
3) Menu List Data
 Prediksi kemiskinan
2. Penggunaan Aplikasi

Pada bagian ini, akan dijelaskan bagaimana cara penggunaan Aplikasi Untuk Memprediksi
Kemiskinan Berbasis Data E-Commerce Menggunakan metode KNN dan seleksi Fitur
Information Theoretical Based dari mulai registrasi aplikasi sampai dengan prediksi
kemiskinan.

1) Halaman Login
Berikut merupakan gambaran dari halaman login.

Setelah user telah memiliki akun, maka user tersebuat dapat masuk ke dalam halam utama
dengan memasukkan username serta password sebelumnya di halaman login ini. Jika user
belum memiliki akun, maka dapat menekan tombol create account yang digunakan untuk
mendaftarkan diri.
2) Halaman Registrasi
Berikut merupakan gambaran halaman registrasi.

Pada halaman registrasi digunakan untuk membuat akun jika user belum memiliki akun
sebelumnya. Di dalam halaman registrasi user harus menginputkan first name, last name,
email, username, password, repeat password.

3) Halaman Dashboard
Berikut merupakan gambaran halaman dashboard.

Pada tampilan menu utama ini user akan disediakan 2 pilihan, yang pertama adalah
dashboard yang digunakan untuk melihat deskripsi yang berhubungan dengan aplikasi
serta jenis-jenis machine learning yang akan digunakan untuk memprediksi suatu
kemiskinan di suatu daerah.
4) Halaman Upload dan List Data
Berikut merupakan halaman upload serta halaman list data.

Pada halaman upload, user dapat meng-upload data e-commerce yang dimiliki sesuai
dengan template yang telah ditetapkan oleh aplikasi.

Setalah user meng-upload data e-commerce maka akan tampil list data yang telah
diinputkan sebelumnya.
User dapat memilih jenis machine learning yang telah disediakan oleh aplikasi sesuai
dengan keinginan.

5) Halaman Hasil Prediksi


Berikut merupakan gambaran halaman hasil prediksi.
Setelah user memilih machine leraning yang diinginkan, maka akan muncul halaman hasil
prediksi yang berisi tentang hasil prediksi.

5 BAB V Source Code


5.1 Source Code Pembangunan User Interface
Berikut merupakan beberapa source code tampilan pada Aplikasi Untuk Memprediksi
Kemiskinan Berbasis Data E-Commerce Menggunakan metode KNN dan Seleksi Fitur
Information-Theoretical-Based mulai dari Views, Url, Model, dan Templates :

1. Views
2. urls.py

3. forms.py
5.2 Source Code Pembangunan Model

Berikut merupakan source code dari pembangunan model.


import pandas as pd
import numpy as np
import pickle
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import r2_score
from skfeature.function.information_theoretical_based import CIFE
from sklearn.model_selection import LeaveOneOut
from sklearn.metrics import mean_squared_error
from math import sqrt
from sklearn import preprocessing
from sklearn.neighbors import DistanceMetric
from sklearn.neighbors import KDTree
from sklearn.model_selection import KFold
import matplotlib.pyplot as plt
import joblib

loop = 0
increment = 0
increment_storage = []
r2_storage = []
rmse_storage = []
ten_predictions = []
jumlah_fitur = []

df = pd.read_csv(r'D:\\tiara\\kodinganPA\\mywebsite\\media\\documents\\e_commerce2.csv')
dataset = df.iloc[0:,3:].values
# print(dataset.shape)
data = np.array(dataset)

while increment < data.shape[1] - 1:


if increment + 10 > data.shape[1]:
increment += data.shape[1] - increment
else :
increment += 10

# get data
kolom_id = df.iloc[0:,0].values
raw_X = df.iloc[0:,3:increment].values #fitur
raw_y = df.iloc[0:,2].values #label
kolom_city = df.iloc[0:,1].values #label

# clean data / pre-processing


clean_X = np.nan_to_num(raw_X)
clean_y = np.nan_to_num(raw_y)

# normalisasi data
sc = MinMaxScaler(feature_range=(0,10))
sc.fit(clean_X)
X = np.array(sc.transform(clean_X))
y = np.array(clean_y)

# seleksi fitur
selected_feature = CIFE.cife(X, y, n_selected_features=96)
print(selected_feature)

encoder = preprocessing.LabelEncoder()
ImportantFeature = []
for row in X :
row_array = []
for number, feature_idx, in enumerate(selected_feature) :
row_array.append(row[feature_idx])
ImportantFeature.append(row_array)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, shuffle=False)
# print("data train",X_train.shape,y_train.shape)
# print("data test",X_test.shape,y_test.shape)
y_train_encoder = encoder.fit_transform(y_train)

#LeaveOneOut
dist = DistanceMetric.get_metric('euclidean')
cloo = KNeighborsRegressor(n_neighbors=8, metric = 'euclidean', algorithm='kd_tree')

loo = LeaveOneOut()
y_pred = []
y_true = []
for train_index, test_index in loo.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]

cloo.fit(X_train, y_train)
# save the model to disk
filename = 'model'+str(increment)+'knn2.sav'
joblib.dump(cloo,filename)

y_pred.extend(cloo.predict(X_test))
y_true.extend(y_test)

r2 = r2_score(y_true, y_pred)
rmse = sqrt(mean_squared_error(y_true, y_pred))

r2_storage.append(r2)
rmse_storage.append(rmse)
increment_storage.append(increment)

jumlah_fitur.append(increment)

print("nilai rSquare :%.4f, nilai rmse=%.4f jika total jumlah data=%d" % (r2,rmse,increment))
loop+=1
ten_predictions.append(y_pred)

plt.scatter(y_true,y_pred)
plt.plot(y_true, y_true)
plt.title('Prediksi Kemiskinan')
plt.xlabel("")
plt.ylabel("prediksi")
plt.show()

fig = plt.figure()
fig.subplots_adjust(hspace=0.2, wspace=0.15, bottom=0.05, right=0.95, left=0.05)
fig.suptitle("Prediction Result CIFE")
for i,data in enumerate(ten_predictions):
ap = fig.add_subplot(2,5,(i+1))
ap.scatter(y,data)
ap.plot(y,y)
ap.set_title("{} Features".format(jumlah_fitur[i]))
plt.ylabel('First Label')
plt.xlabel('Prediction Result')
plt.show()
6 BAB V Kesimpulan
6.1 Kesimpulan
Dapat ditarik kesimpulan, bahwa K-Nearest Neighbor dapat melakukan regresi dengan hasil R2
0.5059 dan RMSE 3.4620 pada jumlah fitur 90. Pada regresi KNN dapat menggunakan library scikit-
learn untuk menghitung hasil prediksi kemiskinan dengan fungsi KNeighborsRegressor. Dalam
regresi KNN, konsep kerjanya adalah mencari nilai k terdekat dengan menghitung jarak antar
tetangganya menggunakan distance metric Euclidean. Pada klasifikasi KNN label dari nilai k terdekat
di vote dan akan menghasilkan sebuah kelas dari label tersebut. Sedangkan regresi KNN label dari
nilai k di rata-rata dan akan menghasilkan sebuah nilai R2 dan RMSE untuk mengukur tingkat
keberhasilan dan besar kesalahan pada suatu model regresinya.

DAFTAR PUSTAKA

[1] M. F. Sanner, “Python: A programming language for software integration


and development,” J. Mol. Graph. Model., vol. 17, no. 1, pp. 57–61, 1999.

[2] scikit-learn, “Scikit-Learn,” scikit-learn developers, 2017. [Online].


Available: https://scikit-learn.org/stable/. [Accessed: 29-Sep-2019].

[3] W. E. B. Development, “Djan go,” 2018.

[4] D. A. Nasution, H. H. Khotimah, and N. Chamidah, “Perbandingan


Normalisasi Data untuk Klasifikasi Wine Menggunakan Algoritma K-NN,”
Comput. Eng. Sci. Syst. J., vol. 4, no. 1, p. 78, 2019, doi:
10.24114/cess.v4i1.11458.

[5] C. E. Queiros and E. S. Gelsema, “on Feature Selection.,” Proc. - Int. Conf.
Pattern Recognit., vol. 50, no. 6, pp. 128–130, 1984, doi:
10.1145/3136625.

[6] scikit-learn developers, “KNeighborsRegressor,” scikit-learn, 2017.


[Online]. Available: https://scikit-
learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegre
ssor.html. [Accessed: 26-Mar-2020].

[7] scikit-learn developers, “Distance Metric,” scikit-learn, 2017. [Online].


Available: https://scikit-
learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.h
tml. [Accessed: 26-Mar-2020].

[8] A. Y. J. AKOSSOU, “Impact of data structure on the estimators R-square


and adjusted R-square in linear regression.,” Int. J. Math. Comput., no.
January, 2013.

[9] T. Chai and R. R. Draxler, “Root mean square error (RMSE) or mean
absolute error (MAE)? -Arguments against avoiding RMSE in the
literature,” Geosci. Model Dev., vol. 7, no. 3, pp. 1247–1250, 2014, doi:
10.5194/gmd-7-1247-2014.

Anda mungkin juga menyukai