Belajar Data Science dan Machine Learning dengan Python - Part 1 - Pengenalan Jupyter Notebook

Haloo semua! Semoga tetap sehat-sehat ya!

    Beberapa Postingan Author sebelumnya adalah mengenai pengenalan Machine Learning, A.I. dan Data Science. Pada kesempatan kali ini, Author ingin berbagi ilmu yang Author pelajari untuk mengimplementasi ketiganya ini, dengan menggunakan Python. Sebenarnya tidak perlu harus menggunakan Python, bahasa pemograman apapun selama teman-teman nyaman dan menguasai, boleh juga kok. Cuma, sepanjang yang Author pelajari dan cari-cari di Mbah Google, Banyak orang memilih menggunakan Python karena mudah dipelajari dan diimplementasi, serta banyak librari-librari Python bertebaran yang siap digunakan untuk Data Science dan A.I. sehingga lebih menghemat waktu dan biaya. 

    Jadiiii... disinilah Author menulis blog, dengan menggunakan Python ya teman-teman ^^ Sebelum kita memulai, Author akan membahas kebutuhan awal yang harus disiapkan. Teman-teman bisa mencoba meng-install dulu Anaconda di laptop kamu (saatnya ke Mbah Google, saya punya permintaan, tolong cari Download Anaconda), sesuaikan dengan OS yang kamu pakai ya, windows, mac, ataupun linux. 

Karena Author, pakai Anaconda lewat cara Docker, maka Author akan menyertakan langkah-langkah dengan docker ya (anggapan Author adalah para pembaca disini sudah memahami apa itu Docker, karena Author sudah pernah buat postingan mengenai Docker diawal awal). Teman-teman bisa mengecek di sini untuk langkah-langkah menginstall docker anaconda ya, atau bisa baca dari postingan Author aja (Author menyarankan untuk tetap melihat dari web Anaconda ya, karena bisa jadi langkah atau metode unduh nya berubah, karena Author tidak tahu kapan teman-teman baca postingan ini), yuk kita mulai.

    1. Dari terminal / Command prompt teman-teman yang sudah meng-install docker, mari kita mencari dulu docker image untuk anaconda:

Docker search continuumio

2. Setelah keluar daftar docker image yang tersedia, contoh: 

   Author akan menggunakan image miniconda3 sesuai contoh dari dokumentasi conda, karena miniconda3 lebih ke versi minimum dan kita tidak perlu librari berat lainnya, sementara kita baru akan mencoba. Toh kita tetap bisa memasang manual librari yang akan kita pakai kalau memang ada yang dibutuhkan nanti, jadi, pertama kita akan menarik image tersebut ke lokal docker kita. (Pastikan internet kamu tanpa batas kuota ya, karena imagenya cukup besar, +/- 150MB, kalau install yang anaconda3, totalnya +/- 1GB, kebayangkan beda di librari yang dipasangnya)

docker pull continuumio/anaconda3


3. Buat container docker nya dan jalankan miniconda3 nya

1. docker run -i -t continuumio/miniconda3 /bin/bash
#Alternatif, kita bisa install jupyter notebook server, supaya bisa berinteraksi dengan Anaconda melalui browser, lihat sumber untuk tahu apa itu Jupyter Notebook
2. docker run -i -t -p 8888:8888 continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='0.0.0.0' --port=8888 --no-browser"
# kalian bisa kasih nama container nya dengan tag --name setelah port, jadi 8888:8888 --name nama_container --allow-root
# kalian bisa memakai command -d atau detached, untuk awal kalian bisa tanpa -d ini dulu supaya ketauan kalau ada error, atau kalau jupyter notebook nya tidak aktif. Kalau kalian sudah cukup pede dockernya tidak akan ada error, boleh pakai -d. kalau kalian pakai command -d ini, kalian bisa masuk ke docker nya dengan docker exec -it <nama_container> bash lagi, lalu kalian bisa ketik jupyter notebook list didalam,
untuk melihat server mana yang aktif dan menyalin url nya ke browser. Cukup pakai -t -d -p, tanpa -i untuk mode detached. untuk tahu proses nya, kalian bisa pakai docker logs <nama docker>
# pastikan container terpasang dengan benar, cek dengan
docker ps -a
#kalau container tidak up, bisa coba di start
docker start anaconda3

--- Perintah diatas hanya akan aktif sampai kita menutup container karena perintah run awal ketika kita membuat containernya selalu memanggil fungsi create folder dll yang akan menimbulkan eror karena sudah ada foldernya, jadi
author akan buat secara manual ya supaya containernya bisa dibuka terus kemudian hari
(perintah diatas hanya bila kita akan terus menjalankan misalnya di private server)
1. docker run -t -d continuumio/miniconda3 /bin/bash
2. cd /opt/conda/bin
3. conda install jupyter -y # conda ini adalah execution file
4. mkdir /opt/notebooks
5. cd /opt/conda/bin # selalu dari folder ini untuk execute exe file jupyter
6. jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8890 --no-browser --allow-root # untuk menjalankan jupyter notebook pada port yang diinginkan

TAMBAHAN ** 
1. Perbedaan antara image miniconda dan miniconda3 adalah perbedaan versi python bawaannya. Miniconda menggunakan python 2.7, sementara miniconda3 python 3+ 
2. (Dibawah ini adalah cara-cara meng-install Jupyter Notebook, skip ke Section Selanjutnya Nomor 4 kalau kalian tidak tertarik dengan Jupyter Notebook)
Author meng-install Jupyter notebook dengan menggunakan perintah ke 2 diatas karena lebih enak menggunakan visual untuk pembelajaran :), tapi kembali lagi itu kebebasan dari pengguna. Bisa jadi teman-teman tidak menyukai tampilan Jupyter Notebook, atau ada preferensi lainnya. Di contoh web anaconda, ip nya pakai *, tapi ketika Author coba, akan kena error: The notebook server is listening on all IP addresses and not using encryption. This is not recommended / for info in socket.getaddrinfo(self.ip, self.port, 0, socket.SOCK_STREAM): socket.gaierror: [Errno -2] Name or service not known. Jadi Author mengarahkan ip localhost 0.0.0.0. Author juga memakai --allow-root dibandingkan contoh di web resminya, karena ada error: Running as root is not recommended.

Ketika sukses, maka tampilan di terminalnya akan seperti:






Dan teman-teman bisa mengakses nya lewat localhost:8899, atau bisa memasukkan url seperti di terminal, beserta token. perbedaaan ketika kita tidak memasukkan token, halamannya akan muncul seperti berikut:

Kalian bisa mengisi password, atau tetap memakai token untuk masuk ke halaman utama Jupyternya, sehingga muncul tampilan berikut:
Jupyter Notebook ini dipakai untuk kita bisa langsung melihat file dan langsung mengubah-ubah file dari browser. Kalau kalian punya file notebook nya, kalian bisa pakai tombol upload ya
4. Selanjutnya kita akan mengatur dan membuat virtual environment untuk menyimpan versi spesifik librari Python yang akan kita pakai selama pembelajaran dan proyek-proyek Python kita. Jadi ketika kita mau mengerjakan di OS manapun, maupun proyek apapun, sudah ada pengaturan yang kita tentukan, jadi lebih mempercepat pengerjaan, dan tidak menimbulkan konflik atau perbedaan ketika kita pakai lagi dimanapun. Oh ya, enaknya adalah environment ini bisa kita aktif / nonaktifkan sesuai kebutuhan environment yang kita pakai.

Untuk meng-install environment ini, ada perbedaan di Windows dan Ubuntu. Di Windows, kalian bisa menggunakan Anaconda Navigator, atau GUI client bagi kalian yang tidak suka menggunakan command prompt atau terminal. Karena Author menggunakan command prompt dan dari docker, maka Author akan menunjukkan dulu bagaimana dengan command ubuntu ya. Untuk windows langkah-langkahnya ada setelah ini.

Cara Ubuntu / Linux Docker Container :
Pertama kita akan masuk dulu ke container anaconda3 yang telah kita buat dengan perintah
Docker exec -it anaconda3 bash
Lalu di dalamnya, pertama kita akan membuat requirements untuk environment yang akan dipakai, tentu saja cara mudahnya adalah kita menyuruh Conda untuk melakukan nya dari awal sampai akhir.

1. Selalu pastikan conda nya update, dengan :conda update conda. Lalu masuk ke folder virtualenv untuk environment, biasanya ada di /opt/conda/envs, lalu ketikkan
pip freeze > requirements.txt

ini akan membuat sebuah file requirements.txt yang berisikan full package / librari yang dipakai oleh Conda. Teman-teman bisa mengatur sendiri librari mana saja yang mau dipakai, untuk contoh Author, Author akan menggunakan requirement yang sama dengan versi Windows (bisa di lihat di bawah di bagian Windows Anaconda ya). 

2.  kita akan membuat environment bernama myEnv, dengan perintah
conda create --name myEnv (kamu juga bisa menggunakan perintah singkat -n untuk --name) 

kamu juga bisa menentukan versi python yang akan dipakai dengan menambahkan python=3.*), contoh:

conda create --name myEnv python=3.8
Ketika sukses, maka hasilnya akan seperti berikut:

       Environment yang kita buat barusan, akan ada di folder /opt/conda/envs/myEnv. Kalau kita mau mengaktifkan environment ini, kita cukup mengetik conda activate myEnv, begitu juga kalau kita mau ganti, kita cukup me-nonaktifkan environmentnya dengan mengetik: conda deactivate, lalu mengaktifkan environment yang kita mau.  Untuk menghapus, perintahnya adalah : conda env remove -n myEnv

3. Aktifkan environment yang telah kita buat
conda activate myEnv
4. Instruksikan conda untuk meng-install seluruh librari yang kita pakai dan semua librari yang memiliki ketergantungannya 
conda install --file requirements.txt

Conda akan meminta konfirmasi kembali untuk librari yang akan dipasang, berikan jawaban y apabila kamu yakin, dan tunggu sampai proses unduh nya selesai.





 

5. Biasanya jika ada librari / package yang gagal, itu berarti ada dependency lainnya. Instruksikan kembali conda untuk meng-install ulang yang gagal tersebut
conda install YOUR_MISSING_DEPENDENCY_LIBRARY_PACKAGE

    Untuk meng-install versi khusus yang dimau, biasanya cukup  dengan perintah (biasa tergantung versi Python, atau bahkan bisa dari versi conda juga, selalu update conda nya dulu ya)

    conda install library_name version=x.x.x

Setelah semuanya, jangan lupa untuk keluar dulu dari environment yang kita buat dengan cara conda deactivate. 

Perlu diketahui ketika kita membuat environment baru, environment ini tidak otomatis terpasang di jupyter notebook. Jadi, kita harus memasang Librari tambahan untuk mengaktifkan environment di Jupyter Notebook, dengan perintah:

conda install nb_conda_kernels

kita kembali ke browser Jupyter notebook, dan kalian bisa lihat ada menu baru di pilihan new, yaitu Notebook -> Python 3, pilih ini, kita akan mengecek apakah environment yang kita buat bekerja / tidak


 Ketikkan import pandas, lalu klik tombol run, kalau tidak ada masalah, berarti kita sudah bisa, dan sedang menggunakan Librari Pandas. Lalu kita bisa mengetikan lagi perintah, misalkan mengecek versi librari Pandas yang kita pakai dengan perintah pandas.__version__ , kalau teman-teman benar, maka kalian akan mendapatkan versi Pandas sesuai dengan file requirements.txt kita sebelumnya. Dan Jupyter Notebook ini siap digunakan untuk bermain dengan Python :) 

Pada contoh Author, python version yang author pakai tidak kompatible, makanya author mendapatkan versinya 1.0.5. Sementara requirement untuk pandas 1.1.2
 - pandas=1.1.2 -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0']
  - pandas=1.1.2 -> python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0']
 Hehe... Untuk cek versi python yang dipakai, cukup ketik python --version saja di dalam folder env tadi ya




** Anaconda Navigator / Windows Setup
Kalau kalian memakai Anaconda Navigator, langkah pertama adalah kita akan membuat sebuah file .txt, kita beri nama saja requirements.txt, konsep dari file ini sama seperti file compose.json, ataupun package.json, file-file ini berisi librari apa saja yang akan kita pakai, versi yang akan kita pakai, dan librari yang memiliki ketergantungan dengan librari yang akan kita pakai. Berikut isi dari file requirements.txt

jupyter==1.0.0
lxml==4.5.1
MarkupSafe==1.1.1
matplotlib==3.3.2
notebook==6.0.3
numpy==1.18.1
openpyxl==3.0.4
pandas==1.1.2
Pillow==7.2.0
scikit-learn==0.23.2
scipy==1.4.1
seaborn==0.11.0 
SQLAlchemy==1.3.18

Lalu di Anaconda Navigator, pilih di menu sebelah kiri, ada menu Environments, kemudian ketika di klik, akan ada beberapa icon di bagian bawah kiri seperti create, clone, import atau remove. Kita bisa memilih menu Import. ikuti langkah-langkah popup selanjutnya seperti masukan Nama Environment, pilih file requirements.txt nya.

Oh ya, kalau misalkan teman-teman keluar dari container docker, dan dockernya statusnya exit, tinggal di start lagi, dan masuk lagi saja ke dockernya, lalu untuk menjalankan kembali jupyter notebooknya, cukup jalankan command:

jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8890 --no-browser --allow-root

Itulah cara-cara instalasi jupyter notebook. Mungkin ada yang miss ataupun ada enhancement dari teman-teman yang sudah ahli, silakan berbagi ya :)

Sekian dulu ya teman-teman. Selanjutnya kita akan mulai mempelajari python dengan jupyter notebook ya!

Berikut beberapa Sumber yang teman-teman bisa baca:
https://hub.docker.com/r/continuumio/anaconda3
https://docs.anaconda.com/anaconda/user-guide/tasks/docker/
https://jupyter.org/
https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html

Comments

Popular posts from this blog

Product Manager - Apa, Siapa & Bagaimana?

Upgrading Python version di Mac OS

Data Science - Pengenalan