Anda di halaman 1dari 28

Universal IoT berbasis Data Science

1. BAB III KONSEP DAN IMPLEMENTASI DATA SCIENCE

3.1. Apa itu Data Science


Data science adalah bidang ilmu yang mempelajari proses pengolahan data, mulai dari penggalian
hingga presentasi data. Tujuan utama adalah mengubah data mentah menjadi informasi yang
bermanfaat, mendeskripsikan dan menghasilkan prediksi yang tepat. Hasil prediksi dapat digunakan
untuk membantu proses pengambilan keputusan. Data science mengkombinasikan kemampuan
programming, matematika, statistika, dan pengetahuan umum untuk mendapatkan suatu insight
dari data struktur maupun tidak. Data science membutuhkan bidang ilmu lain: ilmu komputer,
domain knowledge, artifical inteligence (meliputi deep learning, machine learning, dan natural
language processing (NLP)). Data scientist adalah orang yang bertugas untuk mengumpulkan dan
mengolah data. Sedangkan data analyst adalah orang yang melakukan analisa data dan menafsirkan
datanya.

3.2. Manfaat data Science


Berdasarkan riset Statistik diprediksi akan ada sekitar 74 zettabyte data baru yang muncul di tahun
2021 dimana satu zettabyte setara dengan satu triliun gigabyte. Dampak positif peningkatan jumlah
data terhadap para pelaku bisnis adalah dapat memanfaatkannya untuk membuat keputusan-
keputusan bisnis yang lebih logis dan kredibel. Selain itu banyak hal yang bisa dinikmati dengan
memanfaatkan data antara lain adalah:
1. Dengan menganalisis data histori penjualan bisnis bisa memprediksi produk yang laku pada
musim-musim tertentu (prediksi)
2. Bisnis manufaktur bisa melihat data produk gagal untuk meningkatkan kualitas produknya.
3. Bisnis logistik dapat mengecek data traffic, rute, membuat proses pengiriman menjadi efisien.
4. Untuk meningkatkan tingkat kepuasan karyawan, divisi HRD dapat mengevaluasi data yang
berasal dari feedback karyawan.
5. Sebuah perusahaan sekuritas dapat melihat data tentang pola pasar finansial untuk membuat
keputusan investasi yang lebih efektif (pengambilan Keputusan)
6. Pengolahan data science dapat digunakan untuk mendeteksi celah keamanan website
berdasarkan data yang diperoleh dari plugin keamanan (deteksi)
7. Menentukan nilai akreditasi berdasarkan data terkait performa instansi (Pengambilan
keputusan)
8. membedakan produk berkualitas tinggi dan rendah sesui data dari tim quality control
(Klasifikasi)
9. memberikan saran atau rekomendasi produk dari toko online berdasarkan halaman produk
yang dikunjungi calon pembeli (Rekomendasi)

3.3. Alur Proses Data Science


Proses atau cara kerja sistem data science cukup komplek tergantung dan terkait dengan ragam,
jenis, kompleksitas data dan permasalahannya. Dari beberapa proses yang komplek tersebut alur
penerapan data science dapat disederhanakan menjadi lima tahapan yaitu:
a. Perencanaan: Data scientist merencanakan proyek yang akan dijalankan dan hasil yang
diharapkan
b. Penggalian data: merupakan proses pencarian atau pengumpulan data melalui metode
kualitatif dan atau kuantitatif.
c. Pengelolaan data: Setelah didapatkan data yang diinginkan, data scientist akan
menyimpan data secara teratur agar mudah untuk diakses.
d. Identifikasi data: Data yang didapat akan diidentifikasi. Biasanya dengan memasang
kategori atau label pada masing-masing datanya.
Abdul Munif@2022 P a g e 1 | 28
Universal IoT berbasis Data Science

e. Analisis data: setiap data akan diolah dan dianalisis agar pelaku bisnis atau pemangku
kepentingan bisa mendapat informasi yang diinginkan.
f. Visualisasi data: Informasi yang diperoleh akan ditafsirkan ke dalam format yang lebih
mudah dipahami. Contohnya seperti grafik laporan.

Gambar Tahapan model Knowladge Discovery Database

Selection adalah proses memilih data dari big data menggunakan query basis data dan menjadi
target data. Preprocessing adalah proses yang mengkonversi data mentah menjadi format yang
dapat dipahami. Data pada dunia nyata sering tidak memadai, tidak konsisten, tidak teratur, kurang
mengikuti pola/tren tertentu. Hal ini mengakibatkan kualitas pengumpulan dan model data yang
dihasilkan rendah. Preprocessing data dapat dilakukan melalui beberapa proses antara lain adalah:
a. Data Cleaning. Proses ini adalah suatu proses untuk mengatasi missing value, penanganan
noisy data, identifikasi atau menghapus outlier, penanganan data yang inkonsisten
b. Data Integration. Proses ini akan mengintegrasi beberapa sumber data dan format data.
c. Data Transformation. Proses normalisasi data, diskritisasi, penyeragaman nilai data,
agregasi atau bahkan split atribut
d. Data Reduction. Proses ini adalah proses yang akan mereduksi dimensi atau menyeleksi
atribut

Data hasil preprocessing akan diolah, dianalisis dan disajikan menjadi suatu informasi yang mudah
difahami (visualisasi). Data tersebut sebagai masukan proses pembuatan model data menggunakan
algoritma mesin learning. Dari Pola atau trend model data tersebut dapat dilakukan prediksi
terhadap data baru berdasarkan model data yang telah dibuat.
Data mining merupakan bagian dari Data Science, yaitu proses pengumpulan informasi untuk
melihat pola dari kumpulan data yang sangat besar dan data discovery. Data mining mengekstrak
pola dari data dengan menggunakan metode statistika agar dapat dianalisa. Hasil dari analisa ini
akan digunakan untuk mencari prediksi yang tepat agar dapat digunakan untuk mengambil
keputusan.

Gambar Tahapan masukan, pemodelan data dengan algoritma mesin learning dan evaluasi model

Abdul Munif@2022 P a g e 2 | 28
Universal IoT berbasis Data Science

3.4. Mechine Learning


Machine Learning merupakan bagian dari AI digunakan agar sistem komputer dapat melakukan
proses pembelajaran dengan sendirinya secara otomatis, tanpa diberi intruksi pemrograman terlebih
dahulu serta dapat meningkatkan keakuratan hasil prediksi. Secara umum penggunaannya bersifat
realtime.

3.4.1. Istilah-istilah dalam mechine learning


Sistem berbasis pembelajaran mesin (mechine learning) tidak diprogram secara eksplisit tetapi
dipelajari dari data. Algoritma pembelajaran mesin menyimpulkan pola dan hubungan antara
variabel yang berbeda dalam dataset kemudian menggunakan pengetahuan itu untuk
menggeneralisasi di luar pelatihan Dataset. Istilah yang digunakan dalam konteks pembelajaran
mesin adalah: 1) Data mining (Penambangan data), 2) Fitur, 3) Label, 4) Model, 5) Akurasi dan 6)
Presisi
a. Data set
Data set adalah koleksi atau kelompok data-data yang berkaitan, dikumpulkan dan disimpan
pada tempat yang sama, merupakan sekelompok record data yang sama dan saling terhubung
dalam memori komputer. Sekumpulan data dapat ditampilkan dalam suatu tabel (kolom dan
baris). Dimensi kolom terdiri dari atribute/feature dan class/label/target. Sedangkan dimensi
baris berupa kumpulan record/object /sample/tuple.
b. Feature/atribute
Feature mewakili variabel independen. Dalam dataset tabular, baris mewakili observasi dan
kolom mewakili fitur, secara kolektif disebut sebagai dimensi. Atribute terdiri dari numerical
dan categorical. Ciri ciri Fitur Kategoris: - dapat mengambil salah satu dari sejumlah nilai
diskrit dengan nama atau label, - Nilai fitur kategorikal tidak memiliki urutan (ordered), - Jenis
kelamin adalah contoh atribut kategoris yang hanya dapat mengambil satu dari dua nilai, -
data bersifat ordinal tidak memiliki susunan hirarkis misal suasana hati, peringkat kepuasan, -
data bersifat nominal tidak memiliki hirarkis (misal: tipe darah, warna mata, jenis anjing). Ciri
ciri Fitur Numerik: - Dapat mengambil nilai numerik apa pun, - fitur numerik memiliki urutan
matematis, - fitur numerik bersifat diskrit pilihan terbatas: misalnya jumlah orang, jumlah
kamar, - fitur numerik bersifat terus menerus(continuous) pilihan tidak terbatas misalnya: nilai
suhu

Gambar Hirarki data dalam data science/data mining

c. Class/label/target
Class/label adalah atribut yang akan dijadikan target. label adalah variabel yang dipelajari oleh
pembelajaran mesin untuk diprediksi yang terdiri: - label kategoris: mis, kategori artikel berita
adalah label kategoris dan, - label numerik: misalnya, harga adalah label numerik

Abdul Munif@2022 P a g e 3 | 28
Universal IoT berbasis Data Science

Gambar contoh dataset dalam data science

d. Model
Model adalah konstruksi matematis untuk menangkap pola dalam kumpulan data,
memperkirakan, merupakan hubungan antara variabel terikat dan variabel bebas. Model
memiliki kemampuan prediktif, dapat menghitung atau memprediksi nilai variabel dependen
ketika mendapatkan nilai variabel independen. Melatih model adalah tugas komputasi
intensif, sementara menggunakannya bukan tugas komputasi. Sebuah model umumnya
disimpan di disk, sehingga dapat digunakan tanpa melatih mesin lagi. Data Pelatihan (80% dari
data) adalah data yang digunakan oleh algoritme pembelajaran mesin untuk melatih model.
Data Uji (20% dari data) adalah data yang digunakan untuk mengevaluasi kinerja prediktif
suatu mode.

e. Akurasi dan presisi


Akurasi adalah seberapa dekat nilai yang diukur dengan nilai sebenarnya (benar). Presisi
adalah seberapa dekat nilai yang diukur satu sama lain

Gambar ragam jenis Akurasi dan presisi

3.4.2. Jenis Machine Learning


Teknik-teknik yang digunakan dalam mesin learning antara lain adalah: 1) Supervised Learning, 2)
Unsupervised Learning, 3) Semi-supervised Learning, 4) Reinforcement Learning

Abdul Munif@2022 P a g e 4 | 28
Universal IoT berbasis Data Science

Gambar bidang-bidang yang terkait untuk penerapan Artificial Intelegency

a. Surpervised
Supervised Learning merupakan sebuah pemodelan dimana algoritmanya dapat
membangkitkan suatu fungsi yang memetakan input ke output yang diinginkan. Pada
Supervised Learning pengguna mengolah data yang memiliki label. Tujuan pengolahan
adalah mengelompokkan data ke data yang sudah ada. Model ini memerlukan data training.
Data training digunakan dalam memprediksi maupun mengklasifikasi data. Model ini dapat
ditemukan pada kasus prediksi harga saham, klasifikasi pelanggan, klasifikasi gambar. Ciri ciri
mesin learning – Supervised: - Pembelajaran terbimbing, - Data memiliki
output/label/target class, - Memiliki fase training untuk mempelajari pemetaan antara input
dan output (membentuk model), - Kategori pekerjaan meliputi: klasifikasi, regresi, deteksi
anomali.

b. Unsupervised
Unsupervised Learning merupakan sebuah pemodelan dimana algoritmanya memodelkan
sekumpulan input secara otomatis tanpa adanya panduan output yang diinginkan. Model ini
mengolah data yang tidak memiliki label, tujuannya adalah mengelompokkan suatu data yang
hampir sama dengan data tertentu. Model ini tidak membutuhkan data training dalam
melakukan prediksi maupun klasifikasi. Ciri-ciri mesin learning – Unupervised: - Pembelajaran
tidak terbimbing, - Data tidak memiliki output/label/target class, - Tidak memiliki fase training,
algoritma bekerja untuk menemukan pola/hubungan pada data input, Kategori pekerjaan
meliputi: klusterisasi, asosiasi, demensionality reduction

Abdul Munif@2022 P a g e 5 | 28
Universal IoT berbasis Data Science

3.4.3. Algoritma dan Proses (task) Mesin Learning


a. Surpervised
 Classification
• Two Class Classification - Logistic Regression (Fast), - Decision Tree (Fast). - Decision
jungle (Accurate), - SVM (Accurate) (>100 features), - Boosted Decision Tree (Fast - Large
memory), - Bayes point machine (Fast)
• Multi Class Classification: - Decision Tree (Fast), - Logistic Regression (Fast), - Random
Forest (Accurate), - Gradient Boosting Tree (Accurate), - Naive Bayes (Big Data), -
Decision jungle (Accurate)
 Regression: - Linear Regression (Fast), - Decision Tree (Fast), - Random Forest (Accurate), -
Gradient Boosting Tree (Accurate), - Ordinal regression, - Bayesian linear regression, -
Boosted Decision Tree (Fast – Large memory), - SGD Regressor (<100K rows), - Lasso/
ElasticNet (Few Features), - RidgeRegression, - SVR (kernel=linear/ rbf), -
EnsembleRegressors
 Anomaly Detection: - One Class SVM (support vector machine), - PCA based Anomaly
Detection, - Time Series Anomaly Detection
 Text Analytics (Supervised Learning): - Named Entity Recognition - Sentimental Analysis

b. Unsupervised
• Clustering: - K-means Clustering,- K-modes (Categorical variables), - DBScan (predict the
number of clusters automatically),- OPTICS (predict the number of clusters automatically)
• Association: -Apriori
• Dimension Reduction: - PCA, - Singular value decomposition,
• Recommendation: - Matchbox Recommender
• Computer Vision: - OpenCV Library

3.4.4. Performance Measure


a. Confusion Matrix
Confusion matrix adalah matiks yang digunakan untuk mengukur performa model klasifikasi
jika diberikan sejumlah data uji. Jumlah matrik bergantung pada kelas target yang diklasifikasi.
Beberapa parameter beserta Formulasi yang digunakan adalah:
 Accuracy = (TP+TN) / (TP+FP+FN+TN)
 Error Rate = (FP+FN) / (TP+FP+FN+TN)
 Precision = TP / (TP+FP)
 Recall = TP / (TP+FN)
 F- Measure = (2* Recall*Precision) / (Recall+ Precision)

Abdul Munif@2022 P a g e 6 | 28
Universal IoT berbasis Data Science

b. MAD, MSE, MAPE


Mean Absolute Deviation (MAD) adalah rata-rata dari nilai absolute simpangan. Mean
Squared Error (MSE) adalah nilai rata-rata kuadratik error. Sedangkan Mean Absolute
Percentage Error (MAPE) merupakan nilai persentase rata-rata kesalahan absolut
c. Silhoutte Coeffision
Silhouette Coefficient adalah matiks yang digunakan untuk mengukur performa dari teknik
kluster. Rentang nilai -1 sampai 1. Nilai 1: cluster terpisah dengan baik satu sama lain dan
dibedakan dengan jelas. Nilai 0: cluster indefferent, jarak antar cluster tidak signifikan. Nilai-1:
cluster terkelompok dengan cara yang salah

3.5. Interaktif Visualisasi Data.


Interaktif Visualisasi data merupakan visualisasi data dimana informasi yang ditampilkan bersifat
dinamis sesuai dengan event atau aksi dari pengguna (UI/UX). Contoh berikut merupakan hasil dari
Exploration Data Analisys (EDA), dibangun menggunakan framework Dash-ploty dan bahasa Python.

Gambar EDA, trend harga dan penjualan apokat di Amerika Serikat tahun 2015 – 2018

EDA merupakan kegiatan sangat penting untuk seorang analis dan ilmuwan data. EDA menggunakan
beberapa teknik manipulasi data dan alat statistik untuk menggambarkan, memahami hubungan
antar variabel dan bagaimana hal tersebut dapat berdampak pada bisnis. Proses EDA menggunakan

Abdul Munif@2022 P a g e 7 | 28
Universal IoT berbasis Data Science

tools bahasa python terdiri dari beberapa langkah: 1) Mengimpor library yang dibutuhkan, 2)
membangkitkan atau membaca dataset, 3) Memahami gambaran umum dataset yang digunakan, 4)
Persiapan pemrosesan data awal, 5) memahami variabel yang digunakan, 6) Studi hubungan antar
variabel 7) visualisasi data, 8) Brainstorming dan kesimpulan

Gambar EDA, visualisasi dan peta persebaran data kasus terorisme global di berbagai negara

3.6. Interaktif Model Data


Interkatif model data adalah merupakan suatu pola, model atau knowledge yang dibangun
menggunakan algoritma mesin learning, memprediksi suatu data masukan melalui aksi dari
pengguna sesuai pola yang dibentuk serta memberikan tampilan informasi (visualisasi) yang mudah
difahami.

Gambar penerapan Support Victor Model untuk mengelompokkan data

Abdul Munif@2022 P a g e 8 | 28
Universal IoT berbasis Data Science

Gambar Simulasi RandomForestRegresor model untuk prediksi/optimalisasi produksi manufaktur

3.7. Data Struktur dalam Python


Terdapat beberapa data struktur pada bahasa python yang bersifat mutable (dapat dirubah) dan
immutable (tidak dapat dirubah). Data struktur bawaan dari python tersebut adalah: tuple, set, List
dan dictionary.
3.7.1. Tupel
Tupel adalah tipe data urutan (ordered) yang tidak dapat diubah (immutable) setelah
dideklarasikan.
emptyTuple = ()
oneElementTuple1 = (1,)
oneElementTuple2 = 1.,
tuple1 = (1, 2, 4, 8)
tuple2 = 1., .5, .25, .125
print(oneElementTuple1, oneElementTuple2, tuple1,tuple2)

3.7.2. Set
Set adalah salah satu tipe data di Python yang tidak berurut (unordered), memiliki anggota yang unik
(tidak ada duplikasi) dan bersifat mutable. Jika meletakkan dua anggota yang sama di dalam set,
maka otomatis set akan menghilangkan yang salah satunya. Set bisa digunakan untuk melakukan
operasi himpunan matematika seperti gabungan, irisan, selisih, dan lain – lain. Sama seperti set di
matematika, set dalam python merupakan sebuah himpunan dengan tanpa ada index. Struktur data
ini dapat dioperasikan menggunakan fungsi irisan dan gabungan sebagaimana variabel string.
my_set = {1,2,3} # set integer
my_set1 = set([1,2,3]) #menggunakan fungsi set()
my_set2 = {1, 2.0, "Python", (3,4,5)} #set data campuran
my_set3 = {1,2,2,3,3,3}# yang duplikai akan dicetak satu kali
print(my_set, my_set1, my_set2, my_set3)

Abdul Munif@2022 P a g e 9 | 28
Universal IoT berbasis Data Science

Operasi-operasi yang dapat digunakan untuk set adalah Fungsi add (): Untuk menambah satu
anggota ke dalam set. Fungsi update (): untuk menambahkan beberapa anggota sekaligus. Fungsi
discard () dan remove (): untuk menghapus anggota set. Fungsi discard () tidak akan memunculkan
error bila anggota yang ingin dihapus ternyata tidak ada di dalam set, sedangkan remove ()
sebaliknya.

3.7.3. List
List adalah kumpulan dari beberapa data yang diberi suatu nama. List merupakan tipe data Jenis
urutan (type sequence) dan bersifat mutable.

Slicing list adalah teknik untuk memotong nilai pada list. Hal ini dapat dilakukan melalui mengambil
beberapa nilai dari anggota list dengan mendefinisikan indeks kiri dan indeks kanan.
>>> number=[10,5,7,2,1] #deklarasi & inisialisasi variabel list
>>> print(number) #menampilkan variabel list
[10, 5, 7, 2, 1]
>>> print(number[1:3])#mengambil data mulai indeks ke 1 sampai 2
[5, 7]
>>> print(number[:2]) #mengambil data mulai indeks ke 0 sampai 2
[10, 5]
>>> print(number[2:]) #mengambil data mulai indeks ke 2 sampai terakhir
[7, 2, 1]
>>> print(number[1:-1]) #mengambil data mulai indeks ke 1 sampai terakhir-1
[5, 7, 2]
>>> print(number[-3:-1])
[7, 2]
>>> for i in number: #menampilkan seluruh data dengan looping berdasar valuenya
print(i)
>>> for j in range(2,4):#range(len(number))menampilkan seluruh elemen berdasar
print(number[j]) #indeksnya

Fungsi-fungsi yang dapat dioperasikan pada List adalah


 Method append () mengambil nilai argumennya dan meletakkannya di akhir daftar yang
memiliki metode tersebut. Panjang daftar kemudian bertambah satu.
List.append (nilai)
 Metode insert () sedikit lebih cerdas – metode ini dapat menambahkan elemen baru di
mana saja dalam daftar, tidak hanya di akhir.
List.insert (lokasi, nilai)
 Method del() dapat digunakan untuk menghapus data pada elemen tertentu dengan format
penulisan:
del namaVariabel[No-indeks)
 Fungsi sort() atau sorted() dapat digunakan untuk mengurutkan elemen-elemen list yang
sejenis dengan cara membandingkan nilai ASCII dari tiap elemen. Sedangkan Fungsi
reverse() dapat digunakan untuk membalik urutan elemen elemen-elemen list yang sejenis

Abdul Munif@2022 P a g e 10 |
28
Universal IoT berbasis Data Science

Untuk melakukan penukaran data dapat digunakan satu variabel bantu.


Variabel1 = 1
variabel2 = 2
bantu = variabel1
variabel1 = variabel2
variabel2 = pembantu

Python menawarkan cara yang lebih nyaman untuk melakukan pertukaran.


Variabel1 = 1
variabel2 = 2
variabel1, variabel2 = variabel2, variabel1

Program berikut menukar data list menggunakan looping.


1 myList = [10, 1, 8, 3, 5]
2 length = len(myList)
3 print(myList)
4 for i in range(length // 2):
5 myList[i], myList[length – i – 1] = myList[length
6 – i – 1], myList[i]
7 print(myList)

3.7.4. Dictionary
Kamus (dictionary) adalah merupakan tipe data Python yang tidak terurut (Unordered) tetapi dapat
dengan mudah disesuaikan dengan pemrosesan urutan dan dapat berubah. Dictionary memiliki
anggota yang terdiri dari pasangan kunci: nilai (key:value) sehingga tidak memiliki indeks. Kamus
Python bekerja dengan cara yang sama seperti kamus dwibahasa seperti Inggris dan Prancis: (Misal
cat(kucing-bahasa Inggris) diterjemahkan menjadi chat (kucing- bahasa Prancis)

1 empty_dictionary = {} # Membuat dictionary kosong


2 #Dictionary dengan kunci bahasa inggris dan nilai bahasa prancis
3 dictionary = {"cat”: "chat", "dog”: "chien", "horse”: "cheval"}
4 #Dictionary untuk menyimpan nama(key) dan nomor telpon(nilai)
5 phone_numbers = {'boss’: 5551234567, 'Suzy’: 22657854310}
6 my_dict = {1: 'sepatu', 2: 'tas'} # dictionary dengan kunci integer
7 my_dict1 = {'warna': 'merah', 1: [2,3,5]} #dictionary dengan kunci campuran
8 # membuat dictionary menggunakan fungsi dict()
9 my_dict2 = dict({1: 'sepatu', 2: 'bola'})
10 print("isi empty_dictionary: ", empty_dictionary)
11 print("isi dictionary: ", dictionary)
12 print("isi phone_numbers: ", phone_numbers)
13 print("isi my_dict : ", my_dict)
14 print("isi my_dict1 : ",my_dict1)
15 print("isi my_dict2 : ",my_dict2)
16 #mengakses anggota dictionary dengan nama kuncinya
17 print("isi dictionary['cat']: ", dictionary['cat'])
18 print("isi phone_numbers['Suzy']: ",phone_numbers['Suzy'])

Abdul Munif@2022 P a g e 11 |
28
Universal IoT berbasis Data Science

Menggunakan struktur looping untuk menampilkan data dicitionary


dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}
for key in dictionary.keys():
print(key, "->", dictionary[key])
for key in sorted(dictionary.keys()):
print(key, "->", dictionary[key])
for english, french in dictionary.items():
print(english, "->", french)

Memodifikasi data dictionary


dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}
dictionary['cat'] = 'miong'
print(dictionary)

Menambahkan key dan value baru


dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}
dictionary['swan'] = 'cygne'
print(dictionary)

Menghapus data dictionary dengan fungs del(), popitem() dan clear()


dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}
del dictionary['dog']
print(dictionary)
dictionary.pop("cat")
print(dictionary)

3.8. Mengelola data dengan Library Numpy


Lab. 3.8 Bekerja dengan Library Numpy dan Matplotlib
Tujuan 1. Memahami struktur data Array Numpy
2. Menerapkan Array Numpy
3. Membuat visualisasi data array Numpy menggunakan Matplotlib
Array Apa itu Library Numpy
Numpy
Numpy memudahkan dalam mendefiniskan array 1D,2D ... nD, menyimpan, memanipulasi data
dalam memory dan menggunakan fungsi aljabar linier. Penerapannya cukup luas dalam data
science. Kumpulan data dapat berasal dari berbagai sumber dan berbagai format, termasuk koleksi
kumpulan dokumen, kumpulan gambar, kumpulan klip suara, kumpulan pengukuran numerik.
Misal: gambar digital—dapat dianggap hanya sebagai array dua dimensi yang mewakili kecerahan
piksel di seluruh area. Suara klip dapat dianggap sebagai array satu dimensi intensitas dibanding
waktu. Teks bisa diubah dalam berbagai cara menjadi representasi numerik
Membuat data array
Array pada dasarnya berisi satu pointer ke satu blok data yang berdekatan. List Python berisi
pointer ke blok pointer, yang masing-masing menunjuk ke objek Python penuh seperti integer
Python. List bersifat fleksibil karena setiap elemen List adalah struktur lengkap yang berisi data dan
tipe informasi, list dapat diisi data dari tipe apa pun. Array NumPy dengan tipe tetap tidak memiliki
fleksibilitas seperti list, tetapi jauh lebih efisien untuk menyimpan dan memanipulasi data. Python
menawarkan beberapa opsi berbeda untuk menyimpan data secara efisian dalam tipe tetap buffer

Abdul Munif@2022 P a g e 12 |
28
Universal IoT berbasis Data Science

data. Modul array bawaan (tersedia sejak Python 3.3) dapat digunakan untuk membuat array
padat dari tipe yang seragam
Fixed Type Array Array Numpy from python lIst

#Numpy meng-upcast data int ke float Mengatur data array numpy dengan keyword dtype

Tidak seperti List Python, array NumPy dapat secara eksplisit multidimensi;

Membuat array numpy multidimensi

Visualisasi Ploting grafik scatter, step, bar, fillbetween dan barh


Data Array
Numpy 1 import matplotlib.pyplot as plt
2 import numpy as np
3 x = np.linspace(0, 5, 20)
4 y = x ** 2
5 n = np.array([0,1,2,3,4,5])
6 xx = np.linspace(-0.75, 1., 100)
7 fig, axes = plt.subplots(1, 5, figsize=(12,3))
8 axes[0].scatter(xx, xx + 0.25*np.random.randn(len(xx)))
9 axes[0].set_title("scatter")
10 axes[1].step(n, n**2, lw=2)
11 axes[1].set_title("step")
12 axes[2].bar(n, n**2, align="center", width=0.5, alpha=0.5)
13 axes[2].set_title("bar")
14 axes[3].fill_between(x, x**2, x**3, color="green", alpha=0.5);
15 axes[3].set_title("fill_between");
16 axes[4].barh(n, n**2, align="center")
17

Abdul Munif@2022 P a g e 13 |
28
Universal IoT berbasis Data Science

Ploting grafik trigonometri, teks/simbol dan annotate


1 import numpy as np
2 import matplotlib.pyplot as plt
3 p=np.linspace(0,10,100)
4 plt.figure(figsize=(12,4))
5 plt.subplot(1,3,1)
6 plt.plot(p, np.sin(p),'r-')
7 plt.xlabel('Sumbu x')
8 plt.ylabel('Sumbu y')
9 plt.title('Grafik sin x')
10 plt.text(0, -0.5, r'$\mu=100,\ \sigma=15$')
11 plt.grid()
12 plt.subplot(1,3,2)
13 plt.plot(p,np.cos(p),'g--')
14 plt.annotate('local min', xy=(3.5, -1), xytext=(5.5, -0.75),
15 arrowprops=dict(facecolor='black', shrink=0.05),)
16 plt.xlabel('Sumbu x')
17 plt.ylabel('Sumbu y')
18 plt.title('Grafik cos x')
19 plt.grid()
20 plt.subplot(1,3,3)
21 plt.plot(p,np.tan(p),'b*-')
22 plt.xlabel('Sumbu x')
23 plt.ylabel('Sumbu y')
24 plt.title('Grafik tan x')
25 plt.suptitle('Garfik trigonometri')
26 plt.tight_layout()
27 plt.savefig('plotGambar.jpg', bbox_inches='tight', dpi=150)
28 plt.grid()
29 plt.show()
30

Referensi Sub materi tentang manipulasi data array menggunakan teknik slicing, reshaping, joining,
Numpy concatenation dan splitting dapat dilihat pada ”python data science handbook” halaman 47 – 50.
Kunjungi tautan dan temukan dokumentasi library numpy di: https://numpy.org/doc/stable/

Referensi Untuk memperdalam materi pemanfaatan library Matplotlib dengan fitur-fitur, canggihnya seperti:
Matplotlib “Visualizing Errors, Density and Contour Plots, Customizing plot legend and Colorbars, multi subplot,
Histograms, Binnings, and Density, Configurations and Stylesheets, Three-Dimensional Plotting,

Abdul Munif@2022 P a g e 14 |
28
Universal IoT berbasis Data Science

Geographic Data with Basemap “ dapat dilihat pada ”python data science handbook”-chapter 4
Visualization with Matplotlib halaman: hal 220 – 310. Kunjungi dan temukan dokumentasi library
matplotlib di: https://matplotlib.org/stable/users/index.html

3.9. Memanipulasi Data dengan Library Pandas


Lab. 3.9 Bekerja dengan Library Pandas Data Frame
Tujuan 1. Memahami struktur data Pandas Data Frame
2. Menerapkan Pandas Data Frame
3. Membuat visualisasi data Pandas Data Frame
Pendahulua Apa itu Library Pandas
n Objek Pandas dapat dianggap sebagai penyempurnaan versi dari Array terstruktur NumPy, di mana
baris dan kolom diidentifikasi dengan label bukan indeks bilangan bulat sederhana. Pandas
menyediakan sejumlah alat, metode, dan fungsionalitas yang berguna untuk memahami dasar
struktur data. Struktur data dasar pada Pandas meliputi: Seri, DataFrame, dan Indeks.
Pandas Series sebagai dictionary khusus
Series Pandas agak mirip dengan type data dictionary. Dictionary adalah struktur data yang
memetakan kunci arbitrer ke kumpulan nilai arbitrer, dan Series adalah struktur yang memetakan
typed keys ke kumpulan types values. Hal ini penting: sama seperti kode kompilasi tipe khusus di
belakang array NumPy yang membuatnya lebih efisien daripada List Python untuk operasi
tertentu. Pengguna dapat membuat analogi Series-sebagai-dictionary menjadi lebih jelas dengan
membangun objek Series langsung dari dictionary Python

DataFrame sebagai generalisasi dari NumPy array


DataFrame dapat dianggap sebagai generalisasi dari array NumPy, atau sebagai spesialisasi
dictionary Python.

Abdul Munif@2022 P a g e 15 |
28
Universal IoT berbasis Data Science

Manipulasi Mengelola Data menggunakan Data Frame


Data
Proyek sederhana ini akan mengelola data menggunakan struktur pandas dataFrame yang
menyimpan data nama kota, jumlah penduduk, kode kendaraan, suhu, kelembaban, tingkat polusi.
Operasi yang diterapkan adalah: create, update, visualisasi data, mengatasi missing value,
menyimpan file ke csv, membaca file csv, meyimpan file gambar.
1 #1.Menginport library
2 import pandas as pd
3 import matplotlib.pyplot as plt
4 import seaborn as sns
5 #2.membuat data dictionary untuk menyimpan data kota suhu dan kelembaban
6 data={
7 'namaKota':['Jakarta', 'Surabaya','Semarang','Bogor','Banyuwangi'],
8 'suhu':[26.0,25.5,28.0,27.5,np.nan],
9 'kelembaban':[80,np.nan,85,70,75]}
10 print(data)
11 #3.menkonversi data dictionary ke pandas data frame
12 df=pd.DataFrame(data)
13 print(df)
14 #4.Menambahkan kolom Kualitas udara
15 df['kualitasUdara']=['kurang','cukup','baik','sangat baik','baik']
16 print(df)
17 #5.Menambahkan baris data dengan data kualitas udara None
18 df=df.append({'namaKota':'Malang', 'suhu':21, 'kelembaban':90.2,'kualitas
19 Udara':None},ignore_index=True)
20 print(df)
21 #6.Menambahkan kolom cuaca diisi data kategorkal dan fungsi concat
22 hujan={'cuaca':['berawan','hujan','cerah','berawan','hujan','cerah']}
23 dfHujan=pd.DataFrame(hujan)
24 df=pd.concat((df,dfHujan),axis=1)
25 print(df)
26 #7.mengecek dan menghitung data yang kosong(NaN atau None)
27 print(df.isnull().sum())
28 #8. Mengisi data kosong suhu dengan nilai rata-ratanya
29 df.at[4,'suhu']=df['suhu'].mean()
30 print(df)
31 #9. Mengisi data kosong kualitasUdara dengan nilai modusnya
32 from scipy.stats import mode
33 #data['Year'] = data['Year'].fillna(data['Year'].mode()[0])
34 df['kualitasUdara']=df['kualitasUdara'].fillna(df['kualitasUdara'].mode()
35 [0])
36 print(df)
37
38 #10. Mengisi data kosong kelembaban dengan nilai tengahnya
39 df=df.fillna(df.kelembaban.median())
40 print(df)

Abdul Munif@2022 P a g e 16 |
28
Universal IoT berbasis Data Science

41 #11.mengecek dan menghitung kembali data yang kosog(NaN atau Noneg)


42 print(df.isnull().sum())
43 #12.Menyimpan data ke file dataku1.csv
44 df.to_csv('dataku1.csv',index=False)
45 # #13.Membaca data file dataku.csv
46 df1=pd.read_csv('dataku1.csv')
47 print(df1)
48 #14.Melihat data statistik untuk setiap atribute numerik
49 print(df1.describe())
50 #15.Melihat struktur dan type datanya
51 print(df1.info())
52 # #16.Slicing data
53 print(df1.iloc[2:4,1:4])
54 print(df1.iloc[1,:])
55 #17.Ploting grafik menggunakan fungsi plot dari properti data frame
56 df.suhu.plot.bar(x='namaKota')
57 df.kelembaban.plot(kind='line')
58 #18.Ploting grafik menggunakan library matplotlib
59 import matplotlib.pyplot as plt
60 plt.figure(figsize=(12,4))
62 plt.subplot(1,2,1)
63 df['suhu'].plot.barh()
64 plt.xlabel('Suhu')
65 plt.ylabel('Nama Kota')
66 plt.subplot(1,2,2)
67 df.kelembaban.plot.line()
68 plt.xlabel('Nama kota')
69 plt.ylabel('kelembaban dalam %')
70 plt.tight_layout()
71 plt.show()
72 #19.Ploting subplot grafik menggunakan library seaborn dan matplotlib
73 plt.figure(figsize=(10,5))
74 plt.subplot(1,2,1)
75 ax = sns.lineplot(data=df,y='suhu',x='namaKota')
76 plt.xticks(rotation=65, horizontalalignment='right')
77 plt.subplot(1,2,2)
78 sns.barplot(data=df, x="kelembaban", y='namaKota')
79 plt.tight_layout()
80 plt.show()
81 #plotting pairplot
82 sns.pairplot(df)
83 plt.savefig('pairplot.jpg', bbox_inches='tight', dpi=150)

Tabel data awal dengan hasil data collection dan beberapa missing value attribute

Abdul Munif@2022 P a g e 17 |
28
Universal IoT berbasis Data Science

Tabel data hasil preprocessing data (data clearning) mengatasi missing value

Refferensi Untuk memperdalam materi pemanfaatan library seabon dengan fitur-fitur, canggihnya seperti:
“Visualizing distributions of data, Plotting with categorical data, Visualizing regression models, Building
structured multi-plot grids, Controlling figure aesthetic, Choosing color palettes, Example gallery,
Example gallery, API, dan lain-lainnya “. Kunjungi dan temukan dokumentasi library seabon di:
https://seaborn.pydata.org/examples/index.html dan https://seaborn.pydata.org/tutorial.html .
Kunjungi Juga dokumentasi library pandas di https://pandas.pydata.org/docs/

Membuat Memprediksi Curah hujan menggunakan algoritma Simple Linier Regresi


Model Data Alur pembuatan model data menggunakan mesin learning diawali dengan memecah data set
menjadi data trainning dan testing. Data training diproses menggunakan mesin learning sehingga
menghasilkan mesin learning model. Data testing dimasukkan ke mesin learning model untuk
menghasilkan keluaran sesuai dengan model yang telah dibuat. Model yang telah dibuat dapat
dimanfaatkan untuk mempredikasi target (variabel y) dari data baru (variabel X). Penggunaan atau
pemilihan algoritma mesin learning yang tepat diperlukan untuk mendapatkan hasil yang
maksimal.

1 #Program Prediksi Curah hujan-algoritma Simple Linier Regresi Model (SLR)


2 #file name: SimpleRegresiCuaca.py
3 #Refferensi: https://www.neliti.com/publications/495297/prediksi-curah-

Abdul Munif@2022 P a g e 18 |
28
Universal IoT berbasis Data Science

4 #hujan-di-kabupaten-majalengka-dengan-menggunakan-algoritma-regres
5 #refferensi: https://www.megabagus.id/simple-linear-regression/
6 #1.Import library yang dibutuhkan
7 import numpy as np
8 import matplotlib.pyplot as plt
9 import pandas as pd
10
11 #2.Impor dataset
12 dataset = pd.read_csv('dataCuaca.csv')
13 print(dataset)
14 #3.Memecah data kedalam variabel X(idependent) dan Variabel y (dependent)
15 X = dataset.iloc[:,1:5].values
16 y = dataset.iloc[:, -1].values
17
18 #4.Menampilkan data variabel X
19 print(X)
20 #Menampilkan bentuk ukuran data X
21 print(X.shape) #array 31x4 31 baris 4 kolom
22
23 #5.Menampilkan data variabel y
24 print(y)
25 #menampilkan Bentuk/Ukuran dataset y
26 print(y.shape) #array 1 dimensi 31 elemen
27
28 # 6 Membagi data menjadi data Training Set dan data Test Set
29 from sklearn.model_selection import train_test_split
30 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3
31 , random_state = 0)
32
33 #7. Fitting Simple Linear Regression terhadap Training set
34 from sklearn.linear_model import LinearRegression
35 regressor = LinearRegression()
36 regressor.fit(X_train, y_train)
37
38 #8.Memprediksi hasil Test Set
39 y_pred = regressor.predict(X_test)
40 y_pred
41
42 #9.Membandingkan data y aktual dan data y_prediksi
43 dict_y_actual={'y-aktual':y_test} #membuat data dictionary dari y_test
44 #membuat data frame dari data dictionary y_test
45 dfy=pd.DataFrame(dict_y_actual)
46 dfy['y-Prediction']=y_pred #menambahkan kolom y-prediction ke data frame
47 print(dfy)
48
49 #10.Memprediksi Data test baru
50 #data suhu, kelembaban, lama penyinaran dan kecepatan angin
51 Datatestbaru=[28.2,80,3.5,1]
52 #memprediksi curah hujan dengan data test baru
53 y_pred1=regressor.predict([Datatestbaru])
54 print("data test Baru: ",Datatestbaru)
55 print('Prediksi curah hujan: ',y_pred1)
56
57 #11.Visualisasi data
58 import seaborn as sns #import library seabons
59 sns.pairplot(dataset) #ploting pairplot untuk seluruh atribut
60
61 #12.Visualisasi hubungan atribute suhu dan curah hujan
62 #(scatter plot) dan persamaan regresi
63 suhu=dataset['Suhu'] #mengambil data suhu
64 curHujan=dataset['CurahHujan'] #mengambil data curah hujan
65 X1=np.array(suhu).reshape(-1,1) #konversi atribue X(suhu) ke array nampy
66 y1=np.array(curHujan) #konversi atribue y(curah hujan) ke array nampy
67 regressor1 = LinearRegression() #membuat objek linier regresi
68 regressor1.fit(X1, y1) #mentrainning data dengan linier regresi
Abdul Munif@2022 P a g e 19 |
28
Universal IoT berbasis Data Science

69 plt.scatter(X1, y1, color = 'red') #scatter plot


70 plt.plot(X1, regressor1.predict(X1), color = 'blue') #plot linier regresi
71 plt.title('Grafik Suhu dan Curah ')
72 plt.xlabel('Suhu')
73 plt.ylabel('Curah hujan')
74 plt.show()
75
76 #13.menghitung persamaan regresi suhu dan curah hujan
77 #y = mx + c , m is coef , c is intercept
78 m=regressor1.coef_ #kooefisien regresi
79 c=regressor1.intercept_ # pertongan dengan sumbu y dengan nilai x=0
80 print("Persamaan regresi: y = ",m,'x + ', c)
81
62 #14.EVALUASI MODEL (menghitung nilai RMSE Root Mean Squared Error)
83 '''
84 RMSE: satu cara mengevaluasi model regresi linear dengan mengukur tingkat
85 akurasi hasil perkiraan suatu model.
86 dihitung dengan mengkuadratkan error (prediksi – observasi) dibagi dengan
87 jumlah data (= rata-rata),
88 kemudian diakarkan. RMSE tidak memiliki satuan. RME
89 '''
90 actualValue = y1 #nilai sebenaranya dari curah hujan
91 predictedValue = regressor1.predict(X1) #nilai prediksi dari curah hujan
82 print('nilai suhu:',X1[0], ', Nilai curah hujan:',actualValue[0], ', Pred
93 iksi Curah hujan:', predictedValue[0])
94 #menghitung nilai RMSE
95 RMSE=np.sqrt ( sum( abs( actualValue**2 - predictedValue**2 ) ) ) / len(
96 X1 ) # RMSE Root Mean Square Error
97 print("Nilai RMSE: ", RMSE)
98
99 #15.Mengevaluasi Simple Linier Regresi Model (SLR)dgn score akurasi
100 score_model = regressor.score(X_train, y_train)
101 print(score_model)
102 print(str(score_model*100) + "%")

3.10. Eksplorasi dan Analisis Data Mesin Produksi


Lab. 3.9 Ekploration Data Analisis Mesin Produksi Manufaktur (machine Error)
Tujuan 1. Menerapkan EDA untuk menganalisis performa mesin produksi
2. Membuat visualisasi hubungan variabel sensor mesin penguji dengan mesin yang diuji
3. Mendeteksi mesin-mesin yang bermasalah
Pendahulua Deskripsi EDA
n Analisis berikut menjelaskan langkah-langkah yang dilakukan oleh data scientist untuk mendeteksi
mesin-mesin produksi yang bermasalah. Dataset terdiri dua yaitu dataset mesin penguji/referensi
(Golden_machine) dan dataset mesin yang diuji (machine1, machine2.. machine10). Feature
atribute Golden_machine terdir idari sepuluh item, merepresentasikan nilai referensi dari sepuluh
sensor dengen destribusi data normal. Feature dataset mesin yang diuji merepresentasikan
sepuluh sensor untuk sepuluh mesin produksi. Setiap mesin memiliki 200 sampel data, sehingga
terdapat 20.000 titik data. Analisis akan menghitung nilai correlation score untuk setiap mesin
(machine) terhadap data referensi (Golden_machine). Hasil perhitungan skor korelasi
menunjukkan tiga peringkat tertinggi yaitu mesin7,8 dan 9 mendekati angka 200. Hal ini
menjelaskan yang paling berkolerasi (baik performanya). Sementara itu dua mesin (mesin2 dan
mesin 10) mendapatkan nilai skor dibawah ambang batas (nilai dibawah 100 yang ditandai dengan
warna merah.

Abdul Munif@2022 P a g e 20 |
28
Universal IoT berbasis Data Science

Kode Kode Program EDA Anomali Machine detection


Program
1 #1.Menginport library
2 import pandas as pd
3 import matplotlib.pyplot as plt
4 import seaborn as sns
5 #2.membuat dataframe mesin penguji/referensi
6 #200 baris data sampel dengan 10 kolom atribut (sebagai sensor)
7 machine_golden = pd.DataFrame(np.random.normal(size=(200,10)))
8 print(data)
9 #3.membuat dataframe mesin yang diuji seberapa penyimpangan dari mesin pe
10 nguji
11 machines = {'machine'+str(i):[] for i in range(1,11)}
12 for i in range(1,11):
13 loc = np.random.uniform(0,2)
14 scale = np.random.uniform(0,2)
15 df1 = machine_golden+pd.DataFrame(np.random.normal(loc=loc,scale=scal
16 e,size=(200,10)))
17 machines['machine'+str(i)] = df1
18 print(df)
19 #4.Informasi global dataset machine_golden menggunakan fungsi:print(), ke
20 ys(),info(),describe(),shape
21 print(machine_golden)
22 #5.Inofrmasi global dataset machine yang diuji menggunakan fungsi:print()
23 , keys(),info(),describe(),shape
24 print(machines)
25 #6.ploting scatter untuk melihat hubungan variabel sensor1 mesin penguji
26 dan sensor1 mesin yang diuji (korelasi positif)
27 plt.figure(figsize=(5,3),dpi=120)
28 plt.scatter(machine_golden.loc[:,0],machines['machine1'].loc[:,0],
29 edgecolor='k', color='#42a1f5')
30 plt.title("Sensor-1 of golden machine vs. Sensor-1 of $M$1")
31 plt.xlabel('sensor1 golden machine')
32 plt.ylabel('sensor1 machine1')
33 plt.show()
34
35 #7.ploting scatter untuk melihat hubungan variabel sensor1 mesin penguji
36 dan sensor2 mesin yang diuji (tidak ada korelasi)
37 plt.figure(figsize=(5,3),dpi=120)
38 plt.scatter(machine_golden.loc[:,0],machines['machine1'].loc[:,1],
39 edgecolor='k', color='#42a1f5')
40 plt.title("Sensor-1 of golden machine vs. Sensor-2 of $M$1")
41 plt.show()
42 #8.Mencetak nilai korelasi mesin yang diuji dengan mesin penguji
43 for machine in machines:
44 print(f"Correlation of {machine} with the golden tester:", round(mach
45 ine_golden.corrwith(machines[machine],axis=1).sum(),2))
46 #9.Ploting korelasi sensor mesin 2 dengan sensor mesin penguji
47 fig,ax = plt.subplots(1,4,figsize=(16,4))
48 plt.suptitle("Golden machine and machine2", fontsize=18,va='top')
49 ax = ax.ravel()
50 for i in range(4):
51 ax[i].scatter(machine_golden.loc[:,i],machines['machine2'].loc[:,i])
52 ax[i].set_xlabel(f"Sensor {i+1}",fontsize=15)
53 plt.show()
54 #10.Ploting korelasi sensor mesin 7 dengan sensor mesin penguji
55 fig,ax = plt.subplots(1,4,figsize=(16,4))
56 plt.suptitle("Golden machine and machine7", fontsize=18)
57 ax = ax.ravel()
58 for i in range(4):
59 ax[i].scatter(machine_golden.loc[:,i],machines['machine7'].loc[:,i])
60 ax[i].set_xlabel(f"Sensor {i+1}",fontsize=15)
62 plt.show()
63 #11.Ploting pairplot melihat persebaran data setiap sensor pada mesin 1

Abdul Munif@2022 P a g e 21 |
28
Universal IoT berbasis Data Science

64 plt.figure(dpi=120)
65 sns.pairplot(data=machines['machine1'])
66 plt.show()
67 #12.Menghitung nilai korelasi untuk untuk setiap mesin yang diuji
68 corr_score = {'machine'+str(i):[] for i in range(1,11)}
67 for machine in machines:
68 score = round(machine_golden.corrwith(machines[machine],axis=1).sum()
69 ,2)
70 corr_score[machine] = score
71 print(corr_score)
72 #13.mendefinisikan fungsi yg memberi label warna nilai korelasi
73 def color_vals(x):
74 if x > 100:
75 return '#42a1f5'
76 else:
77 return 'red'
78 #14.Ploting diagram batang status mesin(merah dibawah ambang batas)
79 plt.figure(figsize=(5,4),dpi=120)
80 plt.barh(y=list(corr_score.keys()),width = corr_score.values(),
81 color=list(map(color_vals,list(corr_score.values()))), edgecolor
82 ='k',height=0.7)
83 plt.vlines(x=100,ymin='machine1',ymax='machine10',
84 linewidth=3,color='k',linestyle='--')
85 plt.xlabel("Correlation score with golden machine (sum)",fontsize=14)
86 plt.show()

3.11. Simulasi Interaktif Model dan Prediksi Data


Lab. 11 Proyek Data science: membuat simulasi model data dengan mesin learning
Tujuan 1. Memahami penerapan data science
2. Menerapkan framework dash-ploty
3. Menerapkan algoritma mesin learning untuk memprediksi/optimasi proses produksi
Pendahulua Deskripsi proyek
n Proyek ini akan membuat simulasi data modeling menggunakan mesin learning yang digunakan
untuk memprediksi atau mengoptimalisasi proses produksi. Algoritma menggunakan
RandomForestRegresor yang merupakan bagian dari task regression dari algoritma mesin learning.
Data set dibangkitkan oleh program dengan sejumlah 1000 data sampel, 8 atribut/fitur (variabel X
atau independen dan 1 fitur sebagai target (Variabel y atau dependent). Delapan atribute tersebut
adalah “Temperature", "Viscosity", "Pressure", "pH","Inlet_flow", "Rotating_Speed",
"Particles_size", "Color_density". Atribut Y adalah target data merupakan nilai optimalisasi proses
produksi dalam prosentasi.

Kode Proyek Simulasi prediksi/optimalisasi proses produksi


pogram
proyek 1 #Simulasi prediksi/optimalisasi proses produksi: 8 faktor yg berpengaruh
2 #1.Import standar library mesin learning
3 import pandas as pd
4 import numpy as np
5 import math
6 from sklearn.datasets import make_regression
7 from sklearn.ensemble import RandomForestRegressor
8 #2.Membangkitkan a virtual regression use-case dataset terdiri: 8 kolom
9 #sebagai feature (varibel X) satu kolom target/class/label (variabel y)
10 # jumlah baris 1000
11 X, y = make_regression(n_samples=1000, n_features=8, n_informative=5, ran
dom_state=22)
Abdul Munif@2022 P a g e 22 |
28
Universal IoT berbasis Data Science

12 print(X)
13 print(y)
14 #3.Generate data set (virtual regression use-case)
15 # Memberikan nama kolom untuk industrial parameters yang berpengaruh
16 col_names = ["Temperature","Viscosity","Pressure", "pH","Inlet_flow", "Ro
17 tating_Speed","Particles_size","Color_density"]
18 df = pd.DataFrame(X, columns=col_names)
19 print(df)
20 #4.mengatur nama atribute kolom sebagai 8 parameter industri manufaktur
21 #merubah nilai feature untuk memberikan gambaran parameter sebenarnya
22 df["pH"]=6.5+df["pH"]/4
23 df["Pressure"]=10+df["Pressure"]
24 df["Temperature"]=20+df["Temperature"]
25 df["Y"] = 90+y/20
26 print(df)
27 #5.memisahkan variabel X dan y dari dataset
28 X1=df1[['Temperature','Pressure','pH']] #memilih atribut X
29 Print(X1)
30 y1=df1['Y'] #Memilih Atribut Y
31 print(y1)
32 #6.Fitting RandomForestRegression: n_estimators(jum. pohon dihutan)=10
33 # import the regressor
34 from sklearn.ensemble import RandomForestRegressor
35 #membuat obyek regressor
36 regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
37 # Menerapkan (fit) regressor dengan data X and y
38 regressor.fit(X1,y1)
39 #7.memilih data test dari dataset dengan index 0
40 dataTest0=X1.iloc[0,:]
41 dataTarget0=y1[0]
42 print(dataTest0)
43 print('Y target: ',dataTarget0)
44 #8.#memprediksi nilai Y dari datatest yang telah dipilih
45 y_pred=regressor.predict([dataTest0])
46 #9. #Membandingkan Nilai Y hasil prediksi dan Y target
47 print('Nilai Y Target: ',y1[0])
48 print('Nilai Y hasil Prediksi: ',y_pred)
49 Kesalahan=((y_pred - y1[0])/y1[0])*100
50 print('Kesalahan= ', Kesalahan,'%')
51
52 #10a.Mengevaluasi random forest ensemble untuk regression dengan MAE
53 from numpy import mean
54 from numpy import std
55 from sklearn.model_selection import cross_val_score
56 from sklearn.model_selection import RepeatedKFold
57 cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1)
58 n_scores = cross_val_score(regressor, X, y, scoring='neg_mean_absolute_er
59 ror', cv=cv, n_jobs=-1, error_score='raise')
60 # report performance
62 print('MAE: %.3f standar deviasi: (%.3f)' % (mean(n_scores), std(n_scores
)))
63
#11.Visualisasi data- Ploting histogram data set
64
import seaborn as sns
65
sns.histplot(df1)
66

Abdul Munif@2022 P a g e 23 |
28
Universal IoT berbasis Data Science

67 #10b.Mengevaluasi random forest ensemble utk regression dgn score akurasi


68 score_model = regressor.score(X1, y1)
69 print(score_model)
70 print(str(score_model*100) + "%")
71
72 #12.Ploting Scatter plot dan linier regresi
73 import matplotlib.pyplot as plt
74 from scipy import stats
75 #Ploting scatter fitur temperatur thd target Y dan ploting linier regresi
76 plt.figure(figsize=(20,6))
77 plt.subplot(1,3,1)
78 sns.scatterplot(x=df.Temperature, y=df.Y)
79 x=df.Temperature
80 y=df.Y
81 #plotting garis regresi
82 def plotGaris():
83 slope, intercept, r, p, std_err = stats.linregress(x, y)
84 def myfunc(x):
85 return slope * x + intercept
86 mymodel = list(map(myfunc, x))
87 plt.plot(x, mymodel,'r')
88 plotGaris()
89 plt.grid()
90
91 #Ploting scatter fiture pH tergadap target Y dan ploting linier regresi
92 plt.subplot(1,3,2)
93 sns.scatterplot(x=df.pH, y=df.Y)
94 x=df.pH
95 y=df.Y
96 plotGaris()
97 plt.grid()
98
99 #Ploting scatter fiture pH tergadap target Y dan ploting linier regresi
100 plt.subplot(1,3,3)
101 sns.scatterplot(x=df.Pressure, y=df.Y)
102 x=df.Pressure
103 y=df.Y
104 plotGaris()
105 plt.grid()
106 plt.show()
107
108 #13.Menampilkan nil koef.relasi r,p,slope,std_error,intercept dari suhu
109 x2=df['Temperature']
107 y2=df.Y
108 dString="Temperatur"
109 slope2, intercept2, r2, p2, std_err2 = stats.linregress(x2, y2)
110 print("Koefisien Korelasi:", r2)
111 print("p:", p2)
112 print("std-error:", std_err2)
113 print("Slope:", slope2)
114 print("intercept:", intercept2)
115
116 #14.Menampilkan nil koef.relasi r,p,slope,std_error,intercept dari pH
117 x3=df.pH

Abdul Munif@2022 P a g e 24 |
28
Universal IoT berbasis Data Science

118 y3=df.Y
119 slope3, intercept3, r3, p3, std_err3 = stats.linregress(x3, y3)
120
121 #15.Menampilkan koef.relasi r,p,slope,std_error,intercept dari Pressure
122 x4=df.Pressure
123 y4=df.Y
124 slope4, intercept4, r4, p4, std_err4 = stats.linregress(x4, y4)
125 #15.Menampilkan seluruh nilai untuk ketiga parameter
126 print('{:11}{:11}{:11}{:11}{:11}
127 {:11}'.format('parameter','slope','intercept','r','p','std_err'))
128 print('{:9s}{:^11.4f}{:^11.4f}{:^11.4f}{:^11.4f}
129 {:^11.4f}'.format('Suhu',slope2,intercept3,r2,p2,std_err2))
130 print('{:9s}{:^11.4f}{:^11.4f}{:^11.4f}{:^11.4f}
{:^11.4f}'.format('pH',slope3,intercept3,r3,p3,std_err3))
131
print('{:9s}{:^11.4f}{:^11.4f}{:^11.4f}{:^11.4f}
132
{:^11.4f}'.format('Tekanan',slope4,intercept4,r4,p4,std_err4))
133

Modeling Dasar framework Dash untuk visualisasi data


data dan Dash adalah kerangka kerja kode rendah yang digunakan untuk membangun aplikasi data dengan
simulasi cepat di Python, R, Julia, dan F# (eksperimental). Ditulis di atas Plotly.js dan React.js, Dash sangat
Prediksi ideal untuk membangun dan menyebarkan aplikasi data dengan antarmuka pengguna yang
suatu proses disesuaikan. Dash ini Ini sangat digunakan oleh data scientist .
industri Untuk mendalami dasar pemrograman menggunakan framework dash kunjungi tutorialnya pada
tautan: https://dash.plotly.com/layout

Interkatif Visualisasi model Prediksi/Optimalisasi dengan dash-ploty


Proyek berikut menjelaskan program Program simulasi prediksi suatu proses produksi di industri
dengan delapan faktor yang berpengaruh. Keluaran program ditampilkan pada server local yang
dapat ditampilkan di webbrowser. Algoritma mesin learning yang digunakan adalah random forest
regression
1 #Refferensi: https://towardsdatascience.com/build-a-machine-learning-
2 #simulation-tool-with-dash-b3f6fd512ad6
3 #1.Import standar library mesin learning
4 import pandas as pd
5 import numpy as np
6 import math
7 from sklearn.datasets import make_regression
8 from sklearn.ensemble import RandomForestRegressor
9 #2.Import library framework Dash-ploty
10 import plotly.graph_objects as go
11 import dash
12 import dash_core_components as dcc
13 import dash_html_components as html
14 import dash_daq as daq
15 from dash.dependencies import Input, Output
16 #3.Generate data set (virtual regression use-case)
17 X, y = make_regression(n_samples=1000, n_features=8, n_informative=5, r
18 andom_state=22)
19 print(X)
20 print(y)
21 #4.mengatur nama atribute kolom sebagai 8 parameter industri manufaktur
22 col_names = ["Temperature","Viscosity","Pressure", "pH","Inlet_flow", "
Rotating_Speed","Particles_size","Color_density"]
23
#5.Membuat obyek df bertype pandas dataframe
24
df = pd.DataFrame(X, columns=col_names)
Abdul Munif@2022 P a g e 25 |
28
Universal IoT berbasis Data Science

25 #5.Merubah rentang fitur penting agar terlihat seperti angka sebenarnya


26 df["pH"]=6.5+df["pH"]/4
27 df["Pressure"]=10+df["Pressure"]
28 df["Temperature"]=20+df["Temperature"]
29 df["Y"] = 90+y/20
30 print(df)
31 #6.Melatih mesin menggunakan simple RF model
32 model = RandomForestRegressor()
33 model.fit(df.drop("Y", axis=1), df["Y"])
34 #7.membuat DataFrame untuk menyimpan fitur dan label yang sesuai
35 df_feature_importances = pd.DataFrame(model.feature_importances_*100,co
36 lumns=["Importance"],index=col_names)
37 df_feature_importances = df_feature_importances.sort_values("Importance
38 ", ascending=False)
39 #8.membuat diagram/Bagan Batang untuk Fitur-fiturnya
40 fig_features_importance = go.Figure()
41 fig_features_importance.add_trace(go.Bar(x=df_feature_importances.index
,
42 y=df_feature_importances["Importance"],marker_color='rgb(171, 226, 251)
43 ')fig_features_importance.update_layout(title_text='<b>Features Importa
44 nce of the model<b>', title_x=0.5)
45 #9.Perintah berikut dapat diaktifkan di notebook standar untuk
46 #menampilkan #grafik fig_features_importance.show()
47 #memberikan nama, min, mean, dan maks dari tiga fitur terpenting
48 dropdown_1_label = df_feature_importances.index[0]
49 dropdown_1_min = math.floor(df[dropdown_1_label].min())
50 dropdown_1_mean = round(df[dropdown_1_label].mean())
51 dropdown_1_max = round(df[dropdown_1_label].max())
52 dropdown_2_label = df_feature_importances.index[1]
53 dropdown_2_min = math.floor(df[dropdown_2_label].min())
54 dropdown_2_mean = round(df[dropdown_2_label].mean())
55 dropdown_2_max = round(df[dropdown_2_label].max())
56 dropdown_3_label = df_feature_importances.index[2]
57 dropdown_3_min = math.floor(df[dropdown_3_label].min())
58 dropdown_3_mean = round(df[dropdown_3_label].mean())
59 dropdown_3_max = round(df[dropdown_3_label].max())
60 #######################################################################
62 ###10.menjalankan konstruktur framework dash
63 app = dash.Dash()
64 # Struktur halaman akan menjadi:
65 # diagram fitur penting
66 # <H4> fitur nama #1
67 # Slider untuk memperbarui fitur nilai #1
68 # <H4> fitur nama #2
69 # Slider untuk memperbarui fitur nilai #2
70 # <H4> Feature #3 name
71 # Slider untuk memperbarui fitur nilai #3
72 # <H2> Updated Prediction
73 #memanggil fungsi callback dengan nilai Slider sebagai input dan
Prediksi #sebagai Output
74
#11.menerapkan formating tataletak dasar HTML
75
app.layout = html.Div(style={'textAlign': 'center', 'width': '800px', '
76
font-family': 'Verdana'},
77
children=[
78
# Logika yang sama diterapkan pada nama / slider berikut
79
html.H1(children="Simulation Tool"),

Abdul Munif@2022 P a g e 26 |
28
Universal IoT berbasis Data Science

80 #meemanggil fungsi graph dengan parameter figur=fig_feature


81 important
82 dcc.Graph(figure=fig_features_importance),
83 # menampilkan nama fitur yang paling penting
84 html.H4(children=dropdown_1_label),
85 # Dash Slider dibuat sesuai dengan rentang Fitur #1
86 dcc.Slider(
87 id='X1_slider',
88 min=dropdown_1_min,
89 max=dropdown_1_max,
90 step=0.5,
91 value=dropdown_1_mean,
92
93 marks={i: '{}°C'.format(i) for i in range(dropdown_1_min, dropdown_1_ma
x+1)}),
94
#Logika yang sama diterapkan pada nama / slider berikut
95 html.H4(children=dropdown_2_label),
96
dcc.Slider(
97 id='X2_slider',
98
min=dropdown_2_min,
99 max=dropdown_2_max,
100
step=0.5,
101 value=dropdown_2_mean,
102
marks={i: '{} bars'.format(i) for i in range(dro
103 pdown_2_min, dropdown_2_max+1)}),
104 html.H4(children=dropdown_3_label),
105 dcc.Slider(
106 id='X3_slider',
107 min=dropdown_3_min,
108 max=dropdown_3_max,
109 step=0.1,
110 value=dropdown_3_mean,
111 marks={i: '{}'.format(i) for i in np.linspace(dr
112 opdown_3_min,dropdown_3_max,1+(dropdown_3_max-dropdown_3_min)*5)},),
113
114 #Hasil prediksi akan ditampilkan dan diperbarui di sini
115 html.H2(id="prediction_result"),])
116
117 #12.Fungsi callback akan memberikan satu "Output" berupa string
118 #(=children)
119 @app.callback(Output(component_id="prediction_result",component_propert
120 y="children"),
121 # The values correspnding to the three sliders are obtained by calling
their id and value property
122
[Input("X1_slider","value"), Input("X2_slider","value"),
123
Input("X3_slider","value")])
124
125
#13.Nilai yang sesuai dengan ketiga slider diperoleh dengan memanggil
126 properti id dan nilainya
127 def update_prediction(X1, X2, X3):
128
129 #14.membuat array NumPy dalam bentuk fitur asli
130 # ["Pressure","Viscosity","Particles_size", "Temperature","Inlet_flow",
131 "#Rotating_Speed","pH","Color_density"]
132 # Kecuali untuk X1, X2 dan X3, semua parameter non-mempengaruhi lainnya
133 #diatur ke rata-ratanya
input_X = np.array([X1,
Abdul Munif@2022 P a g e 27 |
28
Universal IoT berbasis Data Science

134 df["Viscosity"].mean(),
135 df["Particles_size"].mean(),
136 X2,
137 df["Inlet_flow"].mean(),
138 df["Rotating_Speed"].mean(),
139 X3,
140 df["Color_density"].mean()]).reshape(1,-1)
141
142 # Prediksi dihitung berdasarkan array input_X
143 prediction = model.predict(input_X)[0]
144 # mengembalikan nilai ke Output dari panggilan fungsi
145 return "Prediction: {}".format(round(prediction,1))
146
147 #15.Menjalankan server
148 if __name__ == "__main__":
149 app.run_server()
150

Abdul Munif@2022 P a g e 28 |
28

Anda mungkin juga menyukai