Buka Anaconda Prompt dengan “run as administrator”

Akan muncul tampilan seperti berikut ini

ketikan
conda install python-graphviz
Tunggu hingga selesai.
Buka Anaconda Prompt dengan “run as administrator”

Akan muncul tampilan seperti berikut ini

ketikan
conda install python-graphviz
Tunggu hingga selesai.
Proses Scalling biasanya dilakukan ketika dalam dataset yang masih mentah, beberapa variabel memiliki nilai yang sangat bervariasi dan random, jadi sangat penting untuk di scale feature feature tersebut, feature-feature tersebut nilainya sangat besar atau kecil hanya karena the nature of measurements sehingga ketika dilakukan perhitugan pada tetangga dengan jarak terdekat terdapat feature yang lebih dominan untuk mempengaruhi hasil keluaran, tentunya hal ini tidak bagus. berikut adalah contoh scalling untuk machine learning penentu kualitas wine.
pertama dilakukan import library
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
Kemudian Loading Data
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep= ';')
Visualisasi data sehingga terlihat tingkat kebutuhan prepossesing data berupa scallingnya
pd.DataFrame.hist(df,figsize = [15,15]);

Pemisahan label dari data sehingga hanya tersisa feature saja, dan menyimpannya dalam satu variabel
x = df.drop('quality',1)
Pengubahan format feature pada variabel penyimpannya menjadi array
x=x.values
Dilakukan proses Scalling
from sklearn.preprocessing import scale
Xs = scale(x)
inisialisasi nilai label
y1 = df['quality'].values
Dilakukan Split data untuk Training dan Testing
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 = 42)
x_train
Dilakukan proses Training
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier(n_neighbors = 3)
"sementara nilai k adalah 3, dibawah ini adalah proses fitting"
knn_model_1 = knn.fit(x_train,y_train)
Berikut untuk melihat hasil test dari model yang telah dibuat
knn_result_1 = knn_model_1.score(x_test,y_test)
print('k-NN accuracy for test set : %f' % knn_result_1)
from sklearn.metrics import classification_report
y_true, y_pred = y_test, knn_model_1.predict(x_test)
print(classification_report(y_true,y_pred))
from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)
Binary Classifier merupakan machine learning yang tergolong kepada supervised learning, yang mana label yang dimilikinya hanya ada dua macam.
Berikut adalah contoh pengubahan dari multiclass Classifier menjadi Binary Classifier untuk machine learning penentu kualitas wine.
pertama dilakukan import library
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
Kemudian Loading Data
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep= ';')
Pemisahan label dari data sehingga hanya tersisa feature saja, dan menyimpannya dalam satu variabel
x = df.drop('quality',1)
Pengubahan format feature pada variabel penyimpannya menjadi array
x=x.values
inisialisasi nilai label
y1 = df['quality'].values
Penentuan nilai binary dari label
y= (y1<= 5)*1
disini nilai y akan bernilai 1 ketika y1 kecil atau sama dengan lima dan bernilai 0 ketika y1 bernilai besar dari lima
untuk lebih jelas sebaiknya dilakukan ploting pada nilai label tersebut dengan
plt.figure(figsize=(20,5));
plt.subplot(1,2,1);
plt.hist(y1);
plt.xlabel ('original targer value')
plt.ylabel('count')
plt.subplot(1,2,2);
plt.hist(y);
plt.xlabel ('new targer value')
plt.show()

Dilakukan Split data untuk Training dan Testing
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 = 42)
x_train
Dilakukan proses Training
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier(n_neighbors = 3)
"sementara nilai k adalah 3, dibawah ini adalah proses fitting"
knn_model_1 = knn.fit(x_train,y_train)
Berikut untuk melihat hasil test dari model yang telah dibuat
knn_result_1 = knn_model_1.score(x_test,y_test)
print('k-NN accuracy for test set : %f' % knn_result_1)
from sklearn.metrics import classification_report
y_true, y_pred = y_test, knn_model_1.predict(x_test)
print(classification_report(y_true,y_pred))
from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)
Confusion matrix adalah matrix yang menggambarkan bagaimana hasil dari testing suatu model terhadap data testing yang digunakan pada saat membuat model machine learnig. confusion matrix digunakan pada Machine Learning yang Supevised Learning. Confusion matrix menggambarkan hasil tes yang sesuai dengan label dan hasil tes yang tidak sesuai dengan label. berikut adalah gambaran dari confusion matrix

Untuk lebih jelasnya akan dijelaskan menggunakan contoh
array([[ 0, 0, 1, 0, 0, 0],
[ 0, 1, 2, 7, 0, 0],
[ 1, 4, 81, 40, 3, 1],
[ 0, 11, 57, 51, 13, 0],
[ 0, 0, 10, 18, 12, 2],
[ 0, 0, 1, 2, 2, 0]], dtype=int64)
anggap kolom pertama dan baris pertama merupakan kelas 1 seterusnya begitu hingga kolom ke enam dan baris ke enam adalah kelas 6, artinya terdapat enam kelas.
Akurasi adalah ketepatan dalam melakukan prediksi dapat dihitung dengan menggunakan persamaan

Precision menggambarkan tingkat keakuratan antara data yang diminta dengan hasil prediksi yang diberikan oleh model

Recall atau Sensitivity menggambarkan keberhasilan model dalam menemukan kembali sebuah informasi

Supervised Learning
Dalam supervised learning memiliki variabel input (x) dan variabel output (Y) dan kita menggunakan algoritma untuk mempelajari pemetaan dari input ke output. Dengan kata lain, algoritma pembelajaran yang diawasi mengambil kumpulan kumpulan data masukan yang diketahui dan tanggapannya yang diketahui terhadap data (keluaran) untuk mempelajari model regresi / klasifikasi. Algoritma pembelajaran kemudian melatih model untuk menghasilkan prediksi untuk respons terhadap data baru atau set data pengujian. dengan kata lain machine learning akan diberitahu terlebih terlebih dahulu berbagaimacam kombinasi nilai masukan dan keluaran kemudian membuat suatu model yang dapat digunakan untuk memprediksi suatu keluaran dari suatu kombinasi masukan yang diberikan.
Unsupervised Learning
Unsupervised Learning digunakan saat kita tidak memiliki data berlabel. Fokus utamanya adalah mempelajari lebih lanjut tentang data dengan menyimpulkan pola dalam kumpulan data tanpa mengacu pada keluaran yang diketahui. Disebut unsupervised karena algoritmanya dibiarkan sendiri untuk mengelompokkan informasi yang tidak disortir dengan menemukan persamaan, perbedaan, dan pola dalam data. Pembelajaran tanpa pengawasan sebagian besar dilakukan sebagai bagian dari analisis data eksplorasi. Hal ini paling sering digunakan untuk menemukan kelompok data dan untuk reduksi dimensi.
Reinforcement Learning
Secara sederhana, reinforcement learning dapat diartikan sebagai pembelajaran dengan terus menerus berinteraksi dengan lingkungan. Ini adalah jenis algoritma pembelajaran mesin di mana agen belajar dari lingkungan interaktif dengan cara coba-coba dengan terus menggunakan umpan balik dari tindakan dan pengalaman sebelumnya. Pembelajaran penguatan menggunakan rewards dan punishment, agen menerima penghargaan untuk melakukan tindakan yang benar dan penalti untuk melakukannya dengan tidak benar.

Machine Learning adalah proses pembelajaran yang dilakukan oleh mesin dengen pemberian data untuk dianalisis agar data tersebut diketahui polanya dan dapat digunakan untuk memprediksi ataupun untuk mengetahui sesuatu.
Machine Learning memiliki berbagai macam aplikasi, seperti memprediksi keadaan di masa depan, mengoptimalisasi proses pemberian keputusan dan bahkan mendeteksi penyakit ataupun melakukan analisis terhadap suatu gejala sehingga diketahui penyakitnya.
Macam-macam Machine Learning terbagi menjadi Supervised Learning, Unsupervised Learning dan Reinforcement Learning serta Deep Learning.
Istilah machine learning pertama kali dikemukakan oleh beberapa ilmuwan matematika Adrien Marie Legendre, Andrey Markov dan Thomas Bayes pada tahun 1920-an dengan mengemukakan dasar-dasar machine learning dan konsepnya. Sejak saat itu ML banyak yang mengembangkan.
Peran machine learning banyak membantu manusia dalam berbagai bidang. Bahkan saat ini penerapan ML dapat dengan mudah kamu temukan dalam kehidupan sehari-hari. Misalnya saat kamu menggunakan fitur face unlock untuk membuka perangkat smartphone kamu, atau saat kamu menjelajah di internet atau media sosial kamu akan sering disuguhkan dengan beberapa iklan. Iklan-iklan yang dimunculkan juga merupakan hasil pengolahan ML yang akan memberikan iklan sesuai dengan pribadi kamu.
Biasanya data yang didapatkan dari flat files atau database berupa data mentah. Algoritma machine learning classification bekerja dengan data yang akan diformat dengan cara tertentu sebelum mereka memulai proses training. Untuk menyiapkan data untuk konsumsi oleh algoritma machine learning, kita harus memrosesnya terlebih dahulu dan mengonversinya menjadi format yang tepat.
dalam penerapannya kita bisa menggunakan scikit-learn untuk preprocessing data, dalam library scikit-learn ada banyak fungsi-fungsi yang tersedia.
proses binarization adalah ketika kita ingin mengubah variabel numerik kedalam nilai boolean (0 dan 1)
input = np.array([[8,2,3],
[4,7,1],
[9,2,6]])
data_biner = preprocessing.Binarizer(threshold = 5).transform(input)
output:
[[1 0 0]
[0 1 0]
[1 0 1]]
Mean removal adalah cara umum dalam teknik preprocessing yang digunakan dalam machine learning, menghilangkan rata-rata biasanya sangat berguna dari variabel, jadi variabel berada ditengah tengah pada angka 0. kita melakukannya untuk menghilangkan bias dari variabel
# Sebelum mean removal
print("Mean = ", input.mean(), "\n", "Std deviation = ", input.std(axis = 0))
output:
Mean = 4.66666666667
Std deviation = [ 2.1602469 2.3570226 2.05480467]
# Sesudah mean removal
data_scaled = preprocessing.scale(input)
print("Mean = ", data_scaled)
print("Std deviation = ", data_scaled.std(axis = 0))
output:
Mean = [[ 0.46291005 -0.70710678 -0.16222142]
[-1.38873015 1.41421356 -1.13554995]
[ 0.9258201 -0.70710678 1.29777137]]
Std deviation = [ 1. 1. 1.]
biasanya dalam dataset yang masih mentah, beberapa variabel memiliki nilai yang sangat bervariasi dan random, jadi sangat penting untuk di scale feature feature tersebut, in my prespective feature-feature tersebut nilainya sangat besar atau kecil hanya karena the nature of measurements
data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0, 1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input)
data_scaled_minmax
output:
array([[ 0.8, 0. , 0.4],
[ 0. , 1. , 0. ],
[ 1. , 0. , 1. ]])
Biasanya dalam preprocessing, proses normalisasi untuk memodifikasi nilai dalam varabel sehingga kita dapat mengukurnya dalam skala umum. Dalam machine learning, kita menggunakan berbagai bentuk normalisasi. Beberapa bentuk normalisasi yang paling umum bertujuan untuk mengubah nilai-nilai sehingga jumlahnya menjadi 1. Normalisasi L1 (di library scikit-learn), yang mengacu pada Penyimpangan Absolut Terkecil, bekerja dengan memastikan bahwa jumlah nilai absolut adalah 1 dalam setiap baris. Normalisasi L2, yang mengacu pada kuadrat terkecil, bekerja dengan memastikan bahwa jumlah kuadrat adalah 1. Secara umum, teknik normalisasi L1 dianggap lebih kuat daripada teknik normalisasi L2. Teknik normalisasi L1 kuat karena tahan terhadap outlier dalam data. Seringkali, data cenderung mengandung outlier dan kita tidak bisa berbuat apa-apa. Kami ingin menggunakan teknik yang dapat dengan aman dan efektif mengabaikannya selama perhitungan. Jika kita memecahkan masalah di mana outlier itu penting, maka mungkin normalisasi L2 menjadi pilihan yang lebih baik
data_normalized_l1 = preprocessing.normalize(input, norm='l1')
data_normalized_l2 = preprocessing.normalize(input, norm='l2')
print("\nL1 normalized data:\n", data_normalized_l1)
print("\nL2 normalized data:\n", data_normalized_l2)
L1 normalized data:
[[ 0.61538462 0.15384615 0.23076923]
[ 0.33333333 0.58333333 0.08333333]
[ 0.52941176 0.11764706 0.35294118]]
L2 normalized data:
[[ 0.91168461 0.22792115 0.34188173]
[ 0.49236596 0.86164044 0.12309149]
[ 0.81818182 0.18181818 0.54545455]]
Ketika kita melakukan klasifikasi, biasanya kita berurusan dengan banyak label. Label-label ini bisa dalam bentuk kata-kata, angka, atau sesuatu yang lain. Fungsi pembelajaran mesin dalam sklearn mengharapkan mereka menjadi angka. Jadi jika mereka sudah menjadi nomor, maka kita dapat menggunakannya secara langsung untuk memulai pelatihan. Tetapi ini tidak biasanya terjadi.
Di dunia nyata, label dibuat dalam bentuk kata-kata, karena kata-kata dapat dibaca manusia. kita melabeli data training dengan kata-kata sehingga pemetaan dapat dilacak. Untuk mengonversi label kata menjadi angka, kita perlu menggunakan pembuat label encoding. label encoding mengacu pada proses transformasi label kata menjadi bentuk numerik. dalam hal regresi jika memuat varibel kategori dan nilainya tidak bisa di faktorisasi dalam bentuk tingkatan, dilakukan proses dummy, setiap nilai didalam variabel itu menjadi variabel lain.
label_kategori = ['senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu', 'minggu']
encoder = preprocessing.LabelEncoder()
encoder.fit(label_kategori)
print("\nLabel mapping:")
for i, item in enumerate(encoder.classes_):
print(item, '>', i)
output:
Label mapping:
jumat > 0
kamis > 1
minggu > 2
rabu > 3
sabtu > 4
selasa > 5
senin > 6
# Encode list menggunakan encoder sebelumnya
test_labels = ['senin', 'kamis', 'jumat']
encoded_values = encoder.transform(test_labels)
print("Labels =", test_labels)
print("Encoded values =", list(encoded_values))
Labels = ['senin', 'kamis', 'jumat']
Encoded values = [6, 1, 0]
Proses dari klassifikasi menggunakan K-NN yaitu
Testing model dapat dilakukan dengan nilai k yang berbeda-beda,besar atau kecilnya nilai K akan berpengaruh terhadap akurasi yang dihasilkan oleh mesin tersebut [baca disini].
Dalam menjalankannya digunakan aplikasi anaconda jupoternotebook
Impor Library Merupakan Proses yang pertama dilakukan.
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
from sklearn.model_selection import train_test_split
from sklearn import neighbors
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
Setelah itu melakukan import data
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep= ';')
#pemanggilan data dari internet dengan format file .csv yang menggunakan tanda pemisah/separator ';'
Data dapat diperoleh dari data local ataupun dari internet seperti yang dilakukan sekarang ini. Data yang kita gunakan dapat ditampilkan dengan Perintah Menampilkan Data
df #menampilkan data secara keseluruhan
df.head() #menampilkan lima data teratas dari tabel
| fixed acidity | volatile acidity | citric acid | residual sugar | chlorides | free sulfur dioxide | total sulfur dioxide | density | pH | sulphates | alcohol | quality | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11.0 | 34.0 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
| 1 | 7.8 | 0.88 | 0.00 | 2.6 | 0.098 | 25.0 | 67.0 | 0.9968 | 3.20 | 0.68 | 9.8 | 5 |
| 2 | 7.8 | 0.76 | 0.04 | 2.3 | 0.092 | 15.0 | 54.0 | 0.9970 | 3.26 | 0.65 | 9.8 | 5 |
| 3 | 11.2 | 0.28 | 0.56 | 1.9 | 0.075 | 17.0 | 60.0 | 0.9980 | 3.16 | 0.58 | 9.8 | 6 |
| 4 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11.0 | 34.0 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
untuk melihat info dari data yang dimiliki dapat digunakan
df.info()
Pada data kali ini kolom terakhir merupakan label yang digunakan yaitu kolom dengan nama feature quality. label dan feature harus dibuat dalam variabel berbeda untuk melakukan proses klasifikasi, oleh karena itu diguakan perintah berikut
x = df.drop('quality',1) #variabel yang menyimpan data tanpa ada label.
y1 = df['quality'].values #variabel yang menyimpan data label
dalam melakukan klasifikasi data yang digunakan dalam bentuk array. untuk itu digunakan syntax seperti berikut ini
x = x.values
Selanjutnya dilakukan Split data untuk memisahkan data yang akan digunakan untuk training dan data yang akan digunakan untuk testing,
x_train, x_test, y_train, y_test = train_test_split(x,y1,test_size = 0.2,random_state = 42)
x_train
Selanjutnya dilakukan proses Learning dengan menggunakan syntax
knn = neighbors.KNeighborsClassifier(n_neighbors = 3)
knn_model_1 = knn.fit(x_train,y_train)
Untuk dapat melihat akurasi dari hasil latih maka digunakan data test yang merupakan hasil Slit sebelumnya
knn_result_1 = knn_model_1.score(x_test,y_test)
print('k-NN accuracy for test set : %f' % knn_result_1)
Untuk Mengetahui info akurasi lebih detail dapat dilihat dengan
y_true, y_pred = y_test, knn_model_1.predict(x_test)
print(classification_report(y_true,y_pred))
Dan berikut ini merupakan Confusion Matrics
confusion_matrix(y_true, y_pred)
yang mana dengan cara di atas akan di dapatkan confusion matrix seperti berikut ini
array([[ 0, 0, 1, 0, 0, 0],
[ 0, 1, 2, 7, 0, 0],
[ 1, 4, 81, 40, 3, 1],
[ 0, 11, 57, 51, 13, 0],
[ 0, 0, 10, 18, 12, 2],
[ 0, 0, 1, 2, 2, 0]], dtype=int64)
Dari confution matrix dapat juga diketahui akurasi presisi dan sensitivitasnya, Cara Membaca Confusion Matrix, perhitungan Akurasi, presisi dan sensitifitas.
K-NN merupakan metode klasifikasi pada sistem machine learning. dari artinya sendiri K-NN dapat diartikan sebagai Jumlah Tetangga Terdekat sejumlah K.

Perhatikan Pada Gambar terdapat titik yang tersebar, untuk memudahkannya dipetakan dalam diagram kartesius.
Semisal titik merah merupakan nilai yang ingin di ketahui kelasnya. maka akan dicari tetangga terdekat dari titik merah sejumlah K titik yang telah ditentukan, pada gambar diberikan contoh 3 ataupun 6, biasanya nilai K ganjil sehingga keputusan tidak ambigu, kemudian melalui penghitungan kelas dengan titik terbanyaklah yang merupakan kelas dari titik yang belum diketahui kelasnya tersebut. seperti pada contoh jika k bernilai 3 maka titik merah akan masuk ke kelas B, namun apabila K-nya bernilai 6 maka titik merah masuk kelas A.
Ada tiga hal yang dibutuhkan dalam K-NN yaitu
Distance Matrix
misal ada data
Data 1 : (x1, y1) dan Data2 : (x2, y2)
L1-Norm (Manhattan Distance) :
|x1-x2| +|y1-y2|
L2-Norm (Euclidean Distance) :

rumus L2-Norm merupaka rumus untuk pitagoras.
Minkowski distance :sama seperti L2-Norm hanya saja akar pangkat dan pengurangan pangkatnya tidak bernilai 2 namun masih sama

Hal yang berbeda ketika feature ataupun label yang dimiliki nilaiya tidak berupa angka. setiap nilai tadi akan diiniasialisasikan dengan angka terlebih dahulu.
Penentuan Nilai K
K semakin besar makan kestabilannya akan semakin tinggi, sedangkan ketika nilai Knya semakin kecil kestabilannya akan semakin rendah. karena jumlah tetangga terdekat yang dihitung terlalu sedikit sehingga belum dapat menggambarkan cluster dari data yang inign dinilai. kestabilan disini adalah kestabilan mesin dalam menentukan kelas dari suatu nilai.
namun jika nilai K terlalu besar maka hasil errornya akan menjadi lebih tinggi, karena mesin menghitung terlalu banyak tetangga terdekatnya. semisal pada gambar diatas diambil tetangga terdekat sejumlah 10 atau nilai K bernilai 10 tentu semua nilai akan masuk dalam penentuan kelas dari titik yang baru. hal inilah yang menajadikan tingkat error tinggi.
K-Nearest Neighbor Algorithm.
Classification adalah salah satu machine learning task, berdasarkan cara trainingnya tergolong supervised learning.
pada Classification data yang dimiliki mempunyai bagian predictor variable(feature) yang merupakan parameter-parameter yang akan digunakan untuk penentuan label, dan Taget Variable (label) merupakan keluaran dari parameter-parameter yang ada. nilai inilah yang nantinya menjadi keluaran dari prediksi.
| Harga | Display Card | RAM | Storage | Battery Capacity | Processor | Recommen Rate |
| 10000000 | GEFORCE930M | 16GB | 1TB | 500mAh | Core i7 | 8 |
| 7000000 | Intel Graphics | 2GB | 1TB | 450mAh | Core i4 | 6 |
| 5000000 | GEFORCE930M | 4GB | 500TB | 400mAh | Core i5 | 7 |
tabel diatas dapat dijadikan contoh untuk data yang bisa digunakan untuk melakukan proses learning untuk mesin, yang mana Harga,Display Card, RAM, Storage, Battery Capacity, dan Processor merupakan Features sedangkan Recomendation Ratting merupakan Label
Contoh Data Set untuk penilaian untuk suatu mobil accaptable untuk dibeli atau tidak
Klasifikasi tentunya akan memberikan nilai hasil keluaran berupa klasifikasi. suatu klasifikasi dapat dibedakan menjadi dua berdasarkan jumlah kelas yang dimilikinya yaitu
binary classifier (hasilnya hanya ada 2 label)
multi classifier (hasilnya lebih dari 2 label)