M7 Muhammad Sandhi Khadafi 2KB04 (20122007)
M7 Muhammad Sandhi Khadafi 2KB04 (20122007)
M7 Muhammad Sandhi Khadafi 2KB04 (20122007)
Import Dataset
# Import library
import pandas as pd
import numpy as np
# import dataset
data = pd.read_csv('https://gitlab.com/andreass.bayu/file-directory/-/raw/
main/adult.csv')
Review Dataset
# Lihat deskripsi dari tiap kolom
data.describe()
capital-loss hours-per-week
count 48842.000000 48842.000000
mean 87.502314 40.422382
std 403.004552 12.391444
min 0.000000 1.000000
25% 0.000000 40.000000
50% 0.000000 40.000000
75% 0.000000 45.000000
max 4356.000000 99.000000
age int64
workclass object
fnlwgt int64
education object
educational-num int64
marital-status object
occupation object
relationship object
race object
gender object
capital-gain int64
capital-loss int64
hours-per-week int64
native-country object
income object
dtype: object
<matplotlib.axes._subplots.AxesSubplot at 0x7fa6995b1f90>
Dataset memiliki distribusi kelas yang tidak seimbang/imbalanced sehingga secara teknis akan
digunakan teknik untuk menangani data yang tidak seimbang.
Dataset preparation
# Buat salinan dataframe
df = data.copy(deep = True)
age 0
workclass 2799
fnlwgt 0
education 0
educational-num 0
marital-status 0
occupation 2809
relationship 0
race 0
gender 0
capital-gain 0
capital-loss 0
hours-per-week 0
native-country 857
dtype: int64
age 0
workclass 0
fnlwgt 0
education 0
educational-num 0
marital-status 0
occupation 0
relationship 0
race 0
gender 0
capital-gain 0
capital-loss 0
hours-per-week 0
native-country 0
dtype: int64
StandardScaler adalah class dari sklearn untuk melakukan normalisasi data agar data yang
digunakan tidak memiliki penyimpangan yang besar.
# Import library standard scaler
(45222, 7)
(45222, 9)
(45222, 2)
Scatter matrix plot adalah plot yang digunakan untuk membuat sekumpulan scatter plot
dari beberapa pasang variabel. Hal ini sangat bermanfaat terutama ketika ingin
menganalisis bagaimana bentuk hubungan antar variabel. Plot ini sangat bermanfaat untuk
digunakan untuk data yang ukurannya tidak terlalu besar. Untuk menggunakan scatter
matrix kita harus memanggil fungsi scatter_matrix dari pandas.plotting
from pandas.plotting import scatter_matrix
p=scatter_matrix(df_final,figsize=(25, 25))
# Buat visualisasi korelasi data dengan heatmap
import seaborn as sns
import matplotlib.pyplot as plt
# plot heatmap
plt.figure(figsize=(12,10))
p=sns.heatmap(df_final.corr(), annot=True,cmap ='RdYlGn')
Proses Modelling dengan KNN
import numpy as np
from sklearn.model_selection import KFold
X=df_final.iloc[:,:].to_numpy()
y=df_final.iloc[:,-1:].to_numpy()
kf = KFold(n_splits=5)
kf.get_n_splits(X)
print(kf)
optimal_k = lrange[scores.index(max(scores))]
print("Nilai k KNN yang optimal adalah %d" % optimal_k)
print("Skor optimalnya adalah %.2f" % max(scores))
# plot hasilnya
plt.plot(lrange, scores,ls='dashed')
plt.xlabel('Nilai dari k untuk KNN')
plt.ylabel('Accuracy Score')
plt.title('Accuracy Scores untuk nilai k dari k-Nearest-Neighbors')
plt.show()
Nilai k KNN yang optimal adalah 3
Skor optimalnya adalah 0.95