4 Menginisialisasi kmeans menjadi algoritma KMeans, dengan parameter yang diperlukan adalah berapa banyak cluster (n_cluster). Kemudian model K-means perlu dilatih dengan data input. kmeans = KMeans(n_clusters = 4) kmeans.fit(X) y_kmeans = kmeans.predict(X) plt.scatter(X[:, 0], X[:, 1], c = y_kmeans, s = 50, cmap = 'viridis') centers = kmeans.cluster_centers_ 5 Memplot dan memvisualisasikan temuan mesin berdasarkan data, dan melakukan penyesuaian sesuai dengan jumlah cluster yang akan ditemukan. plt.scatter(centers[:, 0], centers[:, 1], c = 'black', s = 200, alpha = 0.5); plt.show() Algoritma Mean Shift Algoritma Mean Shift adalah salah satu algoritma pengelompokan yang populer, yang digunakan dalam pembelajaran tanpa pengawasan (unsupervised learning). Algoritma mean shift tidak membuat asumsi apa pun karena merupakan algoritma non-parametrik. Algoritma ini juga disebut pengelompokan hierarkis atau analisis mean shift cluster. Berikut ini merupakan langkah dasar dari algoritma ini: Mulai dengan titik data yang ditugaskan pada cluster Menghitung centroid dan memperbarui lokasi centroid baru Dengan mengulangi proses ini, kita akan bergerak lebih dekat ke puncak cluster, yaitu menuju wilayah kepadatan yang lebih tinggi. Algoritma ini akan berhenti pada tahap dimana centroid tidak bergerak lagi Dengan kode program berikut, kita dapat menerapkan algoritma pengelompokan Mean Shift dengan Python dengan menggunakan modul Scikit-learn. 51
1 Mengimpor packages yang diperlukan import numpy as np from sklearn.cluster import MeanShiftimport matplotlib.pyplot as plt from matplotlib import style style.use(\"ggplot\") 2 Membuat dataset dua dimensi, yang berisi empat blob, dengan menggunakan make_blob dari paket sklearn.dataset. from sklearn.datasets.samples_generator import make_blobs 3 Memvisualisasikan dataset dengan kode program berikut: centers = [[2,2],[4,5],[3,10]] X, _ = make_blobs(n_samples = 500, centers = centers, cluster_std = 1) plt.scatter(X[:,0],X[:,1]) plt.show() 4 Melatih model cluster Mean Shift dengan data input ms = MeanShift() ms.fit(X) labels = ms.labels_ cluster_centers = ms.cluster_centers_ 5 Mencetak pusat cluster dan jumlah cluster yang diharapkan sesuai dengan input data print(cluster_centers) n_clusters_ = len(np.unique(labels)) print(\"Estimated clusters:\", n_clusters_) [[ 3.23005036 3.84771893] [ 3.02057451 9.88928991]] Estimated clusters: 2 52
6 Memplot dan memvisualisasikan temuan mesin berdasarkan data, dan melakukan penyesuaian terhadap jumlah cluster yang ditemukan colors = 10*['r.','g.','b.','c.','k.','y.','m.'] for i in range(len(X)): plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 10) plt.scatter(cluster_centers[:,0],cluster_centers[:,1], marker = \"x\",color = 'k', s = 150, linewidths = 5, zorder = 10) plt.show() Algoritma K-Nearest Neighbors Classifier K-Nearest Neighbors (KNN) classifier adalah model klasifikasi yang menggunakan algoritma tetangga terdekat untuk mengklasifikasikan titik data tertentu. Konsep dasar dari klasifikasi K- nearest Neighbor adalah menemukan bilangan yang telah ditentukan sebelumnya, yaitu 'k' dari sampel pelatihan yang jaraknya paling dekat dengan sampel baru, yang harus diklasifikasikan. Sampel baru akan mendapatkan label dari tetangga itu sendiri. Pengklasifikasi KNN memiliki konstanta yang ditentukan pengguna untuk jumlah tetangga yang harus ditentukan. Untuk jarak, standar jarak Euclidean adalah pilihan yang paling umum digunakan. Pengklasifikasi KNN bekerja langsung pada sampel yang dipelajari. Algoritma KNN adalah salah satu yang paling sederhana dari semua algoritma pembelajaran mesin. Algoritma ini cukup berhasil dalam sejumlah besar masalah klasifikasi dan regresi, misalnya pengenalan karakter atau analisis gambar. Contoh Kita akan membangun KNN classifier untuk mengenali angka, dimana dataset yang akan digunakan adalah dataset MNIST. Langkah pertama adalah mengimpor paket yang diperlukan, salah satunya adalah modul KNeighborsClassifier dari package sklearn.neighbors from sklearn.datasets import * import pandas as pd %matplotlib inline from sklearn.neighbors import KNeighborsClassifier import matplotlib.pyplot as plt import numpy as np 53
Menampilkan gambar digit untuk memverifikasi gambar apa yang harus diuji def Image_display(i): plt.imshow(digit['images'][i],cmap = 'Greys_r') plt.show() Memuat dataset MNIST. Sebenarnya ada total 1797 gambar tetapi yang digunakan pada contoh ini adalah 1600 gambar pertama sebagai sampel pelatihan dan 197 sisanya akan disimpan untuk proses pengujian. Kemudian menampilkan gambarnya. digit = load_digits() digit_d = pd.DataFrame(digit['data'][0:1600]) Image_display(0) Image_display(9) Membuat kumpulan data pelatihan dan pengujian, serta menyediakan kumpulan data pengujian ke KNN classifier. train_x = digit['data'][:1600] train_y = digit['target'][:1600] KNN = KNeighborsClassifier(20) KNN.fit(train_x,train_y) Output berikut akan membuat konstruktor KNN classifier KNeighborsClassifier(algorithm = 'auto', leaf_size = 30, metric = 'minkowski', metric_params = None, n_jobs = 1, n_neighbors = 20, p = 2, weights = 'uniform') Membuat sampel pengujian dengan memberikan angka sembarang yang lebih besar dari 1600, yang merupakan sampel pelatihan. test = np.array(digit['data'][1725]) test1 = test.reshape(1,-1)Image_display(1725) image_display(6) akan menampilkan angka 6 seperti berikut: 54
Selanjutnya adalah memprediksi data uji dengan cara sebagai berikut: KNN.predict(test1) Kode program di atas akan menghasilkan output: array([6]). Sedangkan kode program: digit['target_names'] akan menghasilkan output: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) Video Mengenai Clustering 55
Bab 8 NATURAL LANGUAGE PROCESSING TUJUAN PEMBELAJARAN Mampu memahami konsep natural language processing Mampu mengetahui komponen-komponen NLP Mampu mengetahui terminologi dan tahapan-tahapan pada NLP Natural Language Processing (NLP) mengacu pada metode kecerdasan buatan (AI) untuk berkomunikasi dengan sistem cerdas menggunakan bahasa alami seperti bahasa Inggris. Pemrosesan Bahasa Alami (natural language) diperlukan saat kita ingin sistem cerdas seperti robot bekerja sesuai dengan instruksi kita, saat kita ingin mendengar keputusan dari sistem pakar klinis berbasis dialog, dll. Bidang NLP dapat membuat komputer melakukan tugas dengan bahasa alami yang digunakan manusia. Input dan output dari sistem NLP dapat berupa suara maupun teks tertulis. Komponen NLP Pada bagian ini, kita akan belajar tentang berbagai komponen NLP. Ada dua komponen NLP, yaitu: Natural Language Understanding (NLU) NLU meliputi tugas-tugas berikut: Memetakan masukan yang diberikan dalam bahasa alami menjadi representasi yang bermanfaat Menganalisis berbagai aspek bahasa. NLU sangat kaya dalam bentuk dan struktur; namun dapat bersifat ambigu. Terdapat tingkat ambiguitas yang berbeda pada NLU, antara lain Ambiguitas leksikal (Lexical ambiguity) Terjadi pada tingkat yang sangat primitif seperti tingkat kata. Misalnya, memperlakukan kata \"board\" sebagai kata benda atau kata kerja? Ambiguitas tingkat sintaksis (Syntax level ambiguity) Sebuah kalimat dapat diuraikan dengan cara yang berbeda. Misalnya, \"Dia mengangkat kumbang dengan topi merah.\" Apakah dia menggunakan topi untuk mengangkat kumbang atau dia mengangkat kumbang yang memiliki topi merah? Ambiguitas referensial (Referential ambiguity) Mengacu pada sesuatu menggunakan kata ganti. Misalnya, Rima pergi ke Gauri. Dia berkata, \"Saya lelah.\" Tepatnya siapa yang lelah? 56
Natural Language Generation (NLG) NLG adalah proses menghasilkan frasa dan kalimat yang bermakna dalam bentuk bahasa alami dari beberapa representasi internal. NLG meliputi: Perencanaan teks (Text planning): termasuk mengambil konten yang relevan dari basis pengetahuan. Perencanaan kalimat (Sentence planning): termasuk memilih kata-kata yang diperlukan, membentuk frasa yang bermakna, dan mengatur nada kalimat. Realisasi Teks (Text Realization): pemetaan rencana kalimat ke dalam struktur kalimat. Terminologi NLP Berikut ini merupakan beberapa istilah penting dalam terminologi NLP: Fonologi (Phonology) - Ilmu yang mempelajari pengorganisasian bunyi secara sistematis. Morfologi (Morphology) - Studi tentang konstruksi kata-kata dari unit makna yang primitif. Morfem (Morpheme) - Unit makna primitif dalam suatu bahasa. Sintaks (Syntax) - Mengacu pada pengaturan kata-kata untuk membuat kalimat. Sintaks juga melibatkan penentuan peran struktural kata-kata dalam kalimat dan frasa. Semantik (Semantics) - Berkaitan dengan arti kata-kata dan bagaimana menggabungkan kata-kata menjadi frase dan kalimat yang bermakna. Pragmatik (Pragmatics) - Berkaitan dengan penggunaan dan pemahaman kalimat dalam situasi yang berbeda dan bagaimana interpretasi kalimat dipengaruhi. Wacana (Discourse) - Berkaitan dengan bagaimana kalimat sebelumnya dapat mempengaruhi interpretasi kalimat berikutnya. Pengetahuan Dunia (World Knowledge) - Mencakup pengetahuan umum tentang dunia. Tahapan pada NLP Bagian ini menunjukkan langkah-langkah yang berbeda dalam NLP. Analisis Leksikal (Lexical Analysis) Langkah ini melibatkan proses identifikasi dan analisis struktur kata-kata. Leksikon suatu bahasa berarti kumpulan kata dan frasa dalam suatu bahasa. Analisis leksikal adalah membagi seluruh potongan txt menjadi paragraf, kalimat, dan kata-kata. Analisis Sintaksis (Syntactic Analysis) Langkah ini melibatkan analisis kata-kata dalam kalimat untuk tata bahasa dan mengatur kata- kata dengan cara menunjukkan hubungan antara kata-kata. Kalimat seperti The school goes to boy\" akan ditolak oleh penganalisis sintaksis bahasa Inggris. 57
Analisis Semantik (Semantic Analysis) Langkah ini menarik makna yang tepat atau arti kamus dari teks. Teks diperiksa untuk kebermaknaannya. (meaningfulness) Hal ini dilakukan dengan memetakan struktur sintaksis dan objek dalam task domain. Penganalisis semantik akan mengabaikan kalimat seperti \"es krim panas\". Integrasi Wacana (Discourse Integration) Arti dari setiap kalimat tergantung pada arti dari kalimat sebelum itu. Selain itu, juga memunculkan makna kalimat langsung yang menggantikan. Analisis Pragmatis (Pragmatic Analysis) Selama ini, apa yang dikatakan akan ditafsirkan kembali tentang apa yang sebenarnya dimaksudkan. Langkah ini melibatkan penurunan aspek-aspek bahasa yang membutuhkan pengetahuan dunia nyata. Video Mengenai NLP 58
Bab 9 NLTK PACKAGE TUJUAN PEMBELAJARAN Mampu mengetahui tujuan dan manfaat penggunaan NLTK Package Mampu memahami konsep Tokenization, Stemming, and Lemmatization Mampu menggunakan NLTK package pada Python untuk bidang NLP Pada bab ini, kita akan belajar bagaimana menggunakan Natural Language Toolkit (NLTK) Package. Jika kita ingin membangun aplikasi dengan pemrosesan Bahasa Alami (Natural Language), maka perubahan konteks membuatnya paling sulit. Faktor konteks mempengaruhi bagaimana mesin memahami kalimat tertentu. Oleh karena itu, kita perlu mengembangkan aplikasi bahasa alami dengan menggunakan pendekatan pembelajaran mesin agar mesin juga dapat memahami cara manusia memahami konteksnya. Untuk membangun aplikasi tersebut kita akan menggunakan paket Python yang disebut NLTK (Natural Language Toolkit Package). Mengimpor NLTK Kita perlu menginstal NLTK sebelum menggunakannya. NLTK dapat diinstal dengan bantuan perintah berikut: pip instal nltk Untuk membangun conda package untuk NLTK, gunakan perintah berikut conda install -c anaconda nltk Setelah menginstal paket NLTK, kita perlu mengimpornya melalui command prompt python. Kita dapat mengimpornya dengan menulis perintah berikut pada prompt perintah Python >>> import nltk Mengunduh Data NLTK Setelah mengimpor NLTK, kita perlu mengunduh data yang diperlukan. Hal itu dapat dilakukan dengan bantuan perintah berikut pada prompt perintah Python >>> nltk.download() Menginstall Paket (Package) Lain yang Diperlukan Untuk membangun aplikasi pemrosesan bahasa alami dengan menggunakan NLTK, kita perlu menginstal paket yang diperlukan. Paket-paketnya adalah sebagai berikut 59
gensim - adalah pustaka pemodelan semantik yang berguna untuk banyak aplikasi. Kita dapat menginstalnya dengan menjalankan perintah berikut pip install gensim pattern - adalah pustaka yang digunakan untuk membuat paket gensim berfungsi dengan baik. Kita dapat menginstalnya dengan menjalankan perintah berikut: pip install pattern Konsep Tokenization, Stemming, and Lemmatization Tokenization Tokenization dapat didefinisikan sebagai proses memecah teks yang diberikan, yaitu urutan karakter menjadi unit yang lebih kecil yang disebut token. Token dapat berupa kata, angka, atau tanda baca. Tokenization juga disebut segmentasi kata. Berikut ini adalah contoh sederhana dari tokenization Input - Mango, banana, pineapple and apple all are fruits Output - Proses pemecahan teks yang diberikan dapat dilakukan dengan bantuan menemukan batas kata (word boundaries). Akhir kata dan awal kata dapat disebut batas kata. Sistem penulisan dan struktur tipografi kata mempengaruhi batas. Dalam modul Python NLTK, kita memiliki paket berbeda yang terkait dengan tokenisasi yang dapat digunakan untuk membagi teks menjadi token sesuai kebutuhan. Beberapa paket tersebut adalah sebagai berikut: sent_tokenize package - Seperti namanya, paket ini akan membagi teks input menjadi kalimat. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut: from nltk.tokenize import sent_tokenize word_tokenize package - Paket ini membagi teks input menjadi kata-kata serta tanda baca. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut: from nltk.tokenize import WordPuncttokenizer Stemming Saat bekerja dengan kata-kata, kita menemukan banyak variasi karena alasan tata bahasa. Konsep variasi di sini berarti kita harus berhadapan dengan berbagai bentuk kata yang sama seperti democracy, democratic, dan democratization. Sangat penting bagi mesin untuk memahami bahwa kata-kata yang berbeda ini memiliki bentuk dasar yang sama. Dengan cara ini, akan berguna untuk mengekstrak bentuk dasar dari kata-kata saat kita menganalisis teks. Kita dapat mencapai hal ini dengan melakukan stemming. Dapat dikatakan bahwa stemming adalah proses heuristik untuk mengekstraksi bentuk dasar kata dengan memotong ujung kata. Modul Python NLTK memiliki paket berbeda yang terkait dengan stemming. Paket-paket ini dapat digunakan untuk mendapatkan bentuk dasar dari kata. Beberapa paketnya adalah sebagai berikut 60
PorterStemmer package - Paket Python ini menggunakan algoritma Porter untuk mengekstrak bentuk dasar. Misalnya, jika kita akan memberikan kata 'writing' sebagai input untuk stemmer ini, kita akan mendapatkan kata 'write' setelah stemming. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut from nltk.stem.porter import PorterStemmer LancasterStemmer package - Paket Python ini akan menggunakan algoritma Lancaster untuk mengekstrak bentuk dasar. Misalnya, jika kita akan memberikan kata 'writing' sebagai input untuk stemmer ini, kita akan mendapatkan kata 'write' setelah stemming. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut from nltk.stem.lancaster import LancasterStemmer SnowballStemmer package - Paket Python ini akan menggunakan algoritma snowball’s untuk mengekstrak bentuk dasar. Misalnya, jika kita akan memberikan kata 'writing' sebagai input untuk stemmer ini, kita akan mendapatkan kata 'write' setelah stemming. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut from nltk.stem.snowball import SnowballStemmer Semua algoritma ini memiliki tingkat keketatan yang berbeda. Jika kita membandingkan ketiga stemmer ini maka stemmer Porter adalah yang paling tidak ketat (least strict) dan Lancaster yang paling ketat (strict). Stemmer snowball baik digunakan dalam hal kecepatan dan juga keketatan. Lemmatization Kita dapat mengekstrak bentuk dasar kata dengan lemmatisasi. Pada dasarnya lemmatization melakukan tugas ini dengan penggunaan kosakata dan analisis morfologis kata, biasanya bertujuan untuk menghilangkan akhiran infleksional saja. Bentuk dasar dari kata apa pun disebut lemma. Perbedaan utama antara stemming dan lemmatization adalah penggunaan kosakata dan analisis morfologis kata-kata. Perbedaan lainnya adalah bahwa stemming paling sering menciutkan kata-kata yang terkait secara turunan sedangkan lemmatisasi biasanya hanya menciutkan bentuk infleksi yang berbeda dari lemma. Misalnya, jika kita memberikan kata saw sebagai kata input, maka stemming mungkin mengembalikan kata 's' tetapi lemmatization akan mencoba mengembalikan kata see atau saw tergantung pada apakah penggunaan token adalah kata kerja atau kata benda. Modul Python NLTK memiliki paket berikut yang terkait dengan proses lemmatisasi yang dapat digunakan untuk mendapatkan bentuk dasar kata: WordNetLemmatizer package - Paket Python ini akan mengekstrak bentuk dasar kata tergantung pada apakah kata tersebut digunakan sebagai kata benda atau sebagai kata kerja. Kita dapat mengimpor paket ini dengan bantuan kode Python berikut from nltk.stem import WordNetLemmatizer 61
Chunking: Membagi Data menjadi Potongan Chunking adalah salah satu proses penting dalam pemrosesan bahasa alami. Tugas utama dari chunking adalah untuk mengidentifikasi bagian-bagian dari suara dan frase pendek seperti frase kata benda. Kita telah mempelajari proses tokenization dan pembuatan token. Chunking pada dasarnya adalah pelabelan pada token tersebut. Dengan kata lain, chunking akan menunjukkan kepada kita struktur kalimat. Tipe Chunking Terdapat dua jenis chunking, yaitu: Chunking up - Dalam proses chunking ini, objek, benda, dll berpindah ke arah yang lebih umum dan bahasa menjadi lebih abstrak. Dalam proses ini dilakukan 'zoom out'. Misalnya, jika kita akan melakukan chunking up terhadap pertanyaan: \"untuk tujuan apa mobil itu\"? Kita mungkin mendapatkan jawaban \"transportasi\". Chunking down - Dalam proses chunking ini, objek, benda, dll. bergerak ke arah yang lebih spesifik dan bahasa menjadi lebih terpenetrasi. Struktur yang lebih dalam akan diperiksa pada chunking down. Dalam proses ini dilakukan 'zoom in'. Misalnya, jika kita akan melakukan chunking down terhadap pertanyaan \"Ceritakan secara spesifik tentang mobil\"? Kita akan mendapatkan informasi yang lebih kecil tentang mobil. Contoh Dalam contoh ini, kita akan melakukan chunking Noun-Phrase, sebuah kategori chunking yang akan menemukan potongan frase kata benda dalam kalimat, dengan menggunakan modul NLTK di Python Ikuti langkah-langkah berikut untuk menerapkan potongan frase kata benda: Langkah 1 - Pada langkah ini, kita perlu mendefinisikan tata bahasa untuk chunking yang terdiri dari aturan-aturan yang harus kita ikuti. Langkah 2 - Pada langkah ini, kita perlu membuat parser chunk yang akan mengurai tata bahasa dan memberikan output. Langkah 3 - Pada langkah terakhir ini, output yang dihasilkan dalam format pohon. 1 Impor paket NLTK yang diperlukan sebagai berikut: import nltk 2 Mendefinisikan kalimat. Pada kode program berikut, DT berarti determinant (penentu), VBP berarti verb (kata kerja), JJ berarti adjective (kata sifat), IN berarti preposition (kata depan), dan NN berarti noun (kata benda). sentence=[(\"a\",\"DT\"),(\"clever\",\"JJ\"),(\"fox\",\"NN\"),(\"was\",\"VBP\"), (\"jumping\",\"VBP\"),(\"over\",\"IN\"),(\"the\",\"DT\"),(\"wall\",\"NN\")] 3 Memberikan tata bahasa (grammar). Pada tahap ini kita akan memberikan tata bahasa dalam bentuk ekspresi reguler. grammar = \"NP:{<DT>?<JJ>*<NN>}\" 62
4 mendefinisikan parser yang akan mengurai tata bahasa parser_chunking = nltk.RegexpParser(grammar) 5 Parser mengurai kalimat sebagai berikut parser_chunking.parse(sentence) 6 Mendapatkan output. Output dihasilkan dalam variabel sederhana yang disebut output_chunk Output_chunk = parser_chunking.parse(sentence) 7 Setelah mengeksekusi kode berikut, kita dapat menggambar output dalam bentuk pohon. output.draw() Bag of Word (BoW) Model Bag of Word (BoW) adalah sebuah model dalam pemrosesan bahasa alami, yang pada dasarnya digunakan untuk mengekstrak fitur dari teks sehingga teks dapat digunakan dalam pemodelan seperti dalam algoritma pembelajaran mesin. Sekarang muncul pertanyaan mengapa kita perlu mengekstrak fitur dari teks. Hal ini dikarenakan algoritma pembelajaran mesin tidak dapat bekerja dengan data mentah dan mereka membutuhkan data numerik sehingga dapat mengekstrak informasi yang berarti dari data tersebut. Konversi data teks menjadi data numerik disebut ekstraksi fitur atau pengkodean fitur. BoW model adalah pendekatan yang sangat sederhana untuk mengekstraksi fitur dari teks. Misalkan kita memiliki dokumen teks dan ingin mengubahnya menjadi data numerik atau ingin mengekstrak fitur darinya, maka pertama-tama model ini mengekstrak kosakata dari semua kata dalam dokumen. Kemudian dengan menggunakan matriks term dokumen akan dibangun sebuah model. Dengan cara ini, BoW merepresentasikan dokumen sebagai sekantong kata saja. Informasi apa pun tentang urutan atau struktur kata dalam dokumen akan dibuang. Konsep Document Term Matrix Algoritma BoW membangun model dengan menggunakan matriks istilah dokumen (document term matrix). Seperti namanya, document term matrix adalah matriks dari berbagai jumlah kata yang muncul dalam sebuah dokumen. Dengan bantuan matriks ini, dokumen teks dapat direpresentasikan sebagai kombinasi berbobot dari berbagai kata. Dengan menetapkan ambang batas dan memilih kata-kata yang lebih bermakna, kita dapat membangun histogram dari semua kata dalam dokumen yang dapat digunakan sebagai vektor fitur. Berikut ini adalah contoh untuk memahami konsep document term matrix. 63
Contoh Misalkan kita memiliki dua kalimat berikut Kalimat 1 - We are using the Bag of Words model Kalimat 2 - Bag of Words model is used for extracting the features. Dengan mempertimbangkan dua kalimat ini kita memiliki 13 kata berbeda berikut: we are using the bag of words model is used for extracting features Sekarang, kita perlu membuat histogram untuk setiap kalimat dengan menggunakan jumlah kata di setiap kalimat Kalimat 1 - [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0] Kalimat 2 - [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] Dengan cara ini, kita memiliki vektor fitur yang telah diekstraksi. Setiap vektor fitur adalah 13- dimensi karena terdapat 13 kata yang berbeda. Konsep Statistik Konsep statistik ini disebut TermFrequency-Inverse Document Frequency (tf-idf). Setiap kata penting dalam sebuah dokumen. Statistik dapat membantu dalam memahami pentingnya setiap kata. Term Frequency (tf) Merupakan ukuran seberapa sering setiap kata muncul dalam dokumen. TF dapat diperoleh dengan membagi jumlah setiap kata dengan jumlah total kata dalam dokumen yang diberikan. Inverse Document Frequency (idf) Merupakan ukuran seberapa unik sebuah kata untuk sebuah dokumen dalam kumpulan dokumen yang diberikan. Untuk menghitung idf dan merumuskan vektor fitur, kita perlu mengurangi bobot kata yang sering muncul dan menimbang kata yang jarang muncul. 64
Bab 10 ALGORITMA GENETIKA TUJUAN PEMBELAJARAN Mampu memahami konsep Algoritma Genetika Mampu mengimplementasikan Algoritma Genetika untuk masalah optimasi menggunakan Python Algoritma Genetika / Genetic Algorithms (GAs) adalah algoritma berbasis pencarian yang didasarkan pada konsep seleksi alam dan genetika. GA adalah bagian dari cabang komputasi yang jauh lebih besar yang dikenal sebagai Evolutionary Computation. GA dikembangkan oleh John Holland dan mahasiswa serta rekan-rekannya di University of Michigan, terutama David E. Goldberg. Sejak itu, GA telah dicoba pada berbagai masalah optimasi dengan tingkat keberhasilan yang tinggi. GA memiliki kumpulan solusi yang dapat digunakan untuk masalah yang diberikan. Solusi- solusi ini kemudian mengalami rekombinasi dan mutasi (seperti dalam genetika alami), menghasilkan anak-anak baru, dan proses ini berulang untuk berbagai generasi. Setiap individu (atau kandidat solusi) diberi nilai kebugaran / fitness value (berdasarkan nilai fungsi tujuannya) dan individu yang lebih bugar diberi kesempatan yang lebih tinggi untuk kawin dan menghasilkan individu yang lebih bugar. Hal ini sejalan dengan Darwinian Theory of Survival of the Fittest . Dengan demikian, ia terus mengembangkan individu atau solusi yang lebih baik dari generasi ke generasi, hingga mencapai kondisi untuk berhenti. Algoritma Genetika diacak untuk mencari solusi optimal, tetapi performanya jauh lebih baik daripada pencarian acak lokal karena mereka juga mengeksploitasi informasi historis. Cara Menggunakan GA untuk Masalah Optimasi Optimasi adalah tindakan membuat desain, situasi, sumber daya dan sistem, seefektif mungkin. Diagram blok berikut menunjukkan proses optimasi Tahapan mekanisme GA untuk proses optimasi Berikut adalah urutan langkah-langkah mekanisme GA saat digunakan untuk optimasi sebuah masalah: Langkah 1 - Hasilkan populasi awal secara acak. Langkah 2 - Pilih solusi awal dengan nilai fitness terbaik. Langkah 3 - Menggabungkan kembali solusi yang dipilih menggunakan operator mutasi dan crossover. Langkah 4 - Masukkan keturunan ke dalam populasi. Langkah 5 - Jika kondisi berhenti terpenuhi, kembalikan solusi dengan nilai fitness terbaiknya. Jika tidak, lanjutkan ke langkah 2. 65
1 Menginstall paket yang diperlukan. Untuk memecahkan masalah dengan menggunakan Algoritma Genetika dengan Python, kita akan menggunakan paket untuk GA yang disebut DEAP. Kita dapat menginstal paket ini dengan bantuan perintah berikut pada command prompt pip install deap 2 Menerapkan Solusi menggunakan Algoritma Genetika Contoh berikut menunjukkan cara menghasilkan string bit yang akan berisi 15 string, berdasarkan masalah One Max . Impor paket yang diperlukan: import random from deap import base, creator, tools Tentukan fungsi evaluasi. Ini adalah langkah pertama untuk membuat algoritma genetika. def eval_func(individual): target_sum = 15 return len(individual) - abs(sum(individual) - target_sum), Buat toolbox dengan parameter yang tepat def create_toolbox(num_bits): creator.create(\"FitnessMax\", base.Fitness, weights=(1.0,)) creator.create(\"Individual\", list, fitness=creator.FitnessMax) Inisialisasi toolbox: toolbox = base.Toolbox() toolbox.register(\"attr_bool\", random.randint, 0, 1) toolbox.register(\"individual\", tools.initRepeat, creator.Individual, toolbox.attr_bool, num_bits) toolbox.register(\"population\", tools.initRepeat, list, toolbox.individual) Daftarkan operator evaluasi, operator crossover, operator mutasi, Tentukan operator untuk breeding: toolbox.register(\"evaluate\", eval_func) toolbox.register(\"mate\", tools.cxTwoPoint) toolbox.register(\"mutate\", tools.mutFlipBit, indpb = 0.05) toolbox.register(\"select\", tools.selTournament, tournsize = 3) return toolbox if __name__ == \"__main__\": num_bits = 45 toolbox = create_toolbox(num_bits) random.seed(7) population = toolbox.population(n = 500) probab_crossing, probab_mutating = 0.5, 0.2 num_generations = 10 print('\\nEvolution process starts') 66
Evaluasi seluruh populasi fitnesses = list(map(toolbox.evaluate, population)) for ind, fit in zip(population, fitnesses): ind.fitness.values = fit print('\\nEvaluated', len(population), 'individuals') Buat dan ulangi dari generasi ke generasi for g in range(num_generations): print(\"\\n- Generation\", g) Memilih individu generasi berikutnya offspring = toolbox.select(population, len(population)) Kloning individu yang dipilih offspring = list(map(toolbox.clone, offspring)) Terapkan crossover dan mutasi pada keturunannya for child1, child2 in zip(offspring[::2], offspring[1::2]): if random.random() < probab_crossing: toolbox.mate(child1, child2) Hapus nilai fitness pada anak del child1.fitness.values del child2.fitness.values Terapkan mutasi for mutant in offspring: if random.random() < probab_mutating: toolbox.mutate(mutant) del mutant.fitness.values Evaluasi individu dengan fitness yang tidak valid invalid_ind = [ind for ind in offspring if not ind.fitness.valid] fitnesses = map(toolbox.evaluate, invalid_ind) for ind, fit in zip(invalid_ind, fitnesses): ind.fitness.values = fit print('Evaluated', len(invalid_ind), 'individuals') Ganti populasi dengan individu generasi berikutnya population[:] = offspring Cetak statistik untuk generasi saat ini fits = [ind.fitness.values[0] for ind in population] length = len(population) mean = sum(fits) / length sum2 = sum(x*x for x in fits) std = abs(sum2 / length - mean**2)**0.5 print('Min =', min(fits), ', Max =', max(fits)) print('Average =', round(mean, 2), ', Standard deviation =', round(std, 2)) print(\"\\n- Evolution ends\") 67
Cetak hasil akhir best_ind = tools.selBest(population, 1)[0] print('\\nBest individual:\\n', best_ind) print('\\nNumber of ones:', sum(best_ind)) Following would be the output: Evolution process starts Evaluated 500 individuals - Generation 0 Evaluated 295 individuals Min = 32.0 , Max = 45.0 Average = 40.29 , Standard deviation = 2.61 - Generation 1 Evaluated 292 individuals Min = 34.0 , Max = 45.0 Average = 42.35 , Standard deviation = 1.91 - Generation 2 Evaluated 277 individuals Min = 37.0 , Max = 45.0 Average = 43.39 , Standard deviation = 1.46 ………… - Generation 9 Evaluated 299 individuals Min = 40.0 , Max = 45.0 Average = 44.12 , Standard deviation = 1.11 - Evolution ends Best individual: [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1] Number of ones: 15 Video Mengenai Algoritma Genetika 68
Bab 11 COMPUTER VISION TUJUAN PEMBELAJARAN Mampu memahami konsep computer vision dan perbedaannya dengan pengolahan citra digital Mampu mengimplementasikan pustaka OpenCV pada Python Computer Vision (Visi komputer) berkaitan dengan pemodelan dan replikasi visi manusia menggunakan perangkat lunak dan perangkat keras komputer. Computer vision adalah disiplin ilmu yang mempelajari cara merekonstruksi, menginterupsi, dan memahami objek 3D dari gambar 2D-nya. Pada bab ini, Kita akan belajar secara rinci mengenai hal ini. Hirarki Visi Komputer Visi komputer dibagi menjadi tiga kategori dasar sebagai berikut Penglihatan tingkat rendah (Low-level vision) - mencakup pemrosesan citra untuk ekstraksi fitur. Penglihatan tingkat menengah (Intermediate-level vision) - mencakup pengenalan objek dan interpretasi objek 3D Visi tingkat tinggi (High-level vision) - mencakup deskripsi konseptual dari sebuah adegan seperti aktivitas, niat dan perilaku. Computer Vision Vs Image Processing Pengolahan citra (image processing) mempelajari transformasi citra dan menghasilkan citra. Input dan output dari pengolahan citra sama-sama berupa citra. Computer vision adalah konstruksi deskripsi eksplisit dan bermakna dari objek fisik dari gambar mereka. Output dari computer vision adalah deskripsi atau interpretasi struktur dalam adegan 3D. Aplikasi Berikut ini merupakan beberapa contoh aplikasi computer vision di beberapa bidang: Robotika Robotika cerdas untuk Lokalisasi-menentukan lokasi robot secara otomatis Navigasi Penghindaran rintangan Perakitan (peg-in-hole, pengelasan, pengecatan) Manipulasi (misalnya manipulator robot PUMA) Interaksi Robot Manusia (Human Robot Interaction/HRI): berinteraksi dan melayani orang 69
Medis Klasifikasi dan deteksi (misalnya klasifikasi sel dan deteksi tumor) Segmentasi 2D/3D Rekonstruksi organ manusia 3D (MRI atau ultrasound) Operasi robotika yang dipandu penglihatan Keamanan Biometrik (iris mata, sidik jari, pengenalan wajah) Pengawasan-mendeteksi aktivitas atau perilaku mencurigakan tertentu Transportasi Kendaraan otonom Keselamatan, misalnya, pemantauan kewaspadaan pengemudi Aplikasi Otomasi Industri Inspeksi industri (deteksi cacat) Perakitan Pembacaan kode batang dan label paket Penyortiran objek Pemahaman dokumen (misalnya OCR) Computer Vision dengan Python Instalasi Pustaka (Package) Implementasi Computer vision pada Python dapat menggunakan library populer yang disebut OpenCV (Open Source Computer Vision). OpenCV adalah library yang berfungsi untuk pemrograman, dimana tujuan utamanya adalah untuk Computer vision yang bersifat real time. OpenCV ditulis dalam bahasa C++ dan antarmuka utamanya juga dalam bahasa C++. Kita dapat menginstal paket ini dengan bantuan perintah berikut pip install opencv_python-X.X-cp36-cp36m-winX.whl Di sini X mewakili versi Python yang diinstal pada mesin serta win32 atau 64 bit yang dimiliki. Jika menggunakan anaconda , gunakan perintah berikut untuk menginstal OpenCV conda install -c conda-forge opencv Membaca, Menulis, dan Menampilkan Gambar Sebagian besar aplikasi CV perlu mendapatkan gambar sebagai input dan menghasilkan gambar sebagai output. Di bagian ini, kita akan mempelajari cara membaca dan menulis file gambar dengan bantuan fungsi yang disediakan oleh OpenCV. OpenCV menyediakan fungsi berikut untuk tujuan ini fungsi imread() - fungsi untuk membaca gambar. OpenCV imread() mendukung berbagai format gambar seperti PNG, JPEG, JPG, TIFF, dll. fungsi imshow() - fungsi untuk menampilkan gambar di window. Window secara otomatis sesuai dengan ukuran gambar. OpenCV imshow() mendukung berbagai format gambar seperti PNG, JPEG, JPG, TIFF, dll. fungsi imwrite() - fungsi untuk menulis gambar. OpenCV imwrite() mendukung berbagai format gambar seperti PNG, JPEG, JPG, TIFF, dll. 70
Contoh Contoh ini menunjukkan kode Python untuk membaca gambar dalam satu format, menampilkannya di window, dan menulis gambar yang sama dalam format lain. Berikut adalah langkah-langkah implementasinya: 1 Impor paket OpenCV import cv2 2 Membaca gambar tertentu dengan fungsi imread() image = cv2.imread('image_flower.jpg') 3 Menampilkan gambar menggunakan fungsi imshow() . Nama window tempat kita dapat melihat gambar adalah image_flower . cv2.imshow('image_flower',image) cv2.destroyAllwindows() 4 Menulis gambar yang sama ke dalam format lain, misalnya .png dengan menggunakan fungsi imwrite() cv2.imwrite('image_flower.png',image) Output True berarti gambar telah berhasil ditulis sebagai file .png juga dalam folder yang sama. Konversi Warna Di OpenCV, gambar tidak disimpan dengan menggunakan warna RGB konvensional, melainkan disimpan dalam urutan terbalik yaitu dalam urutan BGR. Oleh karena itu kode warna default saat membaca gambar adalah BGR. Fungsi konversi warna cvtColor() untuk mengonversi gambar dari satu kode warna ke kode warna lainnya. Contoh Contoh berikut ini digunakan untuk mengonversi gambar dari BGR ke skala abu-abu. 1 Impor paket OpenCV import cv2 71
2 Membaca gambar tertentu menggunakan fungsi imread() image = cv2.imread('penguins.jpg') 3 Jika kita melihat gambar ini menggunakan fungsi imshow() , maka kita dapat melihat bahwa gambar ini dalam BGR cv2.imshow('BGR_Penguins',image) 4 Gunakan fungsi cvtColor() untuk mengonversi gambar ini menjadi skala abu-abu. image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow('gray_penguins',image) Deteksi Tepi (Edge Detection) Manusia, setelah melihat sketsa kasar, dapat dengan mudah mengenali banyak jenis objek dan posenya. Itulah sebabnya tepi memainkan peran penting dalam kehidupan manusia serta dalam aplikasi visi komputer. OpenCV menyediakan fungsi yang sangat sederhana dan berguna yang disebut Canny() untuk mendeteksi tepi. Contoh Contoh berikut menunjukkan identifikasi tepi yang jelas. 72
1 Impor paket OpenCV import cv2 import numpy as np 2 Membaca gambar tertentu menggunakan fungsi imread() image = cv2.imread('penguins.jpg') 3 Gunakan fungsi Canny() untuk mendeteksi tepi gambar yang sudah dibaca. cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300)) 4 Menampilkan gambar dengan tepi menggunakan fungsi imshow() cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’)) Program Python ini akan membuat gambar bernama edge_penguins.jpg dengan deteksi tepi. Face Detection Deteksi wajah adalah salah satu aplikasi menarik dari visi komputer yang membuatnya lebih realistis dan juga futuristik. OpenCV memiliki fasilitas built-in untuk melakukan deteksi wajah. Pada percobaan akan menggunakan pengklasifikasi Haar Cascade untuk deteksi wajah. Diperlukan data untuk menggunakan pengklasifikasi Haar Cascade. Anda dapat menemukan data ini dalam paket OpenCV. Setelah menginstal OpenCv, Anda dapat melihat nama folder haarcascades. Akan ada file .xml untuk aplikasi yang berbeda. Sekarang, salin semuanya untuk penggunaan yang berbeda dan paste di folder baru di bawah proyek saat ini. Contoh Berikut ini adalah kode Python menggunakan Haar Cascade untuk mendeteksi wajah Amitabh Bachan yang ditunjukkan pada gambar berikut: 73
1 Impor paket OpenCV import cv2 import numpy as np 2 Gunakan HaarCascadeClassifier untuk mendeteksi wajah face_detection= cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/ haarcascade_frontalface_default.xml') 3 Untuk membaca gambar tertentu, gunakan fungsi imread () img = cv2.imread('AB.jpg') 4 Ubah menjadi skala abu-abu karena akan menerima gambar abu-abu gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 5 Menggunakan face_detection.detectMultiScale untuk melakukan deteksi wajah yang sebenarnya faces = face_detection.detectMultiScale(gray, 1.3, 5) 6 Menggambar persegi panjang di sekitar seluruh wajah for (x,y,w,h) in faces: img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3) cv2.imwrite('Face_AB.jpg',img) Program Python ini akan membuat gambar bernama Face_AB.jpg dengan deteksi wajah seperti yang ditunjukkan berikut: 74
Bab 12 DEEP LEARNING TUJUAN PEMBELAJARAN Mampu mengetahui konsep deep learning Mampu memahami konsep dan arsitektur Convolutional Neural Network (CNN) Mampu mengimplementasikan deep learning pada Python Jaringan Syaraf Tiruan (JST) adalah sistem komputasi yang efisien, yang tema sentralnya dipinjam dari analogi jaringan syaraf biologis. Jaringan syaraf tiruan adalah salah satu jenis model untuk pembelajaran mesin. Pada pertengahan 1980-an dan awal 1990-an, banyak kemajuan penting di bidang arsitektur pada jaringan saraf. Dalam bab ini, kita akan mempelajari lebih lanjut tentang Deep Learning, sebuah pendekatan pada kecerdasan buatan. Deep Learning muncul dari pertumbuhan komputasi eksplosif. Dengan demikian, Deep Learning adalah jenis pembelajaran mesin yang algoritmanya terinspirasi oleh struktur dan fungsi otak manusia. Pembelajaran Mesin vs Deep Learning Deep Learning adalah teknik pembelajaran mesin yang paling kuat (powerful) saat ini. Deep learning dikatakan sangat kuat karena metode ini belajar cara terbaik untuk mewakili sebuah permasalahan sambil belajar bagaimana memecahkan masalah tersebut. Perbandingan antara Deep learning dan Machine learning adalah: Ketergantungan Data Titik perbedaan pertama didasarkan pada kinerja DL dan ML ketika skala data meningkat. Ketika datanya besar, algoritma deep learning bekerja dengan sangat baik. Ketergantungan Mesin Algoritma Deep Learning membutuhkan mesin kelas atas (high-end) untuk bekerja dengan sempurna. Di sisi lain, algoritma pembelajaran mesin juga dapat bekerja pada mesin kelas bawah (low-end). Ekstraksi Fitur Algoritma Deep Learning dapat mengekstrak fitur tingkat tinggi (high level feature). Di sisi lain, seorang ahli /pakar diperlukan untuk mengidentifikasi sebagian besar fitur yang diekstraksi oleh pembelajaran mesin. Waktu Eksekusi Waktu eksekusi tergantung pada banyak parameter yang digunakan dalam suatu algoritma. Deep Learning memiliki lebih banyak parameter daripada algoritma pembelajaran mesin. Oleh karena itu, waktu eksekusi algoritma DL, khususnya waktu pelatihan, jauh lebih banyak daripada algoritma ML. Tetapi waktu pengujian algoritma DL lebih sedikit daripada algoritma ML. Pendekatan untuk Pemecahan Masalah Deep Learning memecahkan masalah dari ujung ke ujung, sementara pembelajaran mesin menggunakan cara tradisional untuk memecahkan masalah yaitu dengan memecahnya menjadi beberapa bagian. 75
Convolutional Neural Network (CNN) Jaringan saraf convolutional (Convolutional Neural Network / CNN) sama dengan jaringan saraf biasa karena mereka juga terdiri dari neuron yang memiliki bobot dan bias yang dapat dipelajari. Jaringan saraf biasa mengabaikan struktur data input dan semua data diubah menjadi array 1-D sebelum memasukkannya ke dalam jaringan. Proses ini sesuai dengan data pada umumnya, namun jika data berisi gambar, prosesnya mungkin rumit. CNN memecahkan masalah ini dengan mudah, dimana CNN memperhitungkan struktur 2D gambar saat memprosesnya, yang memungkinkannya mengekstrak properti khusus untuk gambar. Dengan cara ini, tujuan utama CNN adalah beralih dari data gambar mentah di lapisan input ke kelas yang benar di lapisan output. Satu-satunya perbedaan antara NN yang tidak deep dan CNN adalah dalam perlakuan data input dan jenis lapisannya. Arsitektur CNN Secara arsitektur, jaringan saraf biasa menerima input dan mengubahnya melalui serangkaian lapisan tersembunyi. Setiap lapisan terhubung ke lapisan lain dengan bantuan neuron. Kerugian utama dari jaringan saraf yang tidak deep adalah bahwa mereka tidak menskalakan dengan baik ke gambar penuh. Arsitektur CNN memiliki neuron yang tersusun dalam 3 dimensi yang disebut lebar, tinggi dan kedalaman. Setiap neuron di lapisan saat ini terhubung ke patch kecil dari output dari lapisan sebelumnya. Ini mirip dengan overlay filter������ pada gambar input. Ini menggunakan filter M untuk memastikan mendapatkan semua detail. Filter M ini adalah ekstraktor fitur yang mengekstrak fitur seperti tepi, sudut, dan lain-lain. Lapisan yang digunakan untuk membangun CNN Lapisan berikut digunakan untuk membangun CNN: Input Layer - Dibutuhkan data gambar mentah. Convolutional Layer - Layer ini adalah blok bangunan inti CNN yang melakukan sebagian besar komputasi. Lapisan ini menghitung konvolusi antara neuron dan berbagai patch di input. Rectified Linear Unit - Layer Ini menerapkan fungsi aktivasi ke output dari lapisan sebelumnya. Layer ini menambahkan non-linearitas ke jaringan sehingga dapat digeneralisasi dengan baik ke semua jenis fungsi. 76
Pooling Layer - Pooling membantu kita untuk menyimpan hanya bagian-bagian penting saat kita maju dalam jaringan. Pooling layer beroperasi secara independen pada setiap irisan kedalaman input dan mengubah ukurannya secara spasial. Ini menggunakan fungsi MAX. Fully Connected layer/Output layer - Layer ini menghitung skor output pada layer terakhir. Output yang dihasilkan berukuran ������������ , di mana L adalah jumlah kelas dataset pelatihan. Instalasi Pustaka Python Kita dapat menggunakan Keras , yang merupakan API jaringan saraf tingkat tinggi, yang ditulis dengan Python dan mampu berjalan di atas TensorFlow dan CNTK. Pustaka ini kompatibel dengan Python 2.7-3.6. Kita dapat mempelajarinya lebih lanjut dari https://keras.io/ . Gunakan perintah berikut untuk menginstal keras pip install keras Membangun Regresor Linier menggunakan ANN Di bagian ini, kita akan mempelajari cara membangun regresi linier menggunakan jaringan saraf tiruan. Kita dapat menggunakan KerasRegressor untuk mengimplementasikannya. Dalam contoh ini, kita menggunakan kumpulan data harga rumah Boston dengan 13 numerik untuk properti di Boston. Kode Python untuk implementasi kasus ini adalah sebagai berikut: 1 Impor semua paket yang diperlukan import numpy import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasRegressor from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold 2 Muat dataset yang disimpan di direktori lokal dataframe = pandas.read_csv(\"/Usrrs/admin/data.csv\", delim_whitespace = True, header = None) dataset = dataframe.values 3 Bagi data menjadi variabel input dan output yaitu X dan Y X = dataset[:,0:13] Y = dataset[:,13] 4 Menentukan dan membuat model def baseline_model(): model_regressor = Sequential() model_regressor.add(Dense(13, input_dim = 13, kernel_initializer = 'normal', activation = 'relu')) model_regressor.add(Dense(1, kernel_initializer = 'normal')) 76
5 Kompilasi model model_regressor.compile(loss='mean_squared_error', optimizer='adam') return model_regressor 6 Perbaiki random seed untuk reproduktifitas seed = 7 numpy.random.seed(seed) 7 Mengevaluasi model ini dengan standarisasi dataset menggunakan fungsi KerasRegressor estimator = KerasRegressor(build_fn = baseline_model, nb_epoch = 100, batch_size = 5, verbose = 0) kfold = KFold(n_splits = 10, random_state = seed) baseline_result = cross_val_score(estimator, X, Y, cv = kfold)print(\"Baseline: %.2f (%.2f) MSE\" % (Baseline_result.mean(),Baseline_result.std())) Output dari kode yang ditunjukkan di atas akan menjadi perkiraan kinerja model pada masalah untuk data yang tidak terlihat. Hal ini akan menjadi mean square error, termasuk rata-rata dan standar deviasi di semua 10 folds dari cross validation evaluation. 4 Menentukan dan membuat model def baseline_model(): model_regressor = Sequential() model_regressor.add(Dense(13, input_dim = 13, kernel_initializer = 'normal', activation = 'relu')) model_regressor.add(Dense(1, kernel_initializer = 'normal')) 76
DAFTAR PUSTAKA Anthony Williams. Python Programming: 4 Manuscripts - Artificial Intelligence Python, Reinforcement Learning with Python, Text Analytics with Python, Convolutional Neural Networks in Python. 2017. CreateSpace Independent Publishing Platform. Anthony Williams. Artificial Intelligence Python: A Short Introduction to Artificial Intelligence with Python. 2017. CreateSpace Independent Publishing Platform . Prateek Joshi. Artificial Intelligence with Python: Build Real-world Artificial Intelligence Applications with Python to Intelligently Interact with the World Around You. 2017. Packt Publishing. Santanu Pattanayak. Intelligent Projects Using Python: 9 real-world AI projects leveraging machine learning and deep learning with TensorFlow and Keras. 2019. Packt Publishing. Santanu Pattanayak. Pro Deep Learning with TensorFlow: A Mathematical Approach to Advanced Artificial Intelligence in Python 1st ed. Edition, Kindle Edition. 2017. Apress. Serge Kruk. Practical Python AI Projects: Mathematical Models of Optimization Problems with Google OR-Tools 1st ed. Edition. 2018. Apress. 77
Search