Anda di halaman 1dari 42

PP/018/PME/VI/R1

PETUNJUK PRAKTIKUM
PEMBELAJARAN MESIN

TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS AHMAD DAHLAN
2016
MODUL PRAKTIKUM PEMBELAJARAN MESIN

Disusun oleh :

Dewi Pramudi Ismi, S.T., M.CompSc

Semester Genap 2016/2017


PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS AHMAD DAHLAN
Kata Pengantar
Alhamdulillahi Robbil ‘Alamiin

Puji syukur kehadirat Allah SWT yang telah melimpahkan rahmat dan hidayahNya sehingga
penyusunan modul praktikum mata kuliah Pembelajaran Mesin ini dapat kami selesaikan.

Modul praktikum Pembelajaran Mesin ini disusun sebagai acuan bagi mahasiswa dalam
melaksanakan praktikum di laboratorium. Modul ini merupakan edisi pertama, sebab
perkuliahan Pembelajaran Mesin baru diperkenalkan pertama kali di semester ini. Modul
praktikum ini berisi materi ringkas terkait konsep-konsep dan teori-teori dalam Pembelajaran
Mesin dan kode-kode program yang ditulis dengan bahasa pemrograman Python. Modul
praktikum ini diharapkan membantu mahasiswa dalam menerapkan konsep-konsep dasar yang
telah diajarkan di dalam kelas, dan mampu mempraktikkan konsep-konsep tersebut dalam
program computer.

Sebagaimana pepatah “Tidak ada gading yang tak retak”, begitupun dengan modul praktikum
ini masih memiliki kekurangan-kekurangan. Oleh karena itu saran yang membangun sangat
kami harapkan untuk menuju kualitas yang lebih baik. Saran-saran dapat dikirimkan melalui
alamat email : dewi.ismi@tif.uad.ac.id

Terima kasih.

Yogyakarta, 20 Februari 2017

Dosen Pengampu,

Dewi Pramudi Ismi, S.T., M.CompSc


DAFTAR ISI

I. Pengenalan Python (minggu 1 - 3)


II. Naïve Bayes (minggu 4-5)
III. Graphical Models (minggu 6)
IV. K-Nearest Neigh bour (minggu 7)
V. K-means Clustering (minggu 8)
VI. K-Harmonic Means Clustering (minggu 9)
PENGENALAN PYTHON I

Pertemuan ke :I
Alokasi Waktu : 90 Menit
Kompetensi Dasar : Input/Output, Variabel, Tipe Data, Operator
Indikator : Mahasiswa mampu membuat program sederhana di Python yang
meliputi variable, tipe data, dan operator
Tools : Anaconda dengan Python 2.7

A. Teori Pendukung

Sejarah Python
Python dikembangkan oleh Guido van Rossum pada tahun 1990 di CWI, Amsterdam
sebagi kelanjutan dari bahasa pemrograman ABC. Versi terakhir yang dikeluarkan CWI adalah
1.2. tahun 1995, Guido pindah ke CNRI sambil terus melanjutkan pengembangan Python. Versi
terakhir yang dikeluarkan adalah 1.6. Tahun 2000, Guido dan para pengembang inti Python
pindah ke BeOpen.com yang merupakan sebuah perusahaan komersial dan membentuk
BeOpen PythonLabs. Python 2.0 dikeluarkan BeOpen. Setelah mengeluarkan Python 2.0,
Guido dan beberapa anggota tim PythonLabs pindah ke DigitalCreations.
Saat ini pengembangan Python terus dilakukan oleh sekumpulan pemrogram yang
dikoordinir Guido dan Python Software Foundation. Python Software Foundation adalah sebuah
organisasi non-profit yang dibentuk sebagai pemegang hak cipta intelektual Python sejak versi
2.1 dan dengan demikian mencegah Python dimiliki oleh perusahaan komersial. Saat ini
distribusi Python sudah mencapai versi 2.6.1 dan versi 3.0.
Nama Python dipilih oleh Guido sebagai nama bahasa ciptaannya karena kecintaan
guido pada acara televisi Monty Python‟s Flying Circus. Oleh karena itu seringkali ungkapan-
ungkapan khas dari acara tersebut seringkali muncul dalam korespondensi antar pengguna
Python.

Pengenalan Python
Python merupakan bahasa pemrograman dinamis yang mendukung pemrograman
berbasis objek. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat
lunak dan dapat berjalan di berbagai platform sistem operasi. Saat ini skrip python dapat
dijalankan pada sistem berbasis : Windows, Linux / Unix, Mac OS X, OS/2, Amiga. Python
didistribusikan dengan beberapa lisensi yang berbeda dari beberapa versi. Lisensi Python tidak
bertentangan baik menurut definisi Open Source maupun General Public License (GPL).
Interpreter Python dapat diperoleh diwebsite resminya di http://www.python.org.
Python adalah bahasa pemrograman yang mudah dipelajari dan powefull. Python
memiliki struktur data tingkat tinggi yang efisien dan merupakan pendekatan yang sederhana
tetapi efektif pada pemrograman yang berorientasi objek (Object-Oriented Programming).
Syntax elegan dan dynamic typing yang dimiliki oleh python, bersama interpreted nature dari
Python, menjadikannya bahas pemrograman yang ideal untuk melakukan „scripting‟ dan
pengembangan aplikasi yang pesat dalam banyak area pada kebanyakan platform.
Dengan kode yang simple dan mudah diimplementasikan, seorang programmer dapat
lebih mengutamakan pengembangan aplikasi yang dibuat, bukan malah mencai syntax error.
print (“Python sangat simple”)

hanya dengan menuliskan kode print seperti diatas sudah bisa mencetak apapun yang
diinginkan didalam tanda kurung (). Dibagian akhir kodepun tidak harus mengakhirnya dengan
semicolon ;.

Mengapa Python?
Sisi utama yang membedakan Python dengan bahasa pemrograman lainnya adalah
dalam hal aturan penulisan kode program. Bagi para programmer di luar python siap-siap
dibingungkan dengan aturan indentasi, tipe data, tuple, dan dictionary. Python memiliki
kelebihan tersendiri dibandingkan dengan bahasa lain terutama dalam hal penanganan modul,
ini yang membuat beberapa programmer menyukai python. Selain itu python merupakan salah
satu produk yang opensource, free, dan multiplatform.
Beberapa fitur yang dimiliki Python adalah:
 memiliki kepustakaan yang luas; dalam distribusi Python telah disediakan modul-modul siap
pakai untuk berbagai keperluan.
 memiliki tata bahasa yang jernih dan mudah dipelajari.
 memiliki aturan layout kode sumber yang memudahkan pengecekan, pembacaan kembali
dan penulisan ulang kode sumber. berorientasi obyek.
 memiliki sistem pengelolaan memori otomatis (garbage collection, seperti java) modular,
mudah dikembangkan dengan menciptakan modul-modul baru; modul-modul tersebut dapat
dibangun dengan bahasa Python maupun C/C++.
 memiliki fasilitas pengumpulan sampah otomatis, seperti halnya pada bahasa pemrograman
Java, python memiliki fasilitas pengaturan penggunaan ingatan komputer sehingga para
pemrogram tidak perlu melakukan pengaturan ingatan komputer secara langsung.

Pada praktikum ini menggunakan software paket Anaconda(Python) yang didalamnya


sudah ada paket Spyder (Scientific Python Development Environment) lengkap dengan NumPy,
Matplotlib, dan SciPy.Pada praktikum kita akan menggunakan Spyder-app.

Hello Word Python


Syntax bahasa python hampir sama dengan bahasa pemrograman pada umumnya seperti Java
atau php. Di python untuk mencetak cukup gunakan fungsi print (), dimana sesuatu yang akan
dicetak harus diletakkan diantara kurung buka dan kurung tutup, bahkan di Python versi 2.x
tidak harus menggunakan tanda kurung kurawal, cukup pisahkan dengan spasi. Jika ingin
mencetak data string langsung, harus memasukan data ke dalam tanda kutip terlebih dahulu.
>>> print ("hello word")
hello word
>>> print "hello word python"
hello word python

Python Case Sensitivity


Python bersifat case sensitive, artinya huruf besar dan huruf kecil memiliki perbedaan.
Sebagai contoh jika menggunakan fungsi print dengan huruf kecil print() akan berhasil. Lain hal
jika menggunakan hurus besar/capital Print() atau PRINT(), akan muncuk pesan error.
Aturan ini berlaku untuk nama variabel ataupun fungsi-fungsi lainnya.

Komentar Python
Komentar adalah kode didalam script Python yang tidak dieksekusi atau tidak dijalankan
mesin. Untuk menggunakan komentar cukup menulis tanda pagar #, diikuti dengan isi/tulisan
komentar

Tipe Data
Python mempunyai tipe data yang cukup unik bila dibandingkan dengan bahasa
pemrograman yang lain. Berikut tipe data bahasa pemrograman Python :
Tipe Data Contoh Penjelasan
Menyatakan benar (True) yang bernilai 1, atau
Boolean True atau False
salah (False) yang bernilai 0.
Menyatakan karakter/kalimat bisa berupa huruf,
String “Hello Word Python”
angka, dll (diapit/didalam tanda “ atau „)
Integer 25 atau 1209 Menyatakan bilangan bulat
Float 3.14 atau 0.99 Menyatakan bilangan yang mempunyai koma
Menyatakan bilangan dalam format heksa
Hexadecimal 9a atau 1d3
(bilangan berbasis 16)
Complex 1 + 5j Menyatakan pasangan angka real dan imajiner
Data untaian yang menyimpan berbagai tipe data
List [„xyz‟, 768, 3.14]
tapi isinya bisa diubah-ubah
Data untaian yang menyimpan berbagai tipe data
Tuple („xyz‟, 768, 3.14)
tapi isinya tidak bisa diubah
{„nama‟ : „ani‟ , Data untaian yang menyimpan berbagai tipe data
Dictionary
„umur‟ : 17} berupa pasangan, penunjuk dan nilai

Variable Python
Pada pemrograman Python, variabel mempunyai sifat yang dinamis, artinya variabel
Python tidak perlu dideklarasikan tipe data tertentu dan variabel Python dapat diubah saat
program dijalankan. Penulisan variabel Python memiliki aturan tertentu, yaitu :
1. Karakter pertama harus berupa huruf atau garis bawah/underscore _
2. Karakter selanjutnya dapat berupa huruf, garis bawah/underscore _ atau angka
3. Karakter pada nama variabel bersifat sensitive (case-sensitif). Artinya huruf kecil dan
huruf besar dibedakan. Contoh : Variabel namaDepan dan namadepan adalah variabel
yang berbeda.
Untuk memulai membuat variabel di Python cukup dengan menuliskan variable lalu
mengisinya dengan suatu nilai dengan cara menambahkan tanda sama dengan = diikuti
dengan nilai yang ingin dimasukan.

Operator Python
Operator adalah konstruksi yang dapat memanipulasi nilai dari operan. Bahasa
pemrograman Python mendukung berbagai macam operator, yaitu :
 Operator Aritmatika
Operator Contoh Penjelasan
Penjumlahan : + 1 + 3 = 4 Menjumlahkan nilai dari masing-masing bilangan
Mengurangi nilai bilangan di sebelah kiri
Pengurangan : - 4 – 1 = 3
menggunakan bilangan di sebelah kanan
Perkalian : * 2 * 4 = 8 Mengalikan bilangan
Membagi bilangan di sebelah kiri menggunakan
Pembagian : / 10 / 5 = 2
bilangan di sebelah kanan
Mendapatkan sisa pembagian dari bilangan di
Sisa bagi : % 11 % 2 = 1 sebelah kiri bilangan ketika dibagi oleh bilangan di
sebelah kanan
Memangkatkan bilangan di sebelah kiri bilangan
Pangkat : ** 8 ** 2 = 64
dengan bilangan disebelah kanan operator
Sama seperti pembagian. Hanya saja angka
Pembagian Bulat : // 10 // 3 = 3
dibelakang koma dihilangkan

 Operator Perbandingan
Operator Contoh Penjelasan
Jika masing-masing bilangan memiliki
Sama dengan : == 1 == 1 bernilai True nilai yang sama, maka kondisi bernilai
benar atau True
Akan menghasilkan nilai kebalikan dari
Tidak sama dengan : != 2 != 2 bernilai False
kondisi sebenarnya
Akan menghasilkan nilai kebalikan dari
Tidak sama dengan : <> 2 <> 2 bernilai False
kondisi sebenarnya
Jika nilai bilangan kiri lebih besar dari
Lebih besar dari : > 5 > 3 bernilai True nilai bilangan kanan, maka kondisi
menjadi benar
Jika nilai bilangan kiri lebih kecil dari nilai
Lebih kecil dari : < 5 < 3 bernilai True bilangan kanan, maka kondisi menjadi
benar
Lebih besar atau sama Jika nilai bilangan kiri besar atau sama
5 >= 3 bernilai True
dengan : >= dengan nilai bilangan kanan, maka
kondisi menjadi benar
Jika nilai bilangan kiri lebih kecil atau
Lebih kecil atau sama
5 <= 3 bernilai True sama dengan nilai bilangan kanan, maka
dengan : <=
kondisi menjadi benar

 Operator Penugasan
Operator penugasan digunakan untuk memberikan atau memodifikasi nilai kedalam
sebuah variabel.
Operator Contoh Penjelasan
Sama dengan = a = 1 Memberikan nilai di kanan ke dalam variabel yang
berada di sebelah kiri
Tambah sama dengan + = a += 2 Memberikan nilai variabel dengan nilai variabel itu
sendiri ditambahkan dengan nilai di sebelah kanan
Kurang sama dengan -= a -= 2 Memberikan nilai variabel dengan nilai variabel itu
sendiri dikurangi dengan nilai di sebelah kanan
Kali sama dengan *= a *= 2 Memberikan nilai variabel dengan nilai variabel itu
sendiri dikali denan nilai di sebelah kanan
Bagi sama dengan /= a /= 4 Memberikan nilai variabel dengan nilai variabel itu
sendiri dibagi dengan nilai di sebelah kanan.
Sisa bagi sama dengan %= a %= 3 Memberikan nilai variabel dengan nilai variabel itu
sendiri dibagi dengan nilai disebelahnya kanan.
Yang diambil nantinya adalah sisa baginya.
Pangkat sama dengan **= a **= 3 Memberikan nilai variabel dengan nilai variabel itu
sendiri dipangkatkan dengan nilai disebelah kanan
Pembagian bulat sama a //= 3 Membagi bulat bilangan sebelah kiri operator
dengan //= dengan operator sebelah kanan operator kemudian
hasilnya diisikan ke bilangan sebelah kiri

 Operator Logika
Operator contoh Penjelasan
and a, b = True, True Jika kedua bilangan bernilai True, maka
# hasil akan True kondisi akan bernilai True. Selain kondisi
print a and b tadi maka bernilai False
or a, b = True, False Jika salah satu atau kedua bilangan bernilai
# hasil akan True True maka kondisi akan bernilai True. Jika
print a or b keduanya False maka kondisi akan
print b or a bernilai False
print a or a
# hasil akan False
print b or b
not a, b = True, False Membalikkan nilai kebenaran pada bilangan,
# hasil akan True missal jika asalnya True akan menjadi
print not a False dan begitupun sebaliknya
print not b

 Operator Bitwise
Operator Contoh Penjelasan
a,b = 13, 37 Operator biner AND (&), memeriksa apakah
#a akan bernilai „0000 1101‟ bilangan disebelah kiri dan bilangan
#b akan bernilai „0010 0101‟ disebelah kanan mempunyai angka biner 1
& c = a & b disetiap bit. Jika keduanya bernilai 1 maka
#c akan bernilai 5 = „0000 bit hasil operasi akan bernilai 1
0101‟
print c
a, b = 13, 37 Operator biner OR, memeriksa apakah
# a akan bernilai '0000 1101' bilangan di sebelah kiri dan bilangan
# b akan bernilai '0010 0101' sebelah kanan mempunyai angka biner 1 di
|
c=a|b setiap bit. Jika salah satunya bernilai 1 maka
# c akan bernilai 45 = '0010 1101' bit hasil operasi akan bernilai 1.
print c
a, b = 13, 37 Operator biner XOR, memeriksa apakah
# a akan bernilai '0000 1101' operan di sebelah kiri dan operan sebelah
# b akan bernilai '0010 0101' kanan mempunyai angka biner 1 di setiap
^
c = a ^ b bit. Jika keduanya bernilai 1 maka bit hasil
# c akan bernilai 40 = '0010 1000' operasi akan bernilai 0.
print c
Kali sama a *=2 Operator biner Negative, membalik nilai bit.
dengan *= Missal dari 1 menjadi 0, dari 0 menjadi 1.
a, b = 13, 37 Memberikan nilai variabel dengan nilai
~ # a akan bernilai '0000 1101' variabel itu sendiri dibagi dengan nilai
# b akan bernilai '0010 0101' disebelah kanan.
a, b = 13, 37 Memberikan nilai variabel dengan nilai
# a akan bernilai '0000 1101' variabel itu sendiri dibagi dengan nilai
# b akan bernilai '0010 0101' disebelah kanan. Yang diambil nantinya
# hasil bernilai 52 = ''0011 adalah sisa baginya.
<< 0100'
print a << 2
# hasil bernilai 148 = '1001
0100'
print b << 2
a, b = 13, 37 Biangan penggser biner ke kiri, deret bit
# a akan bernilai '0000 1101' akan digeser ke kiri sebanyak n kali.
# b akan bernilai '0010 0101'
# hasil bernilai 3 = '0000
>> 0011'
print a >> 2
# hasil bernilai 9 = '0000
1001'
print b >> 2

 Operator Keanggotaan
Operator Contoh Penjelasan
in sebuah_list = Memeriksa apakah nilai yang dicari berada
[1,2,3,4,5] pada list atau struktur data python lainnya.
print 5 in sebuah_list Jika nilai tersebut ada maka kondisi akan
bernilai True
not in sebuah_list = Memeriksa apakah nilai yang dicari tidak
[1,2,3,4,5] ada pada list atau struktur data python
print 10 in sebuah_list lainnya. Jika nilai tersebut tidak ada maka
kondisi akan bernilai True

 Operator Identitas
Operator Contoh Penjelasan
Is Memeriksa apakah nilai di sebelah kiri
a, b = 10, 10
operan memiliki identitas memori yang sama
# hasil akan True
dengan nilai di sebelah kanan operan. Jika
print a is b
sama maka kondisi bernilai True.
is not Memeriksa apakah nilai di sebelah kiri
a, b = 10, 5 operan memiliki identitas memori yang
# hasil akan True berbeda dengan nilai di sebelah kanan
print a is not b operan. Jika berbeda maka kondisi bernilai
True.

Dari semua operator diatas, masing-masing mempunyai urutan prioritas yang nantinya
prioritas pertama kan dilakukan paling pertama, begitu seterusnya sampai prioritas terakhir.
Berikut tabel prioritas operator di Python :
Operator Keterangan
** Aritmatika
~,+,- Bitwise
*,/,%,// Aritmatika
+,- Aritmatika
>> , << Bitwise
& Bitwise
^ , | Bitwise
<= , < , > , >= Perbandingan
<> , == , != Perbandingan
= , %= , /= , //= , -= , += , *= , **= Penugasan
is , is not Identitas
in , not in Membership(keanggotaan)
not, or , and Logika

B. Langkah Praktikum
Mahasiswa mencoba contoh-contoh kode python pada tabel-tabel di atas, dengan cara
mengetikkan kode-kode tsb pada console.
PENGENALAN PYTHON II

Pertemuan ke : II
Alokasi Waktu : 90 Menit
Kompetensi Dasar : Percabangan dan Perulangan
Indikator : Mahasiswa mampu membuat program sederhana di Python yang
mengandung kondisi percabangan dan perulangan
Tools : Anaconda dengan Python 2.7

A. Teori Pendukung

Kondisi IF di Python
Pengambilan keputusan (kondisi IF) digunakan untuk mengantisipasi kondisi yang
terjadi saat jalannya program dan menentukan tindakan apa yang akan diambil sesuai dengan
kondisi. Pada Python ada beberapa statement/kondisi diantaranya : IF, ELSE dan ELIF.
Kondisi IF digunakan untuk mengeksekusi kode jika kondisi bernilai benar. Jika kondisi bernilai
salah maka statement/kondisi IF tidak akan di-eksekusi.

Kondisi IF-ELSE di Python


Pengambilan keputusan (kondisi IF-ELSE) tidak hanya digunakan untuk menentukan
tindakan apa yang akan diambil sesuai dengan kondisi, tetapi juga digunakan untuk
menentukan tindakan apa yang akan diambil/dijalankan jika kondisi tidak sesuai. Kondisi IF-
ELSE adalah kondisi dimana jika pernyataan benar (true) maka kode dalam IF akan dieksekusi,
tetapi jika bernilai salah (false) maka akan mengeksekusi kode didalam ELSE.

Kondisi ELIF di Python


Pengambilan keputusan (kondisi IF-ELIF) merupakan lanjutan/percabanagan logika dari
“kondisi IF”. Dengan ELIF dapat membuat kode program yang akan menyeleksi beberapa
kemungkinan yang bisa terjadi. Hampir sama dengan kondisi “ELSE”, bedanga kondisi “ELIF”
bisa banyak dan tidak hanya satu.

WHILE
Pengulangan while mirip dengan sebuah if : mengeksekusi code didalamnya jika
kondisi yang diberikan bernilai True. Perbedaannya adalah di while code didalamnya akan
terus berulang terus selama kondisinya benar.
Sintak while seperti berikut :

while suatu_kondisi:
# lakukan sesuatu

agar codenya tidak berjalan terus menerus (inifinite loop), maka harus ada code didalam loop
yang membuat suatu_kondisi:mejadi False.

FOR
Selain perulangan dengan while, python juga mendukung perulangan for . Namun
penggunaan for pada bahasa python tidak seperti pada bahasa pemrograman yang lain
misalnya C/C++ atau Java. Perulangan pada bahasa C/C++ atau Java menggunakan increment
dari integer untuk melakukan iterasi. Sedangkan pada bahasa python, iterasi pada perulangan
dengan mencacah elemen atau anggota sebuah list atau string.

words = ['cat', 'window', 'defenestrate']


for w in words:
print(w, len(w))

Hasil yang diperoleh adalah sebagai berikut:

cat 3
window 6
defenestrate 12

B. Langkah Praktikum

1. Mahasiswa mengerjakan soal pre test dari asisten/coordinator praktikum ± 15 menit


(dikerjakan dilembar yang sudah disediakan)
2. Aktivitas mahasiswa
Dalam langkah ini mahasiswa harus melakukan sesuai petunjuk praktikum yang antara lain
berisi : menulis program. Program dapat dituliskan berikut dalam teks editor di Python
- Menjalankan/me-runing dan meng-complie program
- Mengamati output dan dalam beberapa statement perlu diganti sesuai petunjuk
- Jika ada kesulitan/kesalahan silahkan ditanyakan ke Dosen coordinator
praktikum/asisten.

a. Listing 1
Tulislah file berikut sebagai file baru!

1. Hello Word
print("Hello World")
Saat menjalankan script diatas, Anda akan melihat output beruppa text Hello World

2. Komentar pada Python


#Ini adalah komentar
# Tulisan ini tidak akan dieksekusi

#komentar dengan tanda pagar hanya bisa digunakan


#untuk
#satu
#baris

print("Hello World") #ini juga komentar

#print("Welcome")

# komentar bisa berisi spesial karakter !@#$%^&*(),./;'[]\

#mencetak nama
print("Budi")

#mencetak angka/integer
print(123)

Saat anda menjalankan script diatas, Anda akan melihat output berupa Hello
World, Budi dan 123, karena tulisan/komentar yang ditulis tidak dieksekusi.
3. Mencoba berbagai macam tipe data
#tipe data Boolean
print(True)
#tipe data String
print("Ayo belajar Python")
print('Belajar Python Sangat Mudah')

#tipe data Integer


print(20)

#tipe data Float


print(3.14)

#tipe data Hexadecimal


print(9a)

#tipe data Complex


print(5j)

#tipe data List


print([1,2,3,4,5])
print(["satu", "dua", "tiga"])

#tipe data Tuple


print((1,2,3,4,5))
print(("satu", "dua", "tiga"))

#tipe data Dictionary


print({"nama":"Budi", 'umur':20})

#tipe data Dictionary dimasukan ke dalam variabel biodata


biodata = {"nama":"Andi", 'umur':21}

#proses inisialisasi variabel biodata


print(biodata)

#proses pencetakan variabel biodata yang berisi tipe data


Dictionary
type(biodata) #fungsi untuk mengecek jenis tipe data. akan tampil
<class 'dict'> yang berarti dict adalah tipe data dictionary

4. Variabel pada Python


#proses memasukan data ke dalam variabel
nama = "John Doe"
#proses mencetak variabel
print(nama)

#nilai dan tipe data dalam variabel dapat diubah


umur = 20 #nilai awal
print(umur) #mencetak nilai umur
type(umur) #mengecek tipe data umur
umur = "dua puluh satu" #nilai setelah diubah
print(umur) #mencetak nilai umur
type(umur) #mengecek tipe data umur

namaDepan = "Budi"
namaBelakang = "Susanto"
nama = namaDepan + " " + namaBelakang
umur = 22
hobi = "Berenang"
print("Biodata\n", nama, "\n", umur, "\n", hobi)

#contoh variabel lainya


inivariabel = "Halo"
ini_juga_variabel = "Hai"
_inivariabeljuga = "Hi"
inivariabel222 = "Bye"

panjang = 10
lebar = 5
luas = panjang * lebar
print(luas)

5. Operator Aritmatika pada Python


#OPERATOR ARITMATIKA

#Penjumlahan
print(13 + 2)
apel = 7
jeruk = 9
buah = apel + jeruk #
print(buah)

#Pengurangan
hutang = 10000
bayar = 5000
sisaHutang = hutang - bayar
print("Sisa hutang Anda adalah ", sisaHutang)

#Perkalian
panjang = 15
lebar = 8
luas = panjang * lebar
print(luas)

#Pembagian
kue = 16
anak = 4
kuePerAnak = kue / anak
print("Setiap anak akan mendapatkan bagian kue sebanyak ",
kuePerAnak)

#Sisa Bagi / Modulus


bilangan1 = 14
bilangan2 = 5
hasil = bilangan1 % bilangan2
print("Sisa bagi dari bilangan ", bilangan1, " dan ", bilangan2,
" adalah ", hasil)

#Pangkat
bilangan3 = 8
bilangan4 = 2
hasilPangkat = bilangan3 ** bilangan4
print(hasilPangkat)

#Pembagian Bulat
print(10//3)
#10 dibagi 3 adalah 3.3333. Karena dibulatkan maka akan
menghasilkan nilai 3

6. Kondisi IF
#Kondisi if adalah kondisi yang akan dieksekusi oleh program jika
bernilai benar atau TRUE

nilai = 9

#jika kondisi benar/TRUE maka program akan mengeksekusi perintah


dibawahnya
if(nilai > 7):
print("Selamat Anda Lulus Ujian")

#jika kondisi salah/FALSE maka program tidak akan mengeksekusi


perintah dibawahnya
if(nilai > 10):
print("Selamat Anda Lulus")

Dari contoh diatas, jika program dijalankan maka akan mencetak string " Selamat
Anda Lulus Ujian " sebanyak 1 kali yaitu pada if pertama. Di if kedua statement bernilai
salah, jadi perintah print("Selamat Anda Lulus")tidak akan dieksekusi.

7. Kondisi IF-ELSE
#Kondisi if else adalah jika kondisi bernilai TRUE maka akan dieksekusi
pada if, tetapi jika bernilai FALSE maka akan dieksekusi kode pada else

nilai = 3
#Jika pernyataan pada if bernilai TRUE maka if akan dieksekusi, tetapi
jika FALSE kode pada else yang akan dieksekusi.
if(nilai > 7):
print("Selamat Anda Lulus")
else:
print("Maaf Anda Tidak Lulus")
Jika program dijalankan maka akan mencetak string " Maaf Anda Tidak Lulus "
karena pernyataan pada if bernilai FALSE

8. Kondisi ELIF
hari_ini = "Minggu"
if(hari_ini == "Senin"):
print("Saya akan kuliah")
elif(hari_ini == "Selasa"):
print("Saya akan kuliah")
elif(hari_ini == "Rabu"):
print("Saya akan kuliah")
elif(hari_ini == "Kamis"):
print("Saya akan kuliah")
elif(hari_ini == "Jumat"):
print("Saya akan kuliah")
elif(hari_ini == "Sabtu"):
print("Saya akan kuliah")
elif(hari_ini == "Minggu"):
print("Saya akan libur")

Jika program dijalankan maka akan mencetak string "Saya akan libur ".

9. Pengulangan while
angka = 8

if angka > 2:
print "if, nilai angka sekarang: " + str(angka)

while angka > 2:


print "while, nilai angka sekarang: " + str(angka)
angka = angka – 1

Jika program dijalankan, apakah output yang dihasilkan?

C. Post Test
PENGENALAN PYTHON III

Pertemuan ke : III
Alokasi Waktu : 90 Menit
Kompetensi Dasar : Operasi-operasi pada List, Tupple, dan Dictionary
Indikator : Mahasiswa mampu membuat program sederhana di Python yang
mengandung operasi-operasi pada List, Tupple, dan Dictionary

A. Teori Pendukung

List

List merupakan tipe data yang paling serbaguna diantara tiga tipe data tersebut.
Sebuah Listdapat berisi berbagai macam data yang dipisahkan oleh tanda koma dan dibatasi
oleh tanda kurung kotak ([ ]). Sekilas, List mirip dengan array pada pemrograman C atau Java.
Satu perbedaan dari keduanya (array dan List), List dapat berisi tipe data yang berbeda
sedangkan array tidak. Berikut contohnya:

>>> listvar = ['abcd', 123, 2.23, 'efgh']


>>> listvar
['abcd', 123, 2.23, 'efgh']

List dapat kita iris dengan cara yang sama seperti String, dan aturan irisan yang sama terkait
indeks positif dan negatif juga berlaku pada List. Contohnya,

>>> listvar[0]
'abcd'
>>> listvar[2]
2.23
>>> listvar[1:-1]
[123, 2.23]

List juga dapat disambung dan digandakan seperti contoh di bawah ini,

>>> listvar[:3] + ['yes', 4*3]


['abcd', 123, 2.23, 'yes', 12]
>>> 3 * listvar
['abcd', 123, 2.23, 'efgh', 'abcd', 123, 2.23, 'efgh', 'abcd', 123, 2.23, 'efgh']
>>> 2 * listvar + ['smart']
['abcd', 123, 2.23, 'efgh', 'abcd', 123, 2.23, 'efgh', 'smart']
Kita telah mempelajari sebelumnya bahwa String merupakan tipe data immutable, yang mana
elemen-elemen dari String tidak dapat diubah. Pada List kita dapat mengubah elemen-elemen
yang ada didalamnya.

>>> listvar
['abcd', 123, 2.23, 'efgh']
>>> listvar[3] = 5-7j
>>> listvar
['abcd', 123, 2.23, (5-7j)]

Kita juga dapat membuat List bersarang, yang mana sebuah List dapat berisi List lain.

>>> listvar[1] = [888, 'pqr']


>>> listvar
['abcd', [888, 'pqr'], 2.23, (5-7j)]

Kita juga dapat mengekstrak data dengan menggunakan irisan dari irisan. Contoh,

>>> listvar[1][0]
888

Kita dapat menggunakan fungsi len() untuk mengetahui panjang dari List tersebut. Contoh,

>>> len(listvar)
4
>>> listvar[1]
[888, 'pqr']

Kita dapat mengubah data dengan menggunakan irisan, yang meliputi mengganti, menghapus,
dan memasukkan data dalam sebuah List. Berikut contohnya:

>>> listvar[1][0]
888
>>> listvar[0:2] = []
>>> listvar
[2.23, (5-7j)]
>>> listvar[1:1] = [1234, 'ddd']
>>> listvar
[2.23, 1234, 'ddd', (5-7j)]
>>> listvar[1:2] = ['007', 'xyz']
>>> listvar
[2.23, '007', 'xyz', 'ddd', (5-7j)]
>>> listvar[:0] = listvar
>>> listvar
[2.23, '007', 'xyz', 'ddd', (5-7j), 2.23, '007', 'xyz', 'ddd', (5-7j)]

Data-data yang ada dalam List dapat kita hapus dengan menggunakan pernyataan del jika kita
tahu indeks posisi dari data yang akan dihapus tersebut. Jika kita tidak tahu indeks posisinya,
kita dapat menggunakan metode remove.
>>> del listvar[0:5]
>>> listvar
[2.23, '007', 'xyz', 'ddd', (5-7j)]
>>> del listvar[0]
>>> listvar
['007', 'xyz', 'ddd', (5-7j)]
>>> listvar.remove('xyz')
>>> listvar
['007', 'ddd', (5-7j)]

Tupple

Selain List, Tuple juga merupakan tipe data urutan (sequence data type) yang secara fungsi
sama dengan List. Namun Tuple berbeda sifatnya, yaitu Tuple bersifat immutable yang mana
data di dalam Tuple tidak dapat kita ubah atau dihapuskan. Sebuah Tuple terdiri dari beberapa
nilai yang dipisahkan oleh tanda koma („,‟). Tidak seperti List, tipe data Tuple ditandai dengan
tanda kurung "()". Berikut contohnya,

>>> NamaSiswa = ("Kartika", "Annisa", "Zahrotul", "Zelma", "Noval")


>>> NamaSiswa
('Kartika', 'Annisa', 'Zahrotul', 'Zelma', 'Noval')

Anda dapat mengisi sebuah Tuple tanpa menggunakan tanda kurung, namun hal ini tidak
dianjurkan jika Tuple tersebut berisi data yang besar. Contoh di bawah ini akan menunjukkan
jika kita ingin membuat Tuple bersarang, ada Tuple di dalam Tuple.

>>> NamaKota = "Surabaya", "Jakarta"


>>> NamaKota
('Surabaya', 'Jakarta')
>>> KotaBesar = NamaKota, ("Bandung", "Yogyakarta", "Medan")
>>> KotaBesar
(('Surabaya', 'Jakarta'), ('Bandung', 'Yogyakarta', 'Medan'))

Telah kita bahas di awal tadi, bahwa perbedaan utama


dari Tuple dengan List adalah Tuplebersifat immutable, kita tidak diijinkan untuk mengganti nilai
yang ada atau menghapus data yang ada dalam Tuple tersebut. Jika kita mengubah atau
menghapus data yang sudah ada sebelumnya, maka pesan kesalahan akan di tampilkan
oleh interpreter Python.

>>> NamaKota[1] = "Makasar"


Traceback (most recent call last):
File "", line 1, in
NamaKota[1] = "Makasar"
TypeError: 'tuple' object does not support item assignment

Kita dapat menggunakan indeks atau irisan untuk mengakses nilai yang ada di dalam Tuple.
Berikut contohnya,
>>> NamaSiswa[1]
'Annisa'
>>> NamaSiswa[0:2]
('Kartika', 'Annisa')
>>> KotaBesar[:2]
(('Surabaya', 'Jakarta'), ('Bandung', 'Yogyakarta', 'Medan'))
>>> KotaBesar[1][0]
'Bandung'

Untuk mengatasi masalah ke-immutable-an (immutability) pada Tuple, kita dapat


membuat Tuple baru yang merupakan gabungan dari Tuple yang sudah ada. Berikut
contohnya,

>>> Tuple1 = ("a", 1, 2, 3)


>>> Tuple1
('a', 1, 2, 3)
>>> Tuple2 = ("b", 4, 5, 6)
>>> Tuple2
('b', 4, 5, 6)
>>> TupleGab = Tuple1 + Tuple2
>>> TupleGab
('a', 1, 2, 3, 'b', 4, 5, 6)

Pada contoh di atas, dua buah Tuple dibuat secara terpisah, Tuple1 dan Tuple2. Dua Tuple ini
dioperasikan pada Tuple lainnya, TupleGab, dengan menggunakan operator +. Perlu dicatat
bahwa TupleGab berisi nilai-nilai dari Tuple1 dan Tuple2. Metode seperti ini dapat juga
digunakan untuk menambahkan beberapa elemen data lain pada sebuah Tuple.

>>> IniTuple = ("p", "q", "r")


>>> IniTuple = IniTuple + ("s", "t")
>>> IniTuple
('p', 'q', 'r', 's', 't')

Kita juga dapat membuat Tuple dengan obyek-obyek yang mutable, sepeti List. Sedemikian
sehingga, kita dapat mengubah nilai yang ada dalam List tersebut. Berikut contohnya,

>>> TupleData = (222, "ayam", [555, "telur", "sapi"])


>>> TupleData
(222, 'ayam', [555, 'telur', 'sapi'])
>>> TupleData[2][1] = 777
>>> TupleData
(222, 'ayam', [555, 777, 'sapi'])

Pada contoh di atas, pertama kita buat dulu sebuah Tuple yang berisi sebuah List. Kemudian,
kita ubah sebuah nilai yang terdapat dalam List tersebut. Dapat kita simpulkan bahwa obyek
mutable dalam Tuple dapat kita ubah, meskipun Tuple sendiri bersifat immutable.

Jika kita ingin membuat sebuah sebuah variable dengan Tuple kosong, kita cukup
memberikan tanda kurung pada variabel tersebut. Panjang Tuple kosong tersebut adalah 0.
Berikut contohnya,
>>> TupleKosong = ()
>>> TupleKosong
()
>>> len(TupleKosong)
0

Jika kita membuat sebuah Tuple yang berisi satu data, maka harus kita tambahkan sebuah
tanda koma. Jika tanpa tanda koma, tipe data tersebut akan dianggap sebagai tipe variabel dari
sebuah Tuple. Berikut contohnya,

>>> SatuData = ("Kymco")


>>> len(SatuData)
5

Dari contoh di atas, karena kita hanya memberikan satu data pada variabel SatuData,
seharusnya panjang Tuple SatuData adalah 1. Mengapa terjadi seperti ini? Karena tanda koma
tidak kita berikan pada Tuple SatuData tersebut, sehingga variable SatuData dianggap
bertipe String. Berikut contoh jika kita memberikan tanda koma,

>>> TupleSatu = ("Kymco",)


>>> TupleSatu
('Kymco',)
>>> len(TupleSatu)
1

Dictionary

Dictionary menggunakan beberapa kunci untuk mengindeks nilai-nilai yang ada di


dalamnya. Kunci tidak harus berupa angka. Kunci dapat berupa tipe data immutable lainnya,
yaitu String, Number, dan Tuple. Tuple dapat digunakan sebagai kunci jika di
dalam Tuple tersebut tidak terdapat obyek yang bersifat mutable. Dengan kata lain, Dictionary
Python merupakan kumpulan pasangan kunci:nilai (selanjutnya kita sebut: key-value) yang
tidak berurutan. Dictionary Python ini sama halnya dengan array-asosiatif atau hash-table di
pemrograman Perl.

Suatu kunci (key) pada Dictionary bersifat unik, yang artinya satu kunci hanya mempunyai satu
nilai. Aturan penulisannya berupa key:value. Sebuah Dictionary ditandai dengan kurung
kurawal “{}”. Setiap pasangan key:value dipisahkan dengan tanda koma. Berikut contohnya,

>>> kamus = {}
>>> kamus1 = {'nama':'azzam', 'nim':1234, 'jurusan':'fisika'}
>>> kamus1
{'nama': 'azzam', 'jurusan': 'fisika', 'nim': 1234}
>>> kamus
{}

Pada contoh di atas, kita membuat sebuah Dictionary kosong kamus yang hanya ditandai oleh
tanda kurung kurawal dan sebuah Dictionary kamus1 berisi tiga pasang key:value yang
dipisahkan dengan tanda koma.
Untuk mengakses sebuah value dari Dictionary, kita dapat menggunakan key yang
berhubungan dengan value tersebut. Berikut contohnya,

>>> kamus1['jurusan']
'fisika'
>>> kamus1['nim']
1234

Pada contoh di atas, terlihat jelas bahwa value „fisika‟ dapat diakses dengan
menggunakan key„jurusan‟. Ketika kita menggunakan sebuah key dalam Dictionary,
maka value yang sesuai akan ditampilkan. Dengan kata lain, kita bisa mengakses data
dari Dictionary dengan menggunakan suatu key yang berhubungan dengan data tersebut. Jika
kita mencoba menggunakan key yang tidak ada dalam Dictionary, maka pesan kesalahan akan
dimunculkan. Berikut contohnya,

>>> kamus1['alamat']
Traceback (most recent call last):
File "", line 1, in
kamus1['alamat']
KeyError: 'alamat'

Dictionary bersifat mutable. Pasangan key:value dapat dengan mudah kita tambahkan berulang
kali. Pada Dictionary, sebuah value baru dapat ditambahkan atau diubah dengan cara
mengakses sebuah key dan memberinya value baru.

>>> kamus1['alamat'] = 'malang'


>>> kamus1
{'nama': 'azzam', 'alamat': 'malang', 'jurusan': 'fisika', 'nim': 1234}

Pada contoh di atas, karena ‘alamat’ bukanlah key yang terdapat dalam kamus1, maka
pasangan key:value akan ditambahkan ke kamus1 dengan key = ‘alamat’ dan value = ‘malang’.

Semua key yang ada dalam Dictionary tidak harus mempunyai tipe data yang sama. Marilah
kita lihat contoh di bawah ini dimana key yang ada saling berbeda tipe datanya.

>>> tesDict = {'2':1234, 2:'abc', 6.5:'cukup'}


>>> tesDict
{2: 'abc', '2': 1234, 6.5: 'cukup'}

Dari contoh di atas, key pertama yaitu „2‟ merupakan string yang dihubungkan
dengan value1234 yang bertipe integer, key kedua yaitu 2 bertipe integer dan dihubungkan
dengan sebuah string „abc‟, dan key yang ketiga adalah sebuah bilangan real 6.5 yang
dipasangkan dengan sebuah string „cukup‟.

Jika kita ingin mengambil semua key yang ada dalam Dictionary, kita dapat menggunakan
metode keys(). Metode keys() akan mengembalikan sebuah list key. Berikut contohnya,

>>> tesDict.keys()
dict_keys([2, '2', 6.5])
Panjang sebuah Dictionary sama dengan banyaknya pasangan key:value yang ada di
dalamnya.

>>> len(tesDict)
3

Elemen-elemen yang ada di dalam Dictionary dapat kita hapus dengan menggunakan
pernyataan del. Kita juga bisa menggunakan pernyataan del untuk
menghapus Dictionarysecara keseluruhan. Kita juga bisa membersihkan Dictionary dengan
menggunakan metode clear().

>>> del kamus1['nim']


>>> kamus1
{'nama': 'azzam', 'alamat': 'malang', 'jurusan': 'fisika'}
>>> kamus1.clear()
>>> kamus1
{}
>>> del kamus1
>>> kamus1
Traceback (most recent call last):
File "", line 1, in
kamus1
NameError: name 'kamus1' is not defined
GRAPHICAL MODEL

Pertemuan ke : VI
Alokasi Waktu : 90 Menit
Kompetensi Dasar : Graphical model dengan bentuk head to head, tail to tail, head to tail
Indikator : Mahasiswa mampu menerjemahkan kasus ke dalam Graphical model
Tools : MS Visio

A. Teori Pendukung

Graphical Model merupakan struktur yang terdiri dari simpul dan panah, dimana simpul yang
memiliki pengaruh dengan simpul lainnya ditandai dengan panah.
Panah menunjukkan adanya pengaruh dari simpul di pangkal panah kepada simpul di ujung
panah.

Head to Tail

P(Z|X) = P(Z|Y)P(Y|X) + P(Z|~Y)P(~Y|X)

Tail to Tail
P(X|Y) = =

Head to Head

P(X|Z) = P (X|Z,Y) * P(Y|Z) + P (X|Z, ~Y) * P(~Y|Z)


= P (X|Z, Y) * P(Y) + P (X|Z, ~Y) * P(~Y)

B. Langkah Praktikum

Kita masih akan menggunakan kasus bermain tenis :


Jika diketahui clause di bawah ini:
 Sunny berpengaruh pada temperature hot, temperature hot berpengaruh pada humidity
high
 Jika cuaca overcast, maka temperature nya akan mild dan atau wind akan weak
 Jika cuaca rain dan temperaturenya cool maka wind akan strong

1. Gam barkan kondisi clause 1 di atas dengan graphical model head to tail
2. Hitung P(High|Sunny) = P(High|Hot)P(Hot|Sunny) + P(High|~Hot)P(~Hot|Sunny)

Contoh perhitungan peluang :


P(High|Hot)  cari kondisi yang temperaturnya hot, kemudian dari data yang sudah
ditemukan itu cari yang humidity nya high.
P(High|Hot) = 3/4

3. Gam barkan kondisi clause 2 di atas dengan graphical model tail to tail
4. Hitung P(Weak|Overcast) dan P (Mild| Overcast) dengan model tail to tail
5. Gam barkan kondisi clause 3 di atas dengan graphical model head to head
6. Hitung P(Strong|Rain) dan P (Strong|Cool) dengan model head to head
KNN

Pertemuan ke : VII
Alokasi Waktu : 90 Menit
Kompetensi Dasar : KNN dengan berbagai nilai k
Indikator : Mahasiswa mampu menerjemahkan kasus ke dalam KNN
Tools : Python

A. Teori Pendukung

KNN atau k-nearest neighbor merupakan metode klasifikasi dengan melihat kelas dari k
tetangga terdekat dari suatu data.

K dalam hal ini adalah bilangan bulat, sehingga k dapat bernilai 1, 2,3, dst.
K yang terbaik untuk suatu kasus klasifikasi ditentukan melalui eksperimen.

Perhitungan jarak terdekat antar data dilakukan dengan berbagai metode seperti jarak
Euclidean, jarak Manhattan, jarak Mahalanobis, cost similarity atau jaccard similarity.

Rumus jarak Euclidean antara dua data X (x1,x2,x3) dan Y (y1,y2,y3) adalah :

Euclidean Distance = √

B. Langkah Praktikum
Kita akan menggunakan kasus tentang obesitas:

1. Ambil data dari obesitas.csv

 Pertama-tama yang kita lakukan adalah load file csv ke dalam python

import csv
import itertools

#Load csv file


obesitas_csv = open ('obesitas.csv',"rb")
obesitas_data= csv.reader(obesitas_csv)
 Selanjutnya kita mengcopy isi dari file csv dan disimpan dalam list yang dinamai
list_data

# mengubah data dari csv ke dalam list


baris = 0
list_data = []
for baris_data in obesitas_data:
if baris == 0:
header = baris_data
else:
list_data.append(baris_data)
baris+=1

print(list_data)

2. Tentukan kelas dari data-data berikut ini jika kita gunakan KNN dengan k = 1

bb tb
57 160
53 150
40 167
50 166
55 171

Cara menghitung jarak antar data pada python adalah :

data_1 = [57, 160]

# menghitung jarak data_1 dengan elemen list_data


for data in list_data:
jarak =sqrt (((data_1[0] – data[0])**2) + ((data_1[1] – data[1])**2))
print(jarak)

3. Tentukan kelas dari data-data di atas ini jika kita gunakan KNN dengan k = 2; k=3
KMeans Clustering

Pertemuan ke : VIII
Alokasi Waktu : 90 Menit
Kompetensi Dasar : K Means Clustering dengan k=2
Indikator : Mahasiswa mampu menerjemahkan kasus ke dalam Kmeans Clustering
Tools : Python 2.7

A. Teori Pendukung

Clustering adalah metode untuk melakukan pengelompokan data dimana data-data yang mirip
terletak pada satu cluster, sedangkan data-data yang tidak mirip ada pada cluster yang
berbeda.

Salah satu metode klastering yang popular adalah Kmeans Clustering.


Langkah-langkah metode Kmeans clustering adalah:

1. Pilih K buah titik centroid secara acak


2. Masukkan setiap data ke dalam sebuah cluster yang centroidnya terdekat dengan data tsb
3. Perbaharui nilai titik centroid dengan mencari rata-rata (mean) dari semua data di dalam
sebuah cluster
4. Ulangi langkah 2 dan 3 sampai nilai dari titik centroid tidak lagi berubah

Perhitungan jarak terdekat antar data dengan centroid dilakukan dengan berbagai metode
seperti jarak Euclidean, jarak Manhattan, jarak Mahalanobis, cost similarity atau jaccard
similarity.

Rumus jarak Euclidean antara dua data X (x1,x2,x3) dan Y (y1,y2,y3) adalah :

Euclidean Distance = √

B. Langkah Praktikum

1. Ambil data dari clustering.csv

 Pertama-tama yang kita lakukan adalah load file csv ke dalam python

import csv
import itertools
#Load csv file
clustering_csv = open ('clustering.csv',"rb")
clustering_data= csv.reader(clustering_csv)
 Selanjutnya kita mengcopy isi dari file csv dan disimpan dalam list yang dinamai
list_data

# mengubah data dari csv ke dalam list


baris = 0
list_data = []
for baris_data in clustering_data:
if baris == 0:
header = baris_data
else:
list_data.append(baris_data)
baris+=1

print(list_data)

2. Tuliskan kode ini untuk menjalankan k-means clustering (kode ada pada file
clustering_kmeans.py)

# mengubah isi list_data menjadi integer


for data in list_data:
data[0] = int(data[0])
data[1] = int(data[1])
print(list_data)

# membuat list cluster


# misalkan jumlah cluster adalah 2

cluster_1 = []
cluster_2 = []

# menentukan centroid
# mengambil dua data dari list_data secara random
# karena ada 10 data dalam list_data dimulai dari indeks 0
# maka nilai random kita ambil dalam range 0 sampai 9
centroid1_index = randint(0,9)
centroid2_index = randint(0,9)
# jangan sampai centroid1_index sama dengan centroid2_index
if (centroid1_index == centroid2_index):
centroid2_index = randint(0,9)

print(centroid1_index)
print(centroid2_index)

centroid1 = []
centroid2 = []
# print centroid
centroid1.append(list_data[centroid1_index][0])
centroid1.append(list_data[centroid1_index][1])
centroid2.append(list_data[centroid2_index][0])
centroid2.append(list_data[centroid2_index][1])

print ("Centroid Awal")


print(centroid1)
print(centroid2)

# kita tentukan jumlah looping sampai cluster final


# karena data hanya 10 maka looping 30 kali sudah cukup
i = 0
while (i < 30) :

# membuat list untuk menyimpan data pada cluster


data_cluster1 = []
data_cluster2 = []

# looping untuk pembentukan cluster


for tiap_data in list_data:
jarak_centroid1 = math.sqrt(((centroid1[0] -
tiap_data[0])**2) + ((centroid1[1] - tiap_data[1])**2))
jarak_centroid2 = math.sqrt(((centroid2[0] -
tiap_data[0])**2) + ((centroid2[1] - tiap_data[1])**2))
# bandingkan jarak yang terdekat, tentukan data masuk
cluster mana
if (jarak_centroid1 > jarak_centroid2):
data_cluster1.append(tiap_data)
else:
data_cluster2.append(tiap_data)

print("Data pada cluster 1")


print (data_cluster1)
print ("Data pada cluster 2")
print (data_cluster2)

# update centroid di tiap cluster dengan mean dari data dalam


cluster
bb_cluster1 = [X[0] for X in data_cluster1]
tb_cluster1 = [X[1] for X in data_cluster1]
bb_cluster2 = [X[0] for X in data_cluster2]
tb_cluster2 = [X[1] for X in data_cluster2]

centroid1[0] =
float(sum(bb_cluster1))/float(len(data_cluster1))
centroid1[1] =
float(sum(tb_cluster1))/float(len(data_cluster1))
centroid2[0] =
float(sum(bb_cluster2))/float(len(data_cluster2))
centroid2[1] =
float(sum(tb_cluster2))/float(len(data_cluster2))

print ("print centroid yang baru")


print(centroid1)
print(centroid2)
i = i+1

3. Run program di atas dan perhatikan hasil yang didapatkan!

WARNING : Jangan asal copy paste, bisa error.


K Harmonic Means Clustering

Pertemuan ke : IX
Alokasi Waktu : 90 Menit
Kompetensi Dasar : K Harmonic Means Clustering dengan k=2
Indikator : Mahasiswa mampu menerjemahkan kasus ke dalam K Harmonic Means
Clustering
Tools : Python 2.7

A. Teori Pendukung

Clustering adalah metode untuk melakukan pengelompokan data dimana data-data yang mirip
terletak pada satu cluster, sedangkan data-data yang tidak mirip ada pada cluster yang
berbeda.

Salah satu metode klastering yang popular adalah Kmeans Clustering. Kmeans Clustering
dimodifikasi dengan perhitungan rerata harmonic menjadi KHarmonic Means Clustering.
Langkah-langkah metode K Harmonic Means clustering adalah:

1. Pilih K buah titik centroid secara acak


2. Masukkan setiap data ke dalam sebuah cluster yang centroidnya terdekat dengan data tsb
3. Perbaharui nilai titik centroid dengan mencari rata-rata harmonic (harmonic mean) dari semua
data di dalam sebuah cluster
4. Ulangi langkah 2 dan 3 sampai nilai dari titik centroid tidak lagi berubah

Jika diketahui data yang terdapat pada sebuah cluster adalah a1, a2, a3, .. an
Maka rerata harmonic dihitung :

Perhitungan jarak terdekat antar data dengan centroid dilakukan dengan berbagai metode
seperti jarak Euclidean, jarak Manhattan, jarak Mahalanobis, cost similarity atau jaccard
similarity.

Rumus jarak Euclidean antara dua data X (x1,x2,x3) dan Y (y1,y2,y3) adalah :

Euclidean Distance = √

B. Langkah Praktikum
1. Ambil data dari clustering.csv

 Pertama-tama yang kita lakukan adalah load file csv ke dalam python

import csv
import itertools

#Load csv file


clustering_csv = open ('clustering.csv',"rb")
clustering_data= csv.reader(clustering_csv)
 Selanjutnya kita mengcopy isi dari file csv dan disimpan dalam list yang dinamai
list_data

# mengubah data dari csv ke dalam list


baris = 0
list_data = []
for baris_data in clustering_data:
if baris == 0:
header = baris_data
else:
list_data.append(baris_data)
baris+=1

print(list_data)

2. Selanjutnya tuliskan kode yang sama dengan kode kmeans clustering (buka file minggu
lalu)

3. Ubah pada perhitungan update centroid

# update centroid di tiap cluster dengan mean dari data dalam cluster

bb_cluster1 = [(X[0]**-1) for X in data_cluster1]


tb_cluster1 = [(X[1]**-1) for X in data_cluster1]
bb_cluster2 = [(X[0]**-1) for X in data_cluster2]
tb_cluster2 = [(X[1]**-1) for X in data_cluster2]

centroid1[0] = float(len(data_cluster1)/float(sum(bb_cluster1)))
centroid1[1] = float(len(data_cluster1)/float(sum(tb_cluster1)))

centroid2[0] = float(len(data_cluster2)/float(sum(bb_cluster2)))
centroid1[1] = float(len(data_cluster2)/float(sum(tb_cluster2)))

4. Run program di atas dan perhatikan hasil yang didapatkan!


WARNING : Jangan asal copy paste, bisa error.
REFERENSI

1. Introduction to Machine Learning, Ethem Alpaydin, 2014.


2. Learn Python The Hard Way, http://learnpythonthehardway.org, 2016.
3. Machine Learning Tutorials, https://www.coursera.org/learn/machine-learning, 2016.
4. Machine Learning Dataset http://archive.ics.uci.edu/ml/index.php.
TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS AHMAD DAHLAN

Anda mungkin juga menyukai