ژوپیترنوتبوکها یکی از مهمترین محیطهای توسعه پایتون و از محبوبترین ابزارها درزمینهٔ دادهکاوی یا یادگیری ماشین (یادگیری عمیق)هستند.
مقدمه ای بر یادگیری ماشینی با نوت بوک های ژوپیتر
اخیراً ، من روی نسخه ی دمو محاسبات پیشرفتهای کار می کردم که از یادگیری ماشینی برای تشخیص ناهنجاری ها در سایت یک کارخانه مورد استفاده قرار میگرفت. این نسخه دمو در واقع بخشی از طرح راه حل صنعتی هستند که در سال گذشته ارائه شده بودند. بر اساس مستندات GitHub نقشه ساخت یا بلوپرینت ها امکان اعلام مشخصاتی را که می تواند در لایه ها سازماندهی شود فراهم می کند و تمام اجزای مورد استفاده در لبه ساختارمرجع ، مانند سخت افزار ، نرم افزار ، ابزارهای مدیریت و تجهیز ابزار را مشخص می کند.
در ابتدای شروع پروژه ، من فقط درکی کلی از یادگیری ماشینی داشتم وحقیقتا دانش تخصصی انجام کار مفید با آن را نداشتم به همچنین اگرچه در مورد نوت بوک های ژوپیتر چیزهای زیادی شنیده بودم اما واقعاً نمی دانستم آنها دقیقا چی هستند و چگونه باید از آنها استفاده کرد.
از این رو مطالعه این این مقاله برای توسعه دهندگانی که می خواهند یادگیری ماشینی و نحوه انجام آن توسط نوت بوک های ژوپیتر را بفهمند، بسیار مفید خواهد بود. در این مقاله با ساخت یک مدل یادگیری ماشینی برای تشخیص ناهنجاری در داده های ارتعاش پمپ های مورد استفاده در یک کارخانه ، توسط نوت بوک های ژوپیتر آشنا خواهید شد. خوشبختانه برای مطالعه بیشتر و آشنایی با نحوه ساخت مدل های ML ، منابع بسیار زیادی در دسترس است.
نوت بوک ژوپیتر چیست؟
نوت بوک های محاسباتی به عنوان نوت بوک های آزمایشگاهی الکترونیکی برای مستندسازی رویه ها ، داده ها ، محاسبات و یافته ها مورد استفاده قرار میگیرند محیط توسعه ژوپیتر یا به اصطلاح دفترچه ژوپیتر و یا نوت بوک ژوپیتر یک محیط محاسباتی تعاملی است که یک محیط برنامه نویسی برای توسعه برنامه های کاربردی «علم داده» Data Science) ) فراهم می کند.
نوت بوک ژوپیتر کد های نرم افزاری، خروجی محاسباتی ، متن توضیحی و محتوای غنی(متنی که دارای کدهای معرفی کننده ی ایتالیک ، حروف سیاه و شکلهای دیگر حروف است) را در یک سند واحد ترکیب می کنند. نوت بوک ها امکان ویرایش و اجرای کد در مرورگر و نمایش نتایج محاسبه را در لحظه دارند. یک نوت بوک با پسوند .ipynb ذخیره می شود. پروژه نوت بوک ژوپیتر از ده ها زبان برنامه نویسی پشتیبانی می کند ، نام آن نشان دهنده پشتیبانی آن از جولیا Ju)) و پایتون Python (Py), و R است.
می توانید یک نوت بوک را با استفاده از یک سندباکس عمومی (سندباکس (Sandbox) محیطی است که معمولا برای تست بخشهای جدید یک نرم افزار یا اجرای ایمن نرم افزارها بدون اینکه محیط اصلی تحت تأثیر آن قرار بگیرد به کار میرود) یا فعال کردن روی سرور خود مانند ژوپیتر هاب امتحان کنید. ژوپیتر هاب نوت بوک هایی را برای چندین کاربر ارائه می دهد که میتواند نمونه های متعددی از سرور نوت بوک ژوپیتر تک کاربره را ایجاد ، مدیریت و پروکسی کند. در این مقاله ، ژوپیتر هاب بر روی Kubernetes اجرا شده است.
داشبورد نوت بوک ژوپیتر
هنگامی که سرور نوت بوک برای اولین بار راه اندازی می شود ، یک برگه مرورگر جدید باز می شود که داشبورد نوت بوک را نشان می دهد. داشبورد به عنوان صفحه اصلی نوت بوک های شما عمل می کند. هدف اصلی آن نمایش بخشی از سیستم فایل در دسترس کاربر و ارائه نمای کلی از هسته های در حال اجرا ، پایانه ها و خوشه های موازی است. شکل 1 یک داشبورد نوت بوک را نشان می دهد.

شکل 1: داشبورد نوت بوک.
در ادامه با بخش های اجزای داشبورد نوت بوک ها آشنا خواهید شد:
برگه فایل ها Files tab
برگه Files نمای سیستم فایل را در اختیار کاربر قرار می دهد. این نما معمولاً ریشه در پوشه ای دارد که سرور نوت بوک در آن راه اندازی شده است.
افزودن نوت بوک- Adding a notebook
یک نوت بوک جدید می تواند با کلیک روی دکمه New ایجاد شود یا با کلیک روی دکمه بارگذاری، بارگذاری شود.
برگه در حال اجرا- Running tab
برگه در حال اجرا نوت بوک هایی را که در حال حاضر برای سرور شناخته شده است را نمایش می دهد.
کار با نوت بوک ژوپیتر
هنگامی که یک نوت بوک باز می شود ، یک برگه مرورگر جدید ایجاد می شود که رابط کاربری نوت بوک را ارائه می دهد. اجزای رابط در بخشهای زیر توضیح داده شده است.
سرتیتر- Header
در بالای سند نوت بوک یک سربرگ وجود دارد که شامل عنوان دفترچه ، نوار منو و نوار ابزار است ، همانطور که در شکل 2 نشان داده شده است.

شکل 2: سرتیتر نوت بوک.
بدنه- Body
بدنه یک نوت بوک از سلول ها تشکیل شده است. سلولها را می توان به هر ترتیبی وارد و به دلخواه ویرایش کرد. محتویات سلولها در انواع زیر قرار می گیرند:
- سلولهای مارک داون Markdown : اینها حاوی متنی با قالب بندی نشانه گذاری ، توضیح کد یا حاوی سایر محتوای رسانه های غنی هستند.
- سلول های کد Code cells : اینها شامل کد اجرایی هستند.
- سلول های خام Raw cells : این موارد زمانی مورد استفاده قرار می گیرند که نیاز به افزودن متن به صورت خام ، بدون اجرا یا تغییر باشد.
کاربران می توانند سلول های نشانه گذاری و متن را بخوانند و سلول های کد را اجرا کنند. شکل 3 نمونه هایی از سلول ها را نشان می دهد.

شکل 3: نمونه هایی از سلول ها.
ویرایش و اجرای سلول
رابط کاربری نوت بوک مودال است. این بدان معناست که صفحه کلید بسته به نوع حالت نوت بوک عملکرد متفاوتی دارد. یک نوت بوک دارای دو حالت است: ویرایش و فرمان.
هنگامی که یک سلول در حالت ویرایش است ، در قسمت ویرایشگر است و دارای حاشیه سلول سبز ، همانطور که در شکل 4 نشان داده شده است . در این حالت ، شما می توانید مانند یک ویرایشگر متنی معمولی در سلول تایپ کنید.

شکل 4: یک سلول در حالت ویرایش.
هنگامی که یک سلول در حالت فرمان است ، دارای حاشیه سلول آبی است ، همانطور که در شکل 5 نشان داده شده است. در این حالت ، می توانید از میانبرهای صفحه کلید برای انجام کارهای نوت بوک و سلول استفاده کنید. به عنوان مثال ، فشار دادن Shift+Enter در حالت فرمان ، سلول فعلی را اجرا می کند.

شکل 5: یک سلول در حالت فرمان.
سلول های کد در حال اجرا
برای اجرای سلول کد:
روی هر نقطه در قسمت [] در سمت چپ بالای سلول کد کلیک کنید. با این کار سلول وارد حالت فرمان می شود.
Shift+Enter را فشار دهید یا Cell—> Run را انتخاب کنید.
سلول های کد به ترتیب اجرا می شوند. یعنی هر سلول کد تنها پس از اجرا شدن تمام سلول های کد قبل از آن اجرا می شود.
شروع کار با نوت بوک ژوپیتر
پروژه نوت بوک ژوپیتر از بسیاری از زبان های برنامه نویسی پشتیبانی می کند. ما در این مثال از IPython استفاده می کنیم. این زبان مشابه پایتون است اما تجربه تعاملی بیشتری را ارائه می دهد. برای انجام محاسبات ریاضی مورد نیاز برای یادگیری ماشین به کتابخانه های پایتون زیر نیاز دارید:
- NumPy : برای ایجاد و دستکاری بردارها و ماتریس ها.
- Pandas: برای تجزیه و تحلیل داده ها و درگیری و یا خراب کردن داده ها. پاندا داده هایی مانند فایل CSV یا پایگاه داده را می گیرد و از آن یک شی پایتون به نام DataFrame ایجاد می کند. دیتا فریم ساختار داده مرکزی در API Pandas است و شبیه صفحه گستردهای به شرح زیر است:
- DataFrame : داده ها را در سلول ها ذخیره می کند.
- یک DataFrame ستونها (معمولاً) و سطرهای شماره گذاری شده را نامگذاری کرده است.
- Matplotlib: برای تجسم داده ها.
- اسکلرن Sklern: برای یادگیری تحت نظارت و بدون نظارت. این کتابخانه ابزارهای مختلفی را برای انطباق مدل model fitting ، پیش پردازش داده ها ، انتخاب مدل و ارزیابی مدل ارائه می دهد. دارای الگوریتم ها و مدلهای یادگیری ماشین داخلی به نام برآوردگر estimators است. هر برآوردگر را می توان با استفاده از روش برازش خود بر روی برخی داده ها نصب کرد.
استفاده از نوت بوک ژوپیتر برای یادگیری ماشین
در این مقاله ما از مدل MANUela ML به عنوان نمونه نوت بوک برای بررسی اجزای مختلف مورد نیاز برای یادگیری ماشین استفاده خواهیم کرد. داده های مورد استفاده برای آموزش مدل در فایل raw-data.csv قرار دارد.
این نوت بوک از روند کاری که در شکل 6 نشان داده شده است پیروی می کند.

شکل 6: گردش کار نوت بوک برای یادگیری ماشین.
مرحله 1: داده های خام را کاوش کنید
از یک سلول کد برای وارد کردن کتابخانه های مورد نیاز پایتون استفاده کنید. سپس ، فایل داده های خام (raw-data.csv ) را به DataFrame با سری زمانی ، شناسه پمپ ، مقدار ارتعاش و برچسب نشان دهنده ناهنجاری تبدیل کنید. کد پایتون مورد نیاز در سلول 7 در شکل 7 نشان داده شده است.

شکل 7: وارد کردن کتابخانه ها و تبدیل داده های خام.
اجرای سلول یک DataFrame با داده های خام تولید می کند که در شکل 8 نشان داده شده است.

شکل 8: قاب داده با داده های خام.
اکنون DataFrame را تجسم کنید. نمودار بالا در شکل 9 زیر مجموعه ای از داده های ارتعاش را نشان می دهد. نمودار پایین داده های دارای برچسب دستی با ناهنجاری (1 = ناهنجاری ، 0 = طبیعی) را نشان می دهد. اینها ناهنجاری هایی هستند که مدل یادگیری ماشین باید آنها را تشخیص دهد.

شکل 9: تجسم داده های خام و ناهنجاری ها.
قبل از تجزیه و تحلیل، داده های خام باید تغییر شکل داده ، تمیز شوند و به فرمت های مناسب تر برای تجزیه و تحلیل تبدیل شوند. این فرایند را جمع آوری داده ها یا داده کاوی می نامند.
ما داده های سری زمانی خام را به قسمت های کوچکی تبدیل می کنیم که می تواند برای یادگیری تحت نظارت استفاده شود. شکل 10 کد نشان داده شده است.

شکل 10: ایجاد یک data frame جدید.
ما می خواهیم داده ها را به یک DataFrame جدید به قسمت های با طول 5 تبدیل کنیم. شکل 11 نمونه ای از مجموعه داده های سری زمانی را نشان می دهد.

شکل 11: نمونه ای از داده های سری زمانی.
اگر داده های نمونه خود را به قسمت هایی با طول = 5 تبدیل کنیم ، به نتایج مشابه شکل 12 می رسیم.

شکل 12: data frame جدید با قسمت ها.
اکنون با استفاده از کد شکل 13 داده های سری زمانی خود را چند قسمت میکنیم.

شکل 13: تبدیل داده ها به چند قسمت
شکل 14 داده ها را با قسمت هایی به طول 5 و برچسب در ستون آخر بررسی می کند.

شکل 14: قسمت هایی به طول 5 و برچسب در ستون آخر.
توجه: در شکل 14 ، ستون F5 آخرین مقدار داده است ، در حالی که ستون F1 قدیمی ترین داده ها برای یک قسمت معین است. برچسب L نشان می دهد که آیا ناهنجاری وجود دارد یا خیر.
داده ها اکنون برای یادگیری تحت نظارت آماده است.
مرحله 2: ویژگی و ستون های هدف
مانند بسیاری از کتابخانه های یادگیری ماشین ، Sklearn به ستون های ویژگی جداگانه (X) و هدف ( Y) نیاز دارد. مطابق شکل 15 داده های شما را به ستون های ویژگی و هدف تقسیم می کند.

شکل 15: تقسیم داده ها به ستون های ویژگی و هدف.
مرحله 3: آموزش و آزمایش مجموعه داده ها
یک عمل خوب این است که مجموعه داده های خود را به دو زیر مجموعه تقسیم کنید: یکی برای آموزش یک مدل و دیگری برای آزمایش مدل آموزش دیده.
هدف ما ایجاد مدلی است که به خوبی به داده های جدید تعمیم داده شود. مجموعه آزمایشی ما به عنوان نماینده داده های جدید عمل می کند. همانطور که در شکل 16 نشان داده شده است ما مجموعه داده ها را به 67 درصد برای مجموعه های آموزشی و 33 درصد برای مجموعه آزمایش تقسیم کردهایم.

شکل 16: تقسیم داده ها به مجموعه داده های آموزشی و آزمایشی.
ما می توانیم مشاهده کنیم که میزان ناهنجاری برای هر دو مجموعه تمرین و آزمون مشابه است. یعنی مجموعه داده ها نسبتاً مساوی تقسیم شده است.
مرحله 4: آموزش مدل سازی
ما آموزش مدل را با الگوریتم درخت تصمیمگیری طبقه بندی شده DecisionTreeClassifier انجام می دهیم. درخت تصمیم گیری یک روش یادگیری تحت نظارت است که برای طبقه بندی و رگرسیون استفاده می شود. هدف ایجاد مدلی است که ارزش متغیر هدف را با یادگیری قوانین تصمیم گیری ساده که از ویژگی های داده استنباط می شود ، پیش بینی کند.
DecisionTreeClassifier کلاسی است که طبقه بندی چند کلاسی را بر روی یک مجموعه داده انجام می دهد ، اگرچه در این مثال ما از آن برای طبقه بندی در یک کلاس واحد استفاده کرده ایم. DecisionTreeClassifier دو آرایه به عنوان ورودی می گیرد: یک آرایه X به عنوان ویژگی و یک آرایه Y به عنوان برچسب. پس از نصب ، می توان از مدل برای پیش بینی برچسب مجموعه داده های آزمایش استفاده کرد. شکل 17 کد ما را نشان می دهد.

شکل 17: آموزش مدل با DecisionTreeClassifier.
ما می توانیم ببینیم که مدل از نظر دقت نمره بالایی را کسب کرده است.
مرحله 5: مدل را ذخیره کنید
مدل را ذخیره کرده و مجدداً بارگذاری کنید تا مطمئن شوید که کار می کند ، همانطور که در شکل 18 نشان داده شده است.

شکل 18: ذخیره مدل.
مرحله 6: استنباط با مدل
اکنون که مدل یادگیری ماشین را ایجاد کرده ایم ، می توانیم از آن برای استنباط در داده های زمان واقعی استفاده کنیم.
در این مثال ، ما از Seldon برای ارائه مدل استفاده می کنیم. برای اینکه مدل ما تحت سلدون اجرا شود ، ما باید کلاسی ایجاد کنیم که متد پیش بینی داشته باشد. روش پیش بینی می تواند یک آرایه NumPy را دریافت کرده و نتیجه پیش بینی را به صورت زیر بازگرداند:
- یک آرایه NumPy
- لیستی از مقادیر
- یک رشته بایت
کد ما در شکل 19 نشان داده شده است.

شکل 19: استفاده از سلدون برای ارائه مدل یادگیری ماشین.
در نهایت همانطور که در شکل 20 نشان داده شده است ، باید آزمایش کنیم که آیا مدل می تواند ناهنجاری ها را برای لیستی از مقادیر پیش بینی کند با خیر.

شکل 20: استنتاج با استفاده از مدل.
ما می توانیم ببینیم که مدل برای نتیجه گیری نمره بالایی را کسب کرده است.
حرف اخر
برای تجربه این محیط جذاب میتوانید از طریق لینک زیر اقدام کنید:
ژوپیتر لب JupyterLab جدید منتشر شد
مفتخریم به اطلاع شما برسانیم که در حال حاضر نسخه ژوپیتر لب بتا در دسترس کاربران قرار گرفته است , رابط کاربری مبتنی بر وب نسل بعدی ژوپیتر لب برای استفاده روزانه منتشر شده است. (میتوانید از طریق Binder برای نصب آن اقدام کنید). ژوپیتر لب در حقیقت یک محیط توسعه تعاملی است که کار با نوت بوک ، کدها و دادهها را میسر و به مراتب آسانتر میکند.

روند تکامل ژوپیتر نوتبوک
پروژه ژوپیتر جهت توسعه نرمافزارهای Open Source یا منبع باز ، استانداردهای باز ( (Open standard) و خدمات محاسبات تعاملی و قابل تکرار کاربرد دارد. پروژه اصلی ژوپیتر نوت بوک در ابتدا در سال 2011 و به منظور ایجاد روایتهای محاسباتی قابل تکرار ایجاد شد. ژوپیتر نوتبوک به کاربران اجازه میدهد تا اسنادی که شامل live code هستند را با متن روایی ، معادلات ریاضی ، تجسم ، کنترلهای تعاملی و سایر خروجیهای غنی مدیریت کند و به اشتراک بگذارد. ژوپیتر همچنین بلوکهای اساسی مانند مرورگر فایل ، پایانهها و ویرایشگر متن را برای محاسبه تعاملی با دادهها ایجاد میکند.
ژوپیتر نوت بوک به دلیل رشد سریع علم داده (Data Science) ) و یادگیری ماشینی و افزایش محبوبیت نرمافزارهای منبع باز در شرکتها یا دانشگاهها بسیار محبوب شده است.
- امروزه میلیونها کاربر در بسیاری از حوزهها از علم داده و یادگیری ماشینی گرفته تا موسیقی و آموزش از ژوپیتر نوتبوک استفاده میکنند و جامعه بینالمللی ژوپیتر نوتبوک تقریباً شامل تمامی کشورهای جهان میشود.
- ژوپیتر نوتبوک در حال حاضر از بیش از 100 زبان برنامهنویسی توسعه یافته پشتیبانی میکند
- بیش از 1.7 میلیون نوت بوک عمومی ژوپیتر در GitHub میزبانی شده است. نویسندگان ژوپیتر نوتبوک را همراه با تحقیقات علمی ، مجلات دانشگاهی ، روزنامه نگاری داده ، دورههای آموزشی و کتابهای مخصوص منتشر میکنند.
ناگفته نماند که نرمافزارهای دیگر مانند اجرای کد از فایلهای متنی به صورت تعاملی با نوت بوک با چالشهایی نیز روبرو شده است و عملاً سفارشی سازی و گسترش نوت بوک ژوپیتر کلاسیک که بر اساس فناوریهای وب سال 2011 ساخته شده است کمی دشوار است.
ژوپیتر لب در دسترس است

ژوپیتر لب یک محیط توسعه تعاملی برای کار با نوت بوک ها ، کد و داده است. مهمتر از همه ، ژوپیتر لب از نوت بوک های ژوپیتر پشتیبانی کاملی میکند. علاوه بر این ، ژوپیتر لب این امکان را برای شما فراهم میکند که از ویرایشگرهای متن ، پایانهها ، نمایشگرهای داده و سایر اجزای سفارشی سازی درکنار نوت بوک ها استفاده کنید.
ژوپیتر لب سطح بالایی از یکپارچگی بین نوت بوک ها ، اسناد و فعالیتها را ایجاد میکند. مثل :
- کشیدن و رها کردن (درگ اند دراپ Drag-and-drop ) برای مرتب سازی مجدد سلولهای نوت بوک و کپی آنها بین نوت بوک ها.
- اجرای کدها به صورت تعاملی از فایلهای متنی (.py ، .R ، .md ، .tex ، و غیره)
- با اتصال یک کنسول کد به یک هسته نوت بوک میتوانید کدها را به صورت تعاملی و بدون درهم ریختگی جستجو کنید.
- امکان ویرایش فرمتهای محبوب مانند Markdown ، JSON ، CSV ، Vega ، VegaLite و موارد دیگر با پیش نمایش زنده
بیش از سه سال است که ژوپیتر لب با بیش از 11000 تعهد و 2000 نسخه از بستههای npm و پایتون در حال ساخت است. همچنین علاوه بر توسعه دهندگان اصلی ، بیش از 100 مشارکت کننده از جامعه برنامه نویسی ، به ساخت ژوپیتر لب کمک کرده اند.
برای شروع ، مستندات ژوپیتر لب را برای بررسی دستورالعملهای نصب و راهحل حتماً مطالعه کنید و یا از JupyterLab with Binder استفاده کنید. همچنین میتوانید از ژوپیتر هاب برای استفاده بهتر از ژوپیتر لب بهره بگیرید.
امکان سفارشی سازی ژوپیتر لب
ژوپیتر لب بر روی یک سیستم افزونه ساخته شده است که به شما امکان میدهد که ان را با نصب پلاگین های اضافی سفارشی سازی کنید و یا حتی آن را ارتقا دهید. در واقع ، قابلیت داخلی خود ژوپیتر نوتبوک، پایانهها، نرمافزار مدیریت فایل، سیستم منو و غیره توسط مجموعهای از پسوندهای اصلی ارائه میشود.
- همچنین پلاگین های دیگر میتوانند در موارد زیر نیز به شما کمک کنند:
- ارائه موضوعات جدید ، ویرایشگران فایل و بینندگان یا ارائهدهندگان خروجیها در نوت بوک ها.
- افزودن موارد منو ، میانبرهای صفحه کلید یا گزینههای تنظیمات پیشرفته
- ارائه یک API برای سایر برنامههای افزودنی
برنامههای افزودنی ایجاد شده توسط انجمن در GitHub با موضوع ژوپیتر اکستنشن به صورت اختصاصی برچسب گذاری شدهاند و در حال حاضر شامل نرمافزار مدیریت فایل (GeoJSON ، FASTA و غیره) ، ادغام Google Drive ، مرورگر GitHub و پشتیبانی ipywidgets است.
اکستنش های ژوپیتر لب

در حالی که بسیاری از کاربران ژوپیتر لب افزونههای اضافی را نصب میکنند، شاید برخی از شما بخواهید اکستنش اختصاصی خود را ایجاد کنید. API اکستنش ژوپیتر لب در طول سری انتشار بتا در حال تکامل است و در JupyterLab 1.0 تثبیت میشود. برای ساخت اکستنش های اختصاصی ژوپیتر لب لازم است به راهنمای توسعه دهنده ژوپیتر اکستنش و قالبهای افزونه TypeScript یا JavaScript مراجعه کنید.
PhosphorJS، یک کتابخانه جدید جاوا اسکریپت برای ایجاد برنامههای کاربردی وب با قابلیت توسعه، عملکرد بالا و رومیزی توسعه یافته برای ژوپیتر لب ساخته است که از فناوریهای جاوا اسکریپت مدرن مانند TypeScript ، React ، Lerna Yarn و webpack استفاده میکند. آزمایشهای واحد ، مستندات، استانداردهای برنامه نویسی سازگار و تحقیقات تجربه کاربری همه و همه برای ارائه برنامهای با کیفیت بالا لحاظ شده است.
حرف اخر
با قابلیت هایی جذابی که ژوپیتر لب دارد توجه همه را به خود جلب میکند . در این مقاله یکسری از ویژگی های جذاب ژوپیتر لب را با هم مرور کردیم برای اشنایی بیشتر با سایر این ویژگی ها باما همراه باشید.
10 دلیلی که شما را متقاعد میکند از JupyterLab برای کدنویسی علم داده استفاده کنید
مرور کلی
JupyterLab یک محیط کدنویسی فوق العاده برای انجام کارهای مربوط به علم داده میباشد.این 10 دلیل افراد را قانع میکند که برای کدنویسی علم داده به جای نوتبوکهای Jupyter از JupyterLab استفاده کنند.
با Jupyter اخت شدهاید؟ زمان آن رسیده که به JupyterLab روی بیاورید!
از برنامهنویسان پایتون بپرسید که کدام محیط کدنویسی را ترجیح میدهند، جواب همواره نوتبوکهای Jupyter خواهد بود. صادقانه زمانی که در مورد علم داده صحبت میکنیم Jupyter بخشی جداییناپذیر است. ما پذیرفتهایم که این بهترین محیط کدنویسی پایتون است. حتی من هم فریب این طرز فکر را خورده بودم.
اجازه دهید حرفی که چندی پیش یکی از مربیانم در حوزهی علم داده به من گفت را با شما به اشتراک بگذارم – “وقت آن رسیده که از نوتبوکهای Jupyter گذر کنیم، چیزی بهتر از آن وجود دارد”. غافلگیر شدم. بهتر از نوتبوکهای Jupyter؟ من اولین گامهای خود را در علم داده به کمک Jupyter برداشتم، چطور میتوانستم از آن عبور کنم؟
حالا محیط کدنویسی جایگزین چه هست؟ JupyterLab که ارتقا یافته است. Jupyter تا آنجا که میدانیم با ارتقاهایی که شدیدا به آن نیاز بود و با وجود تمام ویژگیهای خوب گذشته به JupyterLab تبدیل شده است و باور کنید که شما عاشق کار کردن با JupyterLab برای انجام کارهای علم داده خواهد شد.
بنابراین در این مقاله، من 10 دلیل به شما ارائه میکنم که باعث میشود بخواهید بلافاصله به JupyterLab کوچ کنید.
اگر در صنعت علم داده تازه وارد هستید یا پیش از این هیچوقت از Jupyter استفاده نکردهاید، پیشنهاد میکنم که این مقاله را تا انتها بخوانید چرا که معرفی خوبی برای نوتبوکهای Jupyter محسوب میشود. همچنین، شما باید این دورهی جذاب و رایگان در مورد ترفندها، راهنماییها و فوتوفنهای علم داده را مشاهده کنید.

فهرست مطالب
دلیل #1 – همهچیز زیر یک سقف
دلیل #2 – طرحبندی انعطافپذیر
دلیل #3 – بازآرایی سلولها
دلیل #4 – کپی کردن سلولها بین نوتبوکها
دلیل #5 – دفترچههای یکسان، دیدگاههای بیشتر
دلیل #6 – کنسولهای کد
دلیل #7 – تمها همهجا
دلیل #8 – اجرای کد از یک فایل متنی
دلیل #9 – پیشنمایش همزمان برای Markdown
دلیل#10 – تغییر آسان به نمایش کلاسیک نوتبوک
دلیل #1 – همهچیز زیر یک سقف
آیا میدانستید که نوتبوک کلاسیک Jupyter پشتیبانی برای ویرایش متن و ترمینال بعلاوهی نوتبوکهای محبوب را ارائه میدهد؟ بسیاری از دانشمندان علم داده از این نکته بیخبر هستند! اما این تقصیر ما نیست چرا که این ویژگیها یکپارچه نبوده و لذتی در استفاده از آنها وجود نداشت. صادقانه، احساس میشد که آدم با سه نرمافزار متفاوت کار میکند، نه یک نرمافزار. اما به لطف JupyterLab کار کردن با این ویژگیهای متفاوت تجربهی بسیار بهتری را برای شما به ارمغان خواهد آورد.
JupyterLab نوتبوکهای کلاسیک، ویرایشگر متن، ترمینال و نمایشگر راهنما را زیر یک سقف آورده است! این یک تجربهی یکپارچه است که شما عاشقش خواهید شد. JupyterLab نیز از دیگر فرمتهای فایل برای نمایش jpeg، pdf، CSV و دیگر فرمتها پیشتیبانی میکند.
دلیل #2 – طرحبندی انعطافپذیر
اما مشاهدهی بسیاری از این پنجرهها میتواند طاقتفرسا باشد. خب به همین دلیل است که JupyterLab با طرحبندی انعطافپذیر ارائه شده است که میتوانید فضای کاری خود را به هر نحوی که دوست دارید سازماندهی کنید. تمام آنچه که نیاز است انجام دهید کشیدن (drag)، انداختن (drop) و تغییر سایز تبها به هر نحوی که میخواهید است. این به شما اجازه میدهد که همزمان با چندین تب به آسانی کار کنید:
JupyterLab یک نوار کناری در سمت چپ که قابلیت جمع شدن دارد را ارائه میدهد که شامل برخی از تبهایی است که بیشترین استفاده را داشتهاند مثل مرورگرهای فایل، کرنلهای در حال اجرا و پالت فرمان (command palette) که کار را برای شما بسیار کارآمدتر میکند:
JupyterLab: نوار کناری
دلیل #3 – بازآرایی سلولها
به عنوان یک دانشمند علم داده، اغلب کار و نتایج خود را در نوتبوکهای Jupyter ارائه میدهم. و معمولا در آخر باید سلولهای خود را بازآرایی کنیم تا برای مخاطبان خود مفهوم باشد. در چنین وقتهایی است که آرزو میکنیم یک عامل ذاتی در Jupyter وجود داشت که به ما اجازه میداد به راحتی سلولها را هر کجا که میخواهیم بکشیم و بیندازیم (drag and drop) به جای آنکه از روش قدیمی برش و چسباندن (copy and paste) استفاده کنیم. خب اکنون در JupyterLab این قابلیت وجود دارد.
میتوانید سلول کد را بکشید و بیندازد و هر کجا که خواستید قرار دهید، که کار بازآرایی را مثل آب خوردن کرده است. اکنون کار شما مورد ستایش بیشتری قرار خواهد گرفت چرا که نوتبوکهای شما ظاهر فوقالعادهای دارد و بیش از پیش مفهومی است.
دلیل #4 – کپی کردن سلولها بین نوتبوکها
کشیدن و انداختن سلول در یک نوتبوک یک چیز است، اما انجام همین کار بین نوتبوکهای مختلف بطور کلی یک چیز دیگر است. JupyterLab به شما اجازه میدهد که سلولها را تنها با گزینهی کشیدن و انداختن از یک نوتبوک به نوتبوک دیگر کپی کنید.

دلیل #5 – نوتبوکهای یکسان، نمایشهای بیشتر
بعضی اوقات کار کردن با نوتبوکهای طولانی آزاردهنده است، مخصوصا زمانی که میخواهید بخشهای مختلف نوتبوک را بطور همزمان وارسی کنید. اینجاست که عملکرد چند نمایشی به کار میآید. اکنون میتوانید چندین نمایش از یک نوتبوک را در JupyterLab بصورت کنار هم برای مقایسه داشته باشید.
نه تنها میتوانید یک نمایش جدید ایجاد کنید، بلکه هر تغییری که در هر یک از نمایشها ایجاد کنید در تمام آنها منعکس میشود و در نوتبوک ذخیره خواهد شد! من این عملکرد را هنگام انتخاب ستونهای مشخصی از فریم داده (dataframe) کاربردی میدانم اما اسم دقیق آنها را به یاد نمیآورم. بنابراین، به جای چاپ فریمداده بصورت مکرر، فقط فریمداده را با یک نمایش جداگانه باز میکنم. با وجود این ویژگی دیگر لازم نیست کدهای تکراری را در حالیکه اطلاعات ضروری را همزمان مشاهده میکنم بنویسم – با یک سنگ دو نشان زدن!
دلیل #6 – کنسولهای کد
همهی ما کنسولهای کد را بخاطر سادگیای که ارائه میدهند دوست داریم. میخواهید قسمتی از کد را امتحان کنید یا بررسی کنید که چگونه عمل میکند؟ از کنسولهای کد استفاده کنید. آنها بخاطر تعاملی بودن جایی برای تست کردن هستند.
یکی از دلایلی که هنگام استفاده از کنسولهای کد در JupyterLab دوست دارم این است که میتوانید از آنها به عنوان log محاسباتی که در نوتبوک انجام دادهاید استفاده کنید. این ویژگی هنگامی که میخواهید به تارخچهی کد خود نگاهی بیندازید کاربردی میباشد. تمام آنچه که باید انجام دهید کلیکراست در هر جایی از نوتبوک و انتخاب New Console برای نوتبوک است. سپس در جهت کنسول جدید حرکت کرده و Show Kernel Activity را انتخاب کنید و تمام. حالا تمام logها برای نوتبوک شما در کنسول ذخیره خواهد شد.
دلیل #7 – تمها همهجا
چه کسی تمها را دوست ندارد؟ JupyterLab تم داخلی تیره برای نوتبوک دارد، چیزی که همهی ما آرزویش را دارید مخصوصا زمانی که آخر شبها زیر نور کم در حال کار کردن هستیم. اما Jupyter در اینجا متوقف نمیشود. آنها نه تنها برای ویرایشگرهای متن، بلکه برای ترمینالها هم تم دارند. آنها حقیقتا میخواهند که شما با هر آنچه که در حال کار کردن با آن هستید راحت باشید.
دلیل #8 – اجرای کد از یک فایل متنی
میخواهید یک فایل متنی را با بخشی از یک کد که در آن نوشته شده است به اشتراک بگذارید؟ قبل از ارسال دوباره بررسی کنید – یک کد باگ دار تجربهی پایداری را به ارمغان نمیآورد. JupyterLab به شما اجازه میدهد که برای فایل متنی یک کنسول بسازید. از اینجا شما میتوانید به سادگی بخشی از کد خود را در فایل متنی هایلایت کنید، Shift + Enter را فشار داده و بررسی کنید که کار میکند یا نه:
دلیل #9 – پیشنمایش همزمان برای Markdown
اغلب اوقات میخواهید پروژهی علم دادهی خود را با گروه کاری به اشتراک بگذارید و در این مواقع است که برای مستند سازی کار خود به فایل markdown روی میآورید.
فایلهای markdown بخاطر تمام انعطافپذیری و عملکردی که ارائه میدهند عالی هستند. اما در Jupyter کار کردن با آنها کمی خستهکننده میشود، هنگامی که باید سلول خود را دوباره و دوباره اجرا کنید فقط برای اینکه ببینید فایل شما چطور به نظر میرسد یا اینکه آیا ترکیب درست را به کار بردهاید یا نه.
برای غلبه بر این مشکل، JupyterLab به شما اجازه میدهد که فایل markdown خود را همزمان با کار کردن با آن از پیش رویت کنید. این نه تنها بسیار کارآمدتر است بلکه همچنین کار کردن با یک فایل markdown را لذتبخش میکند.
دلیل #10 – تغییر آسان به نمایش کلاسیک نوتبوک
برای اضافه کردن این ویژگی آخر کمی بیمیل بودم چون نمیخواهم به کار کردن با Jupyter برگردید. اما میفهمم که برای برخی از شما سخت است که از چیزی که سفر علم دادهی خود را با آن شروع کردهاید دل بکنید.
بنابراین، برای روزها که دلتنگ کار کردن با نوتبوکهای خوب و قدیمی Jupyter میشوید، راهی خوب و آسان برای بازگشت به محیط کاری قدیمی وجود دارد. تنها کاری که باید انجام دهید این است که /lab در URL را با /tree جایگزین کنید.
حرف اخر
در این مقاله ما متوجه ویژگی های منحصر به فرد ژوپیتر لب از جمله تجربه یک پارچه، طرح بندی انعطاف پذیر، بازآرایی سلولها، کپی کردن سلول ها بین نوت بوک ها و … اشنا شدیم تا به انتخاب بهتری برسیم .