Deskripsi
Pada praktikum kali ini, Anda diminta untuk membuat model ANN untuk mengklasifikasi potensi seorang customer akan meninggalkan perusahaan Anda atau tidak. Istirlah populer dari fenomena ini disebut sebagai 'churn '. Tingkat churn yang tinggi (chrun rate ) akan berdampak tidak baik bagi perusahaan.
Dataset
Download
Perhatian!
Pada praktikum ini, Anda akan menggunakan library tensorflow
dari google. Oleh karena itu, Anda diharuskan untuk menginstal tensorflow
terlebih dahulu.
Anda juga perlu menyesuaikan instalasi tensorflow yang Anda gunakan pada komputer lokal, apakah komputasi pada,
Panduan instalasi,
Pra Pengolahan Data
Langkah 1 - Import Library
Copy import numpy as np
import pandas as pd
import tensorflow as tf
Langkah 2 - Load Data
Copy dataset = pd . read_csv ( 'Churn_Modelling.csv' )
X = dataset . iloc [:, 3 : - 1 ]. values
y = dataset . iloc [:, - 1 ]. values
Cek data (X)
Copy [[619 'France' 'Female' ... 1 1 101348.88]
[608 'Spain' 'Female' ... 0 1 112542.58]
[502 'France' 'Female' ... 1 0 113931.57]
...
[709 'France' 'Female' ... 0 1 42085.58]
[772 'Germany' 'Male' ... 1 0 92888.52]
[792 'France' 'Female' ... 1 0 38190.78]]
Langkah 3 - Encoding Data Kategorikal
Copy from sklearn . preprocessing import LabelEncoder
le = LabelEncoder ()
X [:, 2 ] = le . fit_transform (X[:, 2 ])
Cek data (X) dengan print. Hasilnya,
Copy [[619 'France' 0 ... 1 1 101348.88]
[608 'Spain' 0 ... 0 1 112542.58]
[502 'France' 0 ... 1 0 113931.57]
...
[709 'France' 0 ... 0 1 42085.58]
[772 'Germany' 1 ... 1 0 92888.52]
[792 'France' 0 ... 1 0 38190.78]]
Langkah 4 - Encoding Kolom "Geography" dengan One Hot Encoder
Copy from sklearn . compose import ColumnTransformer
from sklearn . preprocessing import OneHotEncoder
ct = ColumnTransformer (transformers = [( 'encoder' , OneHotEncoder (), [ 1 ])], remainder = 'passthrough' )
X = np . array (ct. fit_transform (X))
Cek data (X) dengan print. Hasilnya,
Copy [[1.0 0.0 0.0 ... 1 1 101348.88]
[0.0 0.0 1.0 ... 0 1 112542.58]
[1.0 0.0 0.0 ... 1 0 113931.57]
...
[1.0 0.0 0.0 ... 0 1 42085.58]
[0.0 1.0 0.0 ... 1 0 92888.52]
[1.0 0.0 0.0 ... 1 0 38190.78]]
Langkah 5 - Split Data
Copy from sklearn . model_selection import train_test_split
X_train , X_test , y_train , y_test = train_test_split (X, y, test_size = 0.2 , random_state = 0 )
Langkah 6 - Scaling Fitur
Copy from sklearn . preprocessing import StandardScaler
sc = StandardScaler ()
X_train = sc . fit_transform (X_train)
X_test = sc . transform (X_test)
Membuat Model ANN
Langkah 1 - Inisiasi Model ANN
Copy ann = tf . keras . models . Sequential ()
Langkah 2 - Membuat Input Layer dan Hidden Layer Pertama
Copy ann . add (tf.keras.layers. Dense (units = 6 , activation = 'relu' ))
Langkah 3 - Membuat Hidden Layer Kedua
Copy ann . add (tf.keras.layers. Dense (units = 6 , activation = 'relu' ))
Langkah 4 - Membuat Output Layer
Copy ann . add (tf.keras.layers. Dense (units = 1 , activation = 'sigmoid' ))
Training Model
Langkah 1 - Compile Model (Menyatukan Arsitektur) ANN
Copy ann . compile (optimizer = 'adam' , loss = 'binary_crossentropy' , metrics = [ 'accuracy' ])
Langkah 2 - Fitting Model
Copy ann . fit (X_train, y_train, batch_size = 32 , epochs = 100 )
Membuat Prediksi
Diberikan informasi sebagai berikut,
Does this customer have a credit card ? Yes
Is this customer an Active Member: Yes
Estimated Salary: $ 50000
Apakah customer tersebut perlu dipertahankan?
Modelkan Data Baru dan Buat Prediksi
Copy print (ann. predict (sc. transform ([[ 1 , 0 , 0 , 600 , 1 , 40 , 3 , 60000 , 2 , 1 , 1 , 50000 ]])) > 0.5 )
Apakah hasilnya False ?
Prediksi Dengan Data Testing
Copy y_pred = ann . predict (X_test)
y_pred = (y_pred > 0.5 )
print (np. concatenate ((y_pred. reshape ( len (y_pred), 1 ), y_test. reshape ( len (y_test), 1 )), 1 ))
Cek Akurasi dan Confusion Matrix
Copy from sklearn . metrics import confusion_matrix , accuracy_score
cm = confusion_matrix (y_test, y_pred)
print (cm)
accuracy_score (y_test, y_pred)
Hasil (bisa jadi berbeda),
Copy [[1516 79]
[ 200 205]]
0.8605