Jupyter ++ R

2018-09-05
Jun Sok Huhh | ๐Ÿ lostineonomics.com

Jupyter?

R์—๋Š” ์ด๋ฏธ RStudio๋ผ๋Š” ํ›Œ๋ฅญํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ(IDE: Integrated Development Environment)์ด ์žˆ๋‹ค. R์„ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ, ํŽธ๋ฆฌํ•˜๊ณ  ์ผ๊ด€๋œ ๊ฐ์ฒด(๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ๋“ฑ) ๋ทฐ์–ด, ์ˆœ์ฐจ ์‹คํ–‰ ๋“ฑ ์ˆ˜๋งŽ์€ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” RStudio ์™ธ์— ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค ๊ฒƒ์ด๋‹ค. Python์—๋„ RStudio๋ฅผ ๋ณธ๋”ด IDE๊ฐ€ ์žˆ์„ ์ •๋„๋‹ˆ ๊ทธ ์šฐ์ˆ˜์„ฑ์„ ์ƒˆ์‚ผ ๊ฐ•์กฐํ•  ํ•„์š”๊ฐ€ ์—†๊ฒ ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ Jupyter์— ๊ด€์‹ฌ์„ ๋‘์–ด์•ผ ํ• ๊นŒ? (์ฐธ๊ณ ๋กœ Jupyter๋Š” ๊ณผ๊ฑฐ์— IPython์œผ๋กœ ์•Œ๋ ค์กŒ๋˜ ๋…ธํŠธ๋ถ์˜ ํ›„์† ๋ฒ„์ „์ด๋‹ค. ๋‘˜์€ ๊ฑฐ์˜ 100% ํ˜ธํ™˜๋œ๋‹ค.) ์‚ฌ์‹ค ๋‚˜๋„ Jupyterํ•˜๋ฉด ์ €์ ˆ๋กœ Python์ด ๋– ์˜ค๋ฅธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Jupyter๋Š” Python์—์„œ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค. Jupyter๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋Œ์•„๊ฐ€๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์Šคํƒ€์ผ(์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ)์˜ ๋ทฐ์–ด์— ๊ฐ€๊น๋‹ค. ํ˜น์ž๋Š” ๋†๋‹ด ๋ฐ˜ ์ง„๋‹ด ๋ฐ˜์œผ๋กœ Jupyter๊ฐ€ Julia + Python + R์˜ ์•ฝ์ž๋ฅผ ๋”ฐ์„œ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. Jupyter๋ฅผ R๊ณผ ์“ฐ์ง€ ๋ชปํ•  ์ด์œ ๋Š” ์—†๋‹ค.

Go lighter!

R์ด๋“  Python์ด๋“  ๊ฐ€๋ณ๊ฒŒ ์“ฐ๋ ค๋ฉด ๊ทธ๋ƒฅ ๋ญ”๊ฐ€ ๋š๋”ฑ ๋˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. Jupyter์˜ ๊ฐ€์žฅ ํฐ ๋งค๋ ฅ์€ ๋ณ„๋„์˜ ํด๋ผ์ด์–ธํŠธ ์—†์ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋Œ์•„๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํŽ˜์ด์ง€ ์—ด๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” url์„ ์ฃผ์†Œ์ฐฝ์— ์น˜๋ฉด ๋์ด๋‹ค. ๊ฐ€๋ฒผ์šด ์‹คํ–‰ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๋Œ€๋ชฉ๋„ ์žˆ๋‹ค. ๋งŒ์ผ ๋กœ์ปฌ ๋ฐ์Šคํฌํƒ‘์— ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋Œ€์‹ , AWS, DigitalOcean ํ˜น์€ ์ด์šฉ ์ค‘์ธ ์‚ฌ์„ค ์„œ๋ฒ„์— ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์น˜ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ผ๋‹จ ์„ค์น˜๊ฐ€ ๊ฐ€๋ฒผ์›Œ์•ผ ํ•œ๋‹ค. ์šฉ๋Ÿ‰์ด ํฌ๊ฑฐ๋‚˜ ์„ค์น˜๊ฐ€ ๊นŒ๋‹ค๋กœ์šฐ๋ฉด ์ง„์ž…์žฅ๋ฒฝ์ด ๋†’์•„์ง„๋‹ค. ์ผ์ข…์˜ ์„œ๋ฒ„ ๋ฒ„์ „ Jupyter์ธ JupterHub๊ฐ€ ์ผ๋‹จ ์ด ์ ์—์„œ ๋งค์šฐ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค.

Go mobile!

๋งŒ์ผ ์‹คํ–‰ ํ™˜๊ฒฝ๋งŒ ๋ฌธ์ œ๋ผ๋ฉด RStudio ์—ญ์‹œ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ตฌ๋™ ๋˜๋Š” ์„œ๋ฒ„ ๋ฒ„์ „์ธ RStudio Server๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์Šคํƒ ๋“œ์–ผ๋ก  ๋ฒ„์ „๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์กฑํ•จ์— ์ „ํ˜€ ์—†๋‹ค. ์›๊ฒฉ์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ๋ชจ๋ฐ”์ผ์€ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ์š”์†Œ๋‹ค. ๊ธ‰ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ์œผ๋กœ ๋ณด๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด? ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์€ ์—ฌ๊ธฐ์„œ ์˜คํžˆ๋ ค ๋…์ด ๋œ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ iOS์˜ ๊ฒฝ์šฐ OS์˜ ์ด์Šˆ๋กœ ์ธํ•ด์„œ ์™ธ๋ถ€ ํ‚ค๋ณด๋“œ๋กœ RStudio Server์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋ฐฉํ–ฅ ํ‚ค๊ฐ€ ๋จน์ง€ ์•Š๋Š”๋‹ค. ์ž‘์€ ํ™”๋ฉด์„ ์ œ์™ธํ•˜๋”๋ผ๋„ ํŽธํ•˜๊ฒŒ ์ž‘์—…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. Jupyter์˜ ๊ฒฝ์šฐ iOS์—์„œ๋Š” ๊ฝค ์“ธ๋งŒํ•œ ์•ฑ์ด ์žˆ๋‹ค. Juno๋ผ๋Š” ์•ฑ์€ ์ฃผํ”ผํ„ฐ ์„œ๋ฒ„์™€ iOS๋ฅผ ๋งค๋ˆํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ์™ธ๋ถ€ ํ‚ค๋ณด๋“œ ์ž‘์—…์—๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

Write and share!

R์—์„œ rmd๋ผ๋Š” ํฌ๋งท์„ ํ†ตํ•ด์„œ ์‰ฝ๊ฒŒ ์ฝ”๋“œ+๋ฌธ์„œ ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. R์„ ๊ธฐ์ค€์œผ๋กœ ๋ดค์„ ๋•Œ์—๋Š” ํŽธ๋ฆฌํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ง€๋งŒ, ๊ทธ ์ž์ฒด๋กœ ๊ทธ๋ฆฌ ๊ฐ€๋ณ์ง„ ์•Š๋‹ค. Jupyter๋Š” ์ฝ”๋“œ์™€ markdown ํ™˜๊ฒฝ์„ ์ž์œ ๋กญ๊ฒŒ ์˜ค๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ๊ฐ€๋ณ๊ณ  ๊ฒฝ์พŒํ•˜๋‹ค. ๋š๋”ฑ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์‹œ๋„ํ•˜๊ธฐ์—๋Š” Jupyter๊ฐ€ ๋ถ€๋‹ด์ด ๋œํ•˜๋‹ค. ๋ฌผ๋ก  ๋ณธ๊ฒฉ์ ์ธ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค๊ธฐ์—๋Š” knitr์ด๋ผ๋Š” ๋ง‰๊ฐ•ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๊ฑฐ๋Š๋ฆฐ R์ด ๋” ํŽธํ•˜๋‹ค!

์•„์šธ๋Ÿฌ Jupyter notebook์€ github์—์„œ ๋ฌธ์„œ ๊ทธ๋Œ€๋กœ ์ž˜ ๋ณด์ธ๋‹ค. ์ฆ‰, ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ๊ทธ๋ƒฅ ๊ณต์œ ํ•ด๋„ ์˜์‚ฌ์†Œํ†ต์— ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด ์  ์—ญ์‹œ rmd ํฌ๋งท์— ๋น„ํ•ด jupyter๊ฐ€ ์ง€๋‹Œ ์žฅ์ ์ด๋‹ค.

Installation

๋จผ์ € ์ด์šฉํ•˜๋ ค๋Š” ๋จธ์‹ ์— Jupyter๊ฐ€ ๊น”๋ ค ์žˆ๋‹ค๊ณ  ์ „์ œํ•˜๊ฒ ๋‹ค. Python์„ ์ด์šฉํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ pip install ํ˜น์€ conda install ๋“ฑ์„ ํ™œ์šฉํ•ด ์•Œ๋งž๊ฒŒ ์ธ์Šคํ†จํ•˜๋„๋ก ํ•˜์ž. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Jupyter๋Š” ์–ธ์–ด๋ฅผ ํƒœ์šธ ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ์˜ท๊ณผ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ปค๋„(์–ธ์–ด)๋กœ R์„ ์ธ์‹์‹œ์ผœ์ค„ ์ˆ˜๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด R์—์„œ IRkernel ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  installspec์„ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Jupyter ํ™˜๊ฒฝ์—์„œ ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ R ์ปค๋„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ปค๋„์„ ์„ ํƒํ•˜๊ณ  RStudio์—์„œ ์“ฐ๋“ฏ์ด R์„ ์“ฐ๋ฉด ๋œ๋‹ค.

์˜ˆ์‹œ ๋ฌธ์„œ: LINK

๐ŸพJun Sok Huhh | ๐Ÿ [lostineonomics.com]

Reference