ترفندهای ژوپیتر نوت بوک – راهنمای کاربردی


در این مطلب، ترفندهای ژوپیتر نوت بوک بیان شده است. پیش از این، در مطلب «ژوپیتر نوت بوک (Jupyter Notebook) و افزونه های آن — راهنمای کاربردی» به افزونههای گوناگون ژوپیتر نوتبوک، به ویژه مواردی که در حوزه «علم داده» (Data Science) و «یادگیری ماشین» (Machine Learning) بسیار کاربردی هستند، پرداخته شد. در ادامه، نکات، افزونهها و ترفندهایی که ضمن کار با «ژوپیتر نوت بوک» (Jupyter Notebook) کاربردی هستند، مورد بررسی قرار گرفته است.
Gist
Gist یک راهکار ساده برای به اشتراکگذاری «تکه-کدهایی» (اسنیپتها | Snippets) است که توسط «گیتهاب» (Github) میزبانی میشوند. این مورد به کاربر این امکان را میدهد تا یک Gist از کدهای موجود در یک سلول ژوپیتر نوتبوک، بسازد.
فرض میشود که کاربر یک اکانت گیتهاب دارد. ابتدا باید Gist را نصب کند. افرادی که از brew استفاده میکنند، میتوانند دستورات زیر را در ترمینال اجرا کنند.
اکنون، کاربر نیاز به آن دارد که وارد گیتهاب شود (Github).
Gist به کاربر این امکان را میدهد که محتوا را از یک فایل یا کلیپبورد آپلود و یک نام فایل یا توضیحات به آن اضافه کند. کد زیر را باید در یکی از سلولهای ژوپیتر نوت بوک وارد کرد. کاربر نیاز به تغییر دادن myfile.py و my description دارد.
اکنون، کاربر باید کدهای یک سلول را که میخواهد به Gist بدهد، به کلیپبورد بفرستد و در واقع کپی کند (در گنو/لینوکس و ویندوز CTRL+C و در مک ⌘C). با اجرای سلول بالا، محتوای کلیپبورد به Gist منتقل خواهد شد. در نهایت، URL مربوط به Gist، به کاربر بازگردانده میشود.
https://gist.github.com/b9e4b509cb6ed80631b617b53a65f0b9
هنگامی که کاربر قصد دارد Gist خود را به روز رسانی کند، نیاز به استفاده از نام محلی فایل خود دارد. در ادامه این مطلب، دیگر ترفندهای ژوپیتر نوت بوک مورد بررسی قرار میگیرد.
استفاده از متدهای display() و print() برای چارچوب داده
IPython.display در حال حاضر در ژوپیتر نوتبوک نصب شده است. اگر کاربر یک عنصر را چاپ کند، نیازی به استفاده از متد print() ندارد. اگر هدف چاپ کردن بیش از یک عنصر باشد، متد display() خروجیهای بهتری را ارائه میکند.
این یکی از ترفندهای ژوپیتر نوت بوک است که برای «دانشمندان علم داده» (Data Scientist)، کاربردی خواهد بود.
خروجی بدون استفاده از دستور print()
اگر کاربر تمایلی به تایپ کردن عبارت print() برای همه خروجیها ندارد، میتواند از روشی که در ادامه بیان شده است، استفاده کند. کاربران «کوندا» (Conda) باید کد زیر را در سلول وارد کنند.
این یکی از ترفندهای ژوپیتر نوت بوک است که برای برنامهنویسانی که حوصله تایپ کردن زیاد را ندارند، کاربردی خواهد بود.
اکنون، قطعه کد بالا تست میشود. ابتدا، کدهای زیر وارد میشوند.
خروجی به صورت زیر است.
2 2
کاربرانی که ژوپیتر نوت بوک را با PIP نصب کردهاند، میتوانند این مورد را بدون استفاده از کد بالا، به عنوان حالت پیشفرض قرار دهند. ابتدا باید ipython/profile_default/ipython_config.py./~ را با یک ویرایشگر باز و متن زیر را در آن چسباند (Paste).
سپس، باید ژوپیتر نوت بوک را بازنشانی (Restart) کرد تا تغییرات به طور کامل اعمال شوند.
دستورات بش بدون !
کاربر میتواند از دستورات بش، بدون ! استفاده کند. از جمله مثالهایی که در این رابطه میتوان بیان کرد، موارد زیر هستند.
دیگر کلیدهای میانبر مفید و کاربردی در ژوپیتر نوت بوک
تابع | کلید میانبر |
شکستن (جداسازی) یک سلول | - + CTRL + SHIFT |
ادغام سلولها | SHIFT + M |
حذف یک سلول | DD |
تعریف تیترهای H3 ،H2 ،H1 و H4 | ۱، ۲، ۳، ۴ |
افزونههای Nbextensions
پیشنهاد میشود که کاربر، پیش از استفاده از افزونههایی که در ادامه بیان خواهند شد، Nbextensions را نصب کند. بسته jupyter_contrib_nbextensions حاوی مجموعهای از بستههای غیر رسمی ساخته شده به وسیله جامعه کاربران ژوپیتر نوت بوک است که عملکرد ژوپیتر نوت بوک را بهبود میبخشند.
روش نصب jupyter_contrib_nbextensions در ادامه بیان شده است. برای نصب افزونه jupyter_contrib_nbextensions در ژوپیتر نوت بوک، سه گام وجود دارد. ابتدا باید بسته pip پایتون نصب شود. سپس، خود افزونههای نوت بوک باید به پوشه داده ژوپیتر کپی شوند. در نهایت، افزونههای نصب شده نوت بوک را میتوان با استفاده از دستورات توکار ژوپیتر و یا به راحتی، با بهرهگیری از افزونه سرور jupyter_nbextensions_configurator نصب کرد که به عنوان یک وابستگی این مخزن، نصب شده است. گام نصب بسته پایتون برای انجام نصب بدون مشکل با عناصر اضافی مانند قالبهای pre-/postprocessors ،nbconvert و exporters الزامی است.
۱. نصب بسته پایتون
در ادامه، گامهای مربوط به نصب بسته پایتون بیان شده است.
PIP
همه nbextensions موجود در مخزن به عنوان بخشی از یک بسته پایتون فراهم شدهاند که به صورت معمول با استفاده از pip و یا setup.py قابل نصب هستند. برای نصب نسخه کنونی از PyPi، کافی است که کد زیر نوشته شود.
pip install jupyter_contrib_nbextensions
به طور جایگزین، میتوان از انشعاب اصلی مخزن، نصب را انجام داد.
pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
همه گزینههای متداول نصب اعمال میشود، برای مثال، میتوان از پرچم (Flag | فلگ) upgrade-- برای انجام یک ارتقا یا e- برای یک نصب قابل ویرایش استفاده کرد.
کوندا
بستههای کوندا برای افزونههای نوتبوک و jupyter_nbextensions_configurator از conda-forge در دسترس هستند. کاربر میتواند هر دو را با استفاده از دستور زیر نصب کند.
این دستور به طور خودکار فایلهای «جاوا اسکریپت» (JavaScript | JS) و CSS را (با استفاده از jupyter contrib nbextension install --sys-prefix) نصب میکند، بنابراین گام دوم نصب که در ادامه آمده است، قابل چشمپوشی محسوب میشود.
نصب از یک مخزن کلون شده
کاربر میتواند نصب را از یک مخزن کلون شده نیز انجام دهد که برای توسعه میتواند مفید واقع شود. کاربر میتواند مخزن را با استفاده از دستور زیر کلون کند.
سپس، باید یک نصب فایل ویرایش از pip را به صورت زیر انجام داد.
۲. نصب فایلهای جاوا اسکریپت و CSS
در این گام، فایلهای جاوا اسکریپت و CSS مربوط به nbextensions در پوشه جستجوی سرور ژوپیتر کپی و برخی از فایلهای پیکربندی (Config) ویرایش میشوند.
یک زیردستور jupyter در ادامه ارائه شده است.
این دستور، دو کار انجام میدهد: نصب فایلهای nbextension و ویرایش فایلهای پیکربندی nbconvert. بخش اول اساسا یک پوشش (Wrapper) حول محور jupyter nbextension install فراهم شده توسط نوتبوک است و فایلهای جاوا اسکریپت و CSS مربوط را به پوشه داده مناسب کپی میکند. بخش دوم، فایلهای پیکربندی jupyter_nbconvert_config.json و jupyter_notebook_config.json را به صورتی که در ادامه و در قسمت گزینهها بیان شده است، ویرایش میکند. این دستور میتواند بیشتر گزینههای فراهم شده در ژوپیتر را شامل مواردی که در ادامه بیان شدهاند، بگیرد.
- user--: برای نصب در پوشههای خانگی ژوپیتر کاربر است.
- -system--: برای انجام نصب در پوشههای ژوپیتر در گستره سیستم است.
- --sys-prefix برای نصبت در sys.prefix پایتون و نمونهها در محیط مجازی است.
- symlink-- برای symlink کردن nbextensions به جای کپی کردن هر فایل است (برای پلتفرمهای غیر ویندوزی توصیه شده است).
- -debug--: برای داشتن خروجیهای کلامیتر مورد استفاده قرار میگیرد.
- علاوه بر این موارد، دو پرچم (Flag) گزینههای دیگر فراهم شدهاند تا فقط عملیات config-editing یا صرفا file-copy انجام شود.
- only-files--: برای ویرایش فایلهای پیکربندی بدون ویرایش کردن هر فایل پیکربندی مورد استفاده قرار میگیرد.
- only-config--: برای ویرایش فایلهای پیکربندی بدون کپیکردن/سیملینکینگ هر فایل nbextension مورد استفاده قرار میگیرد. این کار، موجب ویرایش فایلهایی که در ادامه میآیند در پوشه پیکربندی ژوپیتر نوت بوک میشود.
- jupyter_nbconvert_config.json برای استفاده از برخی از کلاسهای فراهم شده در ماژول پایتون jupyter_contrib_nbextensions.nbconvert_support است.
- jupyter_notebook_config.json برای فعال کردن افزونه سرور (serverextension) است.
در نهایت، فلگ گزینه perform-running-check-- به منظور جلوگیری از اقدام نصب در صورتی است که به نظر برسد سرور نوتبوک در حال حاضر در حال اجرا است (به طور پیشفرض، نصب همچنان انجام خواهد شد، حتی اگر یک سرور نوتبوک در حال اجرا به نظر برسد). به طور مشابه، یک دستور uninstall نیز فراهم شده است که همه فایلهای nbextension را از پوشههای ژوپیتر حذف میکند.
۳. فعال/غیرفعال کردن افزونهها
برای استفاده از یک nbextension، کاربر نیاز به فعالسازی آن دارد. این کار به رابط نوتبوک میگوید که آن را بارگذاری کند. برای انجام این کار، میتوان از دستور فرعی ژوپیتر استفاده کرد که در ادامه آمده است.
برای مثال:
برای غیر فعال کردن مجدد افزونه، میتوان از دستور زیر استفاده کرد.
به طور جایگزین و البته سادهتر، میتوان از افزونه سرور jupyter_nbextensions_configurator استفاده کرد که به عنوان وابستگی برای این مخزن نصب شده است و برای فعال و غیر فعال کردن nbextensions منحصر به فرد، همچون پیکربندی گزینههای آنها، قابل استفاده است. سپس، میتوان سربرگ nbextensions را روی صفحه نوتبوک درخت (داشبورد/داشبورد) فعال کرد تا امکان پیکربندی nbextensions فراهم شود. در آنجا، کاربر به داشبوردی دسترسی دارد که افزونهها با استفاد از چکباکسها قابل فعال/غیرفعال شدن هستند. علاوه بر آن، مستندات کوتاهی برای هر افزونه نمایش داده میشود و گزینههای پیکربندی ارائه میشوند.
۴. نصبهای پیچیدهتر
اغلب nbextensions در اینجا، باید به خوبی با jupyterhub کار کنند (زیرا jupyterhub برای هر کاربر منحصر به فرد، سرورهای معمول نوتبوک را میسازد)، اما با jupyterlab کار نخواهد کرد (زیرا چارچوب جاوا اسکریپت jupyterlab برای نوتبوک متفاوت و همچنان با سرعت، در حال توسعه است).
Move Selected Cells
پیشنهاد میشود که کاربر Move Selected Cells را با فعال کردن آن از سربرگ Nbextensions نصب کند.
این ترفند از مجموعه ترفندهای ژوپیتر نوت بوک، هنگامی که کاربر سلولها را سازماندهی میکند، بسیار مفید واقع میشود. میتوان یک سلول یا سلولهای انتخاب شده را با گزینه Option/Alt + Up/Down جا به جا کرد.
Tabnine
jupyter-tabnine امکان استفاده از تکمیل خودکار کد با استفاده از «یادگیری عمیق» (Deep Learning)، را فعال میکند.
با استفاده از دستورات زیر، میتوان آن را نصب کرد.
گاهی نیاز است که ژوپیتر نوت بوک را چندین بار بازنشانی کرد تا دستورات بالا به درستی عمل کنند. کاربر میتواند Tabnine را در عمل، در انیمیشین زیر مشاهده کند.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- آموزش یادگیری ماشین با پایتون
- مجموعه آموزشهای هوش مصنوعی
- ۵ محیط توسعه یکپارچه (IDE) پایتون برای یادگیری ماشین — راهنمای کاربردی
- ابزارهای یادگیری ماشین متن باز — راهنمای کاربردی
^^