Machine Learning Dengan Menggunakan Bahasa Python
Machine Learning Dengan Menggunakan Bahasa Python
Machine Learning Dengan Menggunakan Bahasa Python
Python adalah bahasa interpeter yang populer dan powerful. Tidak seperti R, Python adalah
bahasa yang memiliki fitur yang lengkap dan memiliki platform yang dapat digunakan baik untuk
riset maupun untuk membangun production system. Ada banyak modul dan library yang dapat
digunakan untuk menerapkan Machine Learning di dalam Python.
Untuk memulai proyek Machine Learning, harus mengetahui langkah-langkah sebagai berikut:
1. Mendefinisikan masalah
2. Menyiapkan Data
3. Mengevaluasi Algoritma
4. Memperbarui Hasil
5. Menyajikan Hasil
5
# Load libraries
6
import pandas
7
from pandas.tools.plotting import scatter_matrix
8
import matplotlib.pyplot as plt
9
from sklearn import model_selection
10
from sklearn.metrics import classification_report
11
from sklearn.metrics import confusion_matrix
12
from sklearn.metrics import accuracy_score
13 from sklearn.linear_model import LogisticRegression
19
20
21
22
23
24
25
26
27
2. Memuat Dataset
Untuk memuat dataset, dapat langsung diambil dari alamat repository UCI Machine Learning.
Berikut script untuk memuat dataset:
3 # Load dataset
url = "http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
4
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
5
dataset = pandas.read_csv(url, names=names)
6
Jika tidak ada koneksi internet, file iris.data dapat download terlebih dahulu, diletakkan di file
local. Untuk memuat data-nya dapat dilakukan dengan metode yang sama, dengan mengubah URL
ke file local.
3. Melakukan Summary Dataset
Pada langkah ini, kita akan melihat data dari beberapa sisi yang berbeda:
Dimensi Dataset
Hal ini dilakukan untuk mendapatkan gambaran singkat tentang berapa banyak baris dan atribut
data.
1
# shape
2
print(dataset.shape)
3
1
# head
2
print(dataset.head(20))
3
Ringkasan Statistik
Berikut untuk melihat statistik data termasuk count, mean, nilai min dan max serta beberapa
persentase
1
# descriptions
2
print(dataset.describe())
3
1
# class distribution
print(dataset.groupby(‘class’).size())
Akan terlihat bahwa setiap class memiliki jumlah kasus yang sama (50 atau 33% dari kumpulan
data)
1
3 Class
Iris-setosa 50
4
Iris-versicolor 50
5
Iris-virginica 50
6
Visualisasi Data
Dalam melakukan visualisasi data, ada dua jenis plot:
1. Plot Univariate
Kita mulai dengan beberapa plot univariat, yaitu plot dari masing-masing variabel individu.
Mengingat bahwa variabel inputnya numerik, kita bisa membuat jenis plot box.
2
# box and whisker plots
3
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
4
plt.show()
5
Selanjutnya juga bisa membuat histogram masing-masing variabel input untuk mendapatkan ide
tentang distribusi.
2
# histograms
3
dataset.hist()
4 plt.show()
5
2. Plot Multivariate
Selanjutnya kita bisa melihat interaksi antar variabel. Pertama, kita lihat scatterplots dari semua
pasang atribut. Hal ini dapat membantu melihat hubungan terstruktur antara variabel input
2
# scatter plot matrix
3
scatter_matrix(dataset)
4
plt.show()
5
Dari hasil output dapat dilihat pengelompokan diagonal beberapa pasang atribut. Hal ini
menunjukkan korelasi yang tinggi dan hubungan yang dapat diprediksi.
1. Evaluasi Beberapa Algoritma
Langkah berikutnya adalah membuat beberapa model data dan memperkirakan akurasi mereka
pada data yang tidak terlihat.
Beberapa hal yang dapat dilakukan di langkah ini adalah:
1. Pisahkan dataset validasi
2. Set up test harness untuk menggunakan validasi silang 10 kali lipat
3. Bangun 5 model yang berbeda untuk memprediksi spesies dari pengukuran bunga
4. Pilih model yang terbaik
Artinya, kita akan menahan beberapa data yang tidak dapat dilihat oleh algoritma dan akan
menggunakan data ini untuk mendapatkan informasi tentang seberapa akurat model terbaik
sebenarnya.
Kita akan membagi datateset yang telah dimuat menjadi dua, 80% diantaranya akan digunakan
untuk melatih model dan 20% digunakan untuk data validasi.
1 # Split-out validation dataset
2 array = dataset.values
3 X = array[:,0:4]
4 Y = array[:,4]
5 validation_size = 0.20
seed = 7
6
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)
7
10
11
12
13
Setelah perintah di atas dieksekusi, kita sudah memiliki dua data yaitu X_train dan Y_train untuk
mempersiapkan model dan rangkaian X_validation dan Y_validation yang dapat digunakan
selanjutnya.
Test Harness
Kita akan menggunakan validasi silang 10 kali lipat untuk memperkirakan akurasi. Untuk itu
dataset dibagi menjadi 10 bagian, 9 untuk latihan dan 1 untuk pengujian dan ulangi untuk semua
kombinasi.
2
# Test options and evaluation metric
3
seed = 7
4 scoring = 'accuracy'
5
Perintah di atas menggunakan metrik “accuracy” untuk mengevaluasi model. Ini adalah rasio dari
jumlah kejadia yang diprediksi dengan benar dibagi dengan jumlah total kasus dalam dataset
dikalikan dengan 100 untuk memberikan persentase (misalnya 95% akurat). Kita akan
menggunakan variabel penilaian saat menjalankan build dan mengevaluasi setiap model di langkah
selanjutnya
Membangun Model
Kita tidak tahu algoritma mana yang bagus dalam masalah ini atau konfigurasi apa yang akan
digunakan. Untuk itu kita evaluasi 6 algoritma yang berbeda:
Kita sudah memiliki 6 model dan estimasi akurasi untuk masing-masing. Selanjutnya perlu
membandingkan model satu dengan lainnya dan pilih yang paling akurat.
Dari eksekusi script di atas, kita mendapatkan hasil mentah sebagai berikut:
Dari hasil output di atas, kita dapat melihat bahwa SVM memiliki nilai akurasi perkiraan terbesar.
Kita juga dapat membuat plot hasil evaluasi model dan membandingkan penyebaran dan akurasi
rata-rata masing-masing model.
2
# Compare Algorithms
3
fig = plt.figure()
4
fig.suptitle('Algorithm Comparison')
5
ax = fig.add_subplot(111)
6 plt.boxplot(results)
7 ax.set_xticklabels(names)
8 plt.show()
9
10
11
12
13
Membuat Prediksi
Setelah mengetahui model yang paling akurat yaitu SVM, selanjutnya kita dapat mencoba
melakukan pengujian tentang keakuratan model SVM terhadap data yang ada.
3 svm = SVC()
4 svm.fit(X_train, Y_train)
predictions = svm.predict(X_validation)
5
print(accuracy_score(Y_validation, predictions))
6
print(confusion_matrix(Y_validation, predictions))
7
print(classification_report(Y_validation, predictions))
8
9
10
11
12
13
Menghasilkan output :