Pernah dengar istilah machine learning? machine learning adalah salah satu metode yang banyak digunakan akhir-akhir ini untuk membuat mesin belajar dan menjadi sistem outonomus yang lebih baik
Contents
Definisi Machine Learning (ML)
ML adalah konsep dimana mesin dapat belajar berdasarkan data. Contohnya sebuah mesih dapat mengenali objek karena sebelumnya kita telah melatihnya menggunakan dan mengenalkan sejumlah data tentang objek tersebut
ML merupakan bagian dari Artificial Intelligence yang juga dapat digunakan untuk pengambilan keputusan. ML menggunakan data histori sebagai bahan baku dan memprosesnya menjadi sebuah model
Tipe Machine Learning
Ada beberapa jenis algoritma ML antara lain:
- Supervised Learning
- Unsupervised Learning
- Reinforce Learning
#1 Supervised Learning
Supervised learning merupakan metode ML yang diimplementasikan pada data yang berlabel. Di dalam metode supervised learning data dibagi menjadi dua, training dan testing.
#2 Unsupervised Learning
Unsupervised learning merupakan metode ML yang tidak menggunakan data berlabel. Pembelajaran ini akan mengeksplorasi pola dari dataset yang mirip dan memprediksi hasilnya
#3 Reinforcement Learning
Reinforcement learning belajar dari lingkungan sendiri dan dari pengalaman yang ditemuinya. Jenis algoritma ini banyak digunakan di bidang Robotika.
Implementasi Machine Learning
Kita akan coba sekilas melakukan implementasi machine learning untuk melakukan klasifikasi
Contoh kasus yang kita gunakan adalah menggunakan dataset titanic. dataset titanic merupakan dataset populer untuk machine learning
Dari dataset ini kita akan lakukan klasifikasi apakah penumpang kapal selamat atau tidak berdasarkan data-data pendukung seperti umur, jenis kelamin, tipe kelas dan sebagainya.
Pada kasus ini kita akan coba implementasikan menggunakan Jupyter Notebook. Ada beberapa library yang digunakan seperti pandas dan sklearn. Kemudian silahkan download datasetnya terlebih dahulu di artikel ini
Eksploratori Data
Pertama, kita import library pandas untuk membaca dataset
import pandas as pd
# read dataset
df = pd.read_csv('titanic.csv')
Kedua kita preview dulu datanya dengan menggunakan df.head()

Ada beberapa kolom dari dataset ini seperti PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked
Detail dari kolom di dataset titanic akan dijelaskan di tabel ini
No | Nama Kolom / Atribut | Keterangan |
1 | PassengerId | ID Penumpang |
2 | Survived | Selamat atau Tidak (0 = Tidak; 1 = Selamat) |
3 | Pclass | Kelas Penumpang (1 = 1st; 2 = 2nd; 3 = 3rd) |
4 | Name | Nama Penumpang |
5 | Sex | Jenis Kelamin Penumpang |
6 | Age | Umur Penumpang |
7 | SibSp | Jumlah Saudara/Pasangan di Kapal |
8 | Parch | Jumlah Orangtua/Anak di Kapal |
9 | Ticket | Nomor Tiket |
10 | Fare | Tarif Penumpang |
11 | Cabin | Kabin |
12 | Embarked | Pelabuhan Embarkasi (C = Cherbourg; Q = Queenstown; S = Southampton) |
Kemudian kita lihat lebih dalam dari dataset seperti jumlah data dan tipe data dari setiap kolom dengan df.info()

Dari sini kita tahu bahwa terdapat beberapa tipe data seperti int, float dan object. Tipe object biasanya merujuk pada categorical data. Jumlah kolom adalah 12 dan jumlah baris adalah 891 dengan beberapa kolom yang mempunyai missing values
Kelas target pada dataset ini adalah kolom ‘Survived‘ sedangkan kolom lainnya adalah sebagai feature untuk menentukan apakah penumpang selamat atau tidak
Preprocessing
Kita akan melakukan preprocessing sederhana seperti apa yang telah kita temukan berdasarkan eksploratori data yaitu menghapus kolom yang tidak diperlukan, melakukan imputasi missing value dan merubah categorical data menjadi bentuk numerik karena machine learning tidak dapat memproses data string secara langsung
Pertama, kita akan hapus kolom yang kurang penting atau terlalu banyak missing value seperti kolom ‘PassengerId‘,’Name‘,’Ticket‘ dan ‘Cabin‘
df.drop(['PassengerId','Name','Ticket','Cabin'], inplace=True, axis=1)
Kemudian kita cek apakah masih ada missing values dengan fungsi isnull()
df.isnull().sum()

Terdapat missing value di kolom Age dan Embarked. Kita akan lakukan imputasi nilai yang kosong kolom Age dengan mencari rata-rata Age Penumpang
df['Age'] = df['Age'].fillna(df['Age'].mean())
dan imputasi Embarked dengan embarkasi yang paling banyak
df['Embarked'] = df['Embarked'].fillna('S')
Kita bisa mengetahui Embarkasi paling banyak digunakan dengan melihat fungsi value_counts()

Setelah tidak ada lagi missing values selanjutnya kita akan transform categorical data di kolom Sex dan Embarked menjadi bentuk numerik dengan one-hot encoding
df = pd.get_dummies(df, columns=["Sex"])
df = pd.get_dummies(df, columns=["Embarked"])
Hasil akhir dari preprocessing adalah sebagai berikut

Setiap kolom dari dataset telah menjadi bentuk numerik selanjutnya kita akan lakukan training data dengan menggunakan library sklearn
Training data
Algoritma klasifikasi yang kita gunakan adalah Logistic Regression. Salah satu algoritma machine learning yang sederhana
Pertama kita tentukan nilai X dan Y dari dataset dan split datanya menjadi training dan testing data dengan train_test_split
from sklearn.model_selection import train_test_split
# split features
X = df.drop('Survived', axis=1)
y = df['Survived']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Kemudian kita panggil Logistic Regression dan buat instance nya
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
dan kita train data dengan fungsi fit()
lr.fit(X_train, y_train)
kemudian kita prediksi data testing dengan model hasil training dan lihat akurasinya menggunakan classification_report
predictions = lr.predict(X_test)
from sklearn.metrics import classification_report
print(classification_report(y_test, predictions))

Horeee kita mendapatkan model klasifikasi dengan akurasi 81%.. lumayanlah
Kita juga dapat melihat lebih detail hasil training dengan confusion matrix
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, predictions)

Cara membacanya adalah
True Positive: 155 (Prediksi positif dan nilai aslinya memang positif)
True Negative: 85 (Prediksi negatif dan nilai aslinyamemang negatif)
False Positive: 34 (Prediksi positif tetapi nilai aslinyanegatif)
False Negative: 21 (Prediksi negatif tetapi nilai aslinya positif)
Kode lengkap untuk preprocessing, modeling dan evaluasi model adalah sebagai berikut
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix # read dataset df = pd.read_csv('titanic.csv') # drop columns df.drop(['PassengerId','Name','Ticket','Cabin'], inplace=True, axis=1) # check missing values df.isnull().sum() # find the most populer embarked df.Embarked.value_counts() # impute missing values on Age and Embarked df['Age'] = df['Age'].fillna(df['Age'].mean()) df['Embarked'] = df['Embarked'].fillna('S') # convert categorical data into numeric df = pd.get_dummies(df, columns=["Sex"]) df = pd.get_dummies(df, columns=["Embarked"]) # split features X = df.drop('Survived', axis=1) y = df['Survived'] # split dataset into training and testing X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) #training data lr = LogisticRegression() lr.fit(X_train, y_train) # predict predictions = lr.predict(X_test) print(classification_report(y_test, predictions)) print(confusion_matrix(y_test, predictions))
Akurasi model dapat lebih ditingkatkan dengan memperbaiki kualitas feature engineering pada tahap preprocessing, atau melakukan tuning parameter pada algoritma klasifikasi yang digunakan
Cukup sekian dan semoga bermanfaat 😀