Basic Data Science Knowledge Part 2: Control Structure, Function dan Class

Dalam menuliskan code di python, adakalanya kita menghadapi perhitungan yg membutuhkan pengulangan. Nah sebagaimana di dalam bahasa pemrograman yg lain, di python juga ada cara melakukan looping untuk lebih mengefisienkan langkah kerja kita.

for i in range(20):
if i%3 == 0:
print i
if i%5 == 0:
print “Bingo!”
print “—“

Di python kita harus memperhatikan indentasi, jika indentasi kita tidak sesuai dengan format python maka proses looping tidak akan perjalan.

Function digunakan juga untuk mempermudah query yang kita buat. Jika kita mempunyai perhitungan yang cukup kompleks namun kita gunakan berulang-ulang maka ada baiknya kita menggunakan function untuk menyimpan perhitungan tadi.

>def kali(x,y):
z=x*y
return z

>kali(5,3)

15

Class

Jika kita membutuhkan sebuah environment yg terlepas dari environment default nya python. Maka salah satu cara untuk melakukan itu adalah dengan menggunakan class. Contoh penggunaan class adalah sebagai berikut

Contoh Class

class Product:
__vendor_message = “Ini adalah rahasia”
name = “”
price = “”
size = “”
unit = “”

def __init__(self, name):
print “Ini adalah constructor”
self.name = name
self.unit = “Gb”
self.size = 10

def get_vendor_message(self):
print self.__vendor_message

def set_price(self, price):
self.price = price

p = Product(“xtra combo”)
p.set_price(55000)

print “%s dengan ukuran %s %s harganya Rp. %d” % (p.name, p.size, p.unit, p.price)
# print p.__vendor_message

p.get_vendor_message()

p1 = Product(“xtra combo”)
p1.set_price(5000)

print “%s dengan ukuran %s %s harganya Rp. %d” % (p.name, p.size, p.unit, p.price)

Source for function: https://www.petanikode.com/tutorial/python

 

 

 

 

 

 

Advertisements

Basic Data Science Knowledge: Python (Part 1)

Python saat ini menjadi tren bahasa yg paling banyak digunakan dalam dunia data science. Walaupun ada bagian-bagian yang masih belum bisa menggantikan R, namun integrasinya dengan ekosistem HADOOP ini lah yang membuatnya menjadi sangat terkenal. Well, tulisan ini hanya catatan pribadi sebagai pengingat dan contekan kalau-kalau lupa.

Saya menginstall python dengan sepaket dengan hanya mendownload anaconda, jadi ringkas di dalamnya ada spyder, jupyter dkk buat GUI nya. Secara personal saya lebih suka menggunakan Jupyter karena formatnya yang mirip dengan R-markdown style di R studio.

Untuk show datanya kita bisa menggunakan

>print (“Hello world”)

Untuk menambahkan komentar bisa menggunakan

> # Ini komentar

Komentar sering bgt saya pakai sebagai pengingat alasan saya menggunakan query tsb. Juga sangat berguna jika query saya digunakan oleh orang lain.

List

Di python sangat flexible kita bisa bikin array yang isinya campur-campur kayak gini.

> a=[99,”cahaya”,[“dilangit”,”eropa”]]

Untuk slicer dari list juga cukup mudah, kita bisa menggunakan index yg selalu dimulai dari 0.

>a[0] hasilnya adalah 99

Berikut contoh lain

>b=range(5)

[0, 1, 2, 3, 4]

>b.append(5)

[0, 1, 2, 3, 4, 5, 5]

>b.pop() #untuk mengetahui jumlah data

5

Dictionary atau Associative Array

Cirinya tidak menggunakan index namun menggunakan keys sehingga kita melakukan fungsi seperti lookup. Keys yg digunakan di dictionary ini sifatnya IMMUTABLE yang artinya tidak boleh diubah-ubah

d = {“duck”: “eend”, “water”: “water”}
d

{'duck': 'eend', 'water': 'water'}

Cara lookupnya

d[“duck”]

‘eend’

Tuple

Hal lain yg perlu dikenal di python adalah tuple. Ciri-cirinya adalah menggunakan kurung ( ) untuk membentuk tuple. Sifat dari tuple juga IMMUTABLE  artinya isinya tidak bisa diubah-ubah.

nama =(‘rahmat’, ‘hid’)
nama

('rahmat', 'hid')

Jika ubah isi tuple nya, maka hasilnya adalah ERROR.

nama[0]=’coding’

Error bla bla xxxx– karena tuple tidak support item assignment

Tuple bisa berisi value, list ,dictionary, object, dan lain-lain.

Variable

variable juga jenis wadah untuk menyimpan value, di python kita tidak perlu melakukan DECLARE variable. Kita bisa langsung membuat variable dan mengisinya dengan value yg kita inginkan. Perbedaannya variable isinya bisa dirubah-rubah.

Pada dasarnya semua hal adalah variable baik itu class, modul maupun fungsi.

var=”isi dengan nilai”
var

'isi dengan nilai'

Kayaknya ini dulu saja untuk yg basic, lagi-lagi tulisan ini buat pengingat saja. Cara paling efektif adalah coba langsung ya guys.

 

 

 

Cara Benar Membuka File CSV

Walaupun ini hal yang sangat dasar namun ternyata masih lumayan banyak orang yang menemui kesulitan dan mengalami kesusahan dalam membuka data yang ada dalam file csv. Baiklah mari simak penjelasan berikut.

Salah satu tipe file yang paling sering di temui dalam dunia analisa data adalah CSV atau (Comma Separated Value). Dengan ukuran file yang relatif kecil, terus fleksibilitas untuk dapat dibuka di hampir semua software baik dari yang simple seperti excel maupun software2 lain seperti hadoop environment (spark, impala dll) membuat banyak orang membagi file nya dalam format csv. Oh iya, satu lagi keunggulan csv file yakni format data yang tersimpan sesuai dengan format aslinya sehingga kita gak khawatir format file tiba-tiba berubah.

Dari yang saya amati, banyak orang yang biasa menggunakan excel langsung double klik di file csv nya… hasilnyaa… BERANTAKAN.

csv folder

Saat langsung double klik.. hasilnya begini nih… malahan ada yg langsung di alokasikan ke kolom.. masih untung formatnya lasngung bener.. tapi dari pengalaman saya lebih banyak gak benernya..

csv berantakan

Klo udah seperti ini saya sarankan tutup aja file nya dan JANGAN di SAVE. Bisa saja kita menggunakan Text To Column namun untuk kali ini kita buka dengan cara paling aman yg saya ketahui. Kalau ada cara lain yg belum disebutkan.. monggo di tambahkan di komentar :).

Ok Langkah pertama buka file excel kosong. Lalu klik menu DATA dan pilih From Text/CSV.buka menu data csv

Pilih file yang ada di folder masing-masing.

import CSV

Kalau pakai excel terbaru kayak saya, akan muncul seperti dibawah ini. Excel akan menganalisa struktur data dari 200 row teratas ( bisa di ubah jumlah row nya) lalu akan menentukan format data per masing-masing kolom.

import csv baru

Setelah klik LOAD hasilnya akan seperti berikut.

final import csv

Naah.. coba anda perhatikan format datanya sudah jauh lebih rapii.. text di format karakter.. angka di format number. Silahkan anda cek data anda lagi sebelum di olah lebih lanjut. Jika sudah rapih dan benar, data siap untuk diproses lebih lanjut. Semoga berguna 🙂

 

 

Data Science in Youtube

Got time to kill? Press PLAY and become SMARTER! ▶️ Here are some of my favorite #DataScience and #MachineLearning resources on Youtube:

— ⚠️ NOTE: These videos are fun bite-sized content packed with information!

📍3Blue1Brown Essence of Linear Algebra https://lnkd.in/gPZ–wZ

📍StatQuest (Joshua Starmer) Statistics Made EASY https://lnkd.in/gMHzDcv

📍Siraj Raval Fun Machine Learning & AI https://lnkd.in/gDC6gz4

📍Analytics University Anything Analytics & Machine Learning https://lnkd.in/gWHiaRf

📍AlphaOpt Optimization & Gradient Descent (Short and easy explanation) https://lnkd.in/g_e9sJu

📍3Blue1Brown Simple Visual Explaination on Neural Networks https://lnkd.in/gXcGwM6

📍Two Minute Papers Awesome AI Research For Everyone https://lnkd.in/gzvaVWh

 

Source:Linkedin

Must known: Decision Tree

Saya tidak bisa recall ingatan saya apakah dulu waktu kuliah pernah diajarkan mengenai decision tree atau sudah. Seharusnya sih diajarkan di mata kuliah analisis data kategorik tapi kok yang ingat malah CHAID… Ya sudahlah.

Menurut saya decision tree ini adalah analisa dengan hasil analisa yang paling mudah untuk dipahami, baik quant maupun non quant. Namany sudah menggambarkan bahwa analisa ini menggunakan konsep pokok, dahan dan ranting dari sebuah pohon.

colorful-natural-tree

Decision tree adalah analisa yang digolongkan sebagai supervised learning dimana ciri dari analisanya adalah dengan adanya target/dependent variable yang biasa di lambangkan dengan huruf Y. Decision tree dapat melakukan kalkulasi baik untuk variable kategorik/ discrete mapun numerik/ continuous. Untuk jenis data kategorik dinamakan CLASSIFICATION TREE sedangkan untuk numerik continuous dinamakan REGRESSION TREE.

Jika anda sudah terbiasa dengan regresi linear, maka anda tidak akan mengalami kesulitan memahami decision tree. Pola pengujian hipotesis pada decision tree menambahkan satu layer baru untuk melakukan pemisahan antar observasi kedalam group-group yang homogen. Disinilah perbedaan mendasar antara decision tree denga regresi linear. Regresi linear hanya berhenti sampai mendapatkan uji masing-masing variabel sedangkan decision tree menguji masing-masing variable apakah dapat memisahkan observasi lebih kecil lagi menjadi group-group yang homogen.

Sebelum melangkah lebih jauh, sebaiknya kita mengenal beberapa istilah yang digunakan dalam decision tree.

  1. Root node: pokok dari tree atau pohon yang kita miliki, seluruh observasi dan populasi ada pada root node ini.
  2. Decision node: tempat terjadinya pemisahan/ splitting dari satu node menjadi beberapa node yang lebih kecil
  3. Splitting: proses pemisahan node
  4. Terminal node: posisi terakhir yang tidak lagi memungkinkan terjadinya splitting.
  5. Pruning: Proses penghilangan terminal sub nodes dari decision node.

tree

Apa kriteria pemisahan node?

  1. Gini index: Konsep dasarnya adalah jika kita memiliki populasi yang homogen, peluang terbentuknya dua group yang homogen adalah 1. Gini index digunakan hanya untuk data kategorik (khusunya binary split), semakin tinggi gini index nya semakin homogen group yang di split–ini dia yang diharapkan. FYI saja CART menggunakan gini index untuk pemisahan binary. Formula gini index itu simple yakni p^2*(1-p)^2, artinya perkalian antara peluang sukses dan gagalnya.
  2. Information gain–entropy: Konsep dasarnya adalah semakin homogen sebuah populasi maka semakin sedikit informasi yang dibutuhkan untuk melakukan split. Artinya jika populasi homogen maka entropy nya 0, jika populasi terbagi menjadi dua persis 50:50 maka entropinya menjadi 1.
  3. Chi-square: Seperti yang kita tahu, chi square dapat digunakan untuk menguji sebaran dari dua populasi. nah konsep ini yang kemudian digunakan untuk menentukan apakah sebuah node akan di split atau tidak.
  4. Reduction variance: Untuk tiga metode diatas ketiganya digunakan untuk variabel kategorik, nah untuk variable continuous, kita menggunakan variance reduction untuk splitting. Jika anda masih ingat konsep variance, maka anda pasti paham populasi yang seragam memiliki variance yang lebih kecil. nah, oleh karena itu variable yang memiliki variance paling kecil ini lah yang ditempatkan sebagai split pertama.

catatan ini adalah catatan pribadi saya, bisa jadi ada banyak kelemahan, namun untuk saya pribadi ini sudah cukup dijadikan pegangan. Jika anda merasa tulisan ini berguna, silahkan di share dan di jangan lupa komentar.

 

 

Overfitting: To good to be true alias model jago kandang

Model dalam statistika digunakan untuk memprediksi suatu nilai dengan memasukkan nilai-nilai lain kedalam sebuah formula dengan harapan nilai yang dihasilkan dari model tersebut dekat dengan nilai aktualnya. Sebagaimana kita ketahui bahwa dalam membuat sebuah model, kita membagi data menjadi dua bagian yakni data training dan data testing. Biasanya saya membaginya 70% training dan 30% testing.

fittings

Setelah kita mendapatkan model dengan mempertimbangkan kelayakan model/ goodness of fit maka kita melakukan testing dengan data testing kita. Tapi masalahnya adalah bagaimana jika hasil goodness of fit, let’s say R square nya 99.9999999%? Anda merasa puas? Jawaban saya it’s too good to be true! Pengalaman saya, jika sebuah model memiliki R-square yang terlalu mendekati 100% maka sebaiknya kita menaruh curiga apakah  model kita overfitting? Apa lagi ini overfitting??

Anda tentu sudah familiar dengan error bukan? Jika model anda menghasilkan error untuk data yang training sangaaat kecil, maka artinya model tersebut bagus…. tapii… pada saat model anda digunakan untuk data lain diluar dari data yang anda gunakan maka kemungkinannya adalah error yang dihasilkan akan sangat tinggi. Dengan kata lain model anda jago kandang. hehe.

Kesimpulannya, jika anda menemukan sebuah model memiliki hasil goodness of fit sempurna… hal ini tanda awal yang baik bahwa yang anda lakukan sudah cukup baik. Namun demikian anda perlu memperhatikan bahwa model ini akan digunakan untuk data lain diluar dari data yang anda latih. Untungnya anda bisa membuat model anda lebih masuk akal dengan jurus yang bernama “regularization”. Stay tune in the datatalker!