Machine Learning Dengan Menggunakan Bahasa Python

Unduh sebagai pdf atau txt
Unduh sebagai pdf atau txt
Anda di halaman 1dari 11

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

Langkah-langkah menerapkan Machine Learning dengan Python


1. Instalasi Platform Python dan Scipy
Untuk mendapatkan software aplikasi Python dan Scipy, dapat mengunjungi situs scipy.org.
Disana akan diberikan petunjuk yang lengkap untuk menginstall python dan library yang
dibutuhkan, baik dalam platform Linux, Mac OS X maupun Windows. Ada 5 library utama yang
perlu diinstall untuk tutorial ini: Scipy, Numpy, Matplotlib, Panda, dan Sklearn.
Memulai Python
Untuk memastikan lingkungan Python sudah berhasil diinstall, berikut langkah-langkah yang bisa
dilakukan:
 Buka baris perintah dan memulai python, di console command prompt
1
Python

 Ketik atau copy dan paste script berikut:

Data yang Digunakan


Untuk latihan proyek Machine Learning ini menggunakan dataset klasifikasi Bunga Iris. Dataset ini
dikenal dengan dataset “hello world” dalam Machine Learning dan Statistik, yang dipakai oleh
hampir semua orang.
Dataset ini berisi 150 pengamatan bunga Iris. Ada empat kolom pengukuran bunga dalam
centimeter. Kolom kelima adalah spesies bunga yang diamati.
Impor Library
Sebelum memuat dataset terlebih dahulu impor semua modul, fungsi dan obyek yang akan
digunakan dalam tutorial ini.

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

14 from sklearn.tree import DecisionTreeClassifier

15 from sklearn.neighbors import KNeighborsClassifier

16 from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

17 from sklearn.naive_bayes import GaussianNB

18 from sklearn.svm import SVC

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

Selanjutnya akan terlihat output : (150,50)


Yang berarti 150 baris dan 5 atribut data
 Melihat Isi Data
Berikut perintah untuk melihat 20 baris data pertama:

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

 Distribusi Class Data


Sekarang mari kita lihat jumlah baris untk setiap class.

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

Proyek Machine Learning.

 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

 Membuat validasi dataset


Validasi ini dilakukan untuk mengetahui bahwa model yang dibuat itu bagus. Kita akan
menggunakan metode statistik untuk memperkirakan keakuratan model yang dibuat pada data
yang tidak terlihat. Juga diinginkan perkiraan yang lebih konkret mengenai keakuratan model
teraik pada data yang tidak terlihat dengan mengevaluasi data aktual yang tidak terlihat.

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:

 Logistic Regression (LR)


 Linear Discriminant Analysis (LDA)
 K-Nearest Neighbors (KNN).
 Classification and Regression Trees (CART).
 Gaussian Naive Bayes (NB).
Support Vector Machines (SVM).

 Memilih Model Terbaik

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:

LR: 0.966667 (0.040825)


LDA: 0.975000 (0.038188)
KNN: 0.983333 (0.033333)
CART: 0.975000 (0.038188)
NB: 0.975000 (0.053359)
SVM: 0.991667 (0.025000)

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.

2 # Make predictions on validation dataset

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 :

Confusion matrix memberikan indikasi dari tiga kesalahan yang dibuat.


Akhirnya, laporan klasifikasi (classification report) memberikan rincian setiap kelas (class-species)
dengan precision, recall, f1-score dan support yang menunjukkan hasil yang sangat baik.

Anda mungkin juga menyukai