کتابخانه scikit-learn

پیدایش scikit-learn در سال 2007 و توسط David Cournapeau به عنوان بخشی از پروژه‌ی برنامه نویسی تابستانه‌ی گوگل صورت گرفت. scikit-learn یک کتابخانه‌ی اُپن سورس پایتونی میباشد که بمنظور تسهیل فرآیند ساخت مدل‌های مبتنی بر الگوریتم های آماری و توکار یادگیری ماشین ساخته شده است. عمده دلیل استفاده از این کتابخانه به مستندات کامل، کاربری آسان API آن و جامعه توسعه دهنگانی که در بهبود و پیشرفت آن مشارکت دارند، بر میگردد.


*: مستندات مربوط به scikit-learn را می‌توانید در این لینک پیدا کنید.


توجه به این نکات خالی از لطف نیست که اولاً از scikit-learn عمدتاً بمنظور مدل‌سازی داده‌ها استفاده می‌شود و نه برای دستکاری یا خلاصه کردن آنها؛ ثانیاً این کتابخانه به کاربران خودش یک API یکپارچه و با کاربری آسان ارائه می‌دهد تا مدل های متنو‌ع‌شان را با حداقل زحمت ممکن اجرا کرده و در بستر‌ موردنظر بکار ببرند؛ ثالثاً در تعامل با این کتابخانه نیازی به داشتن دانشی عمیق در حوزه‌ی ریاضیات بمنظور حل مسائل نمیباشد.


*: جبر خطی، نظریه احتمالات و حساب دیفرانسیل و انتگرال چند متغیره، برخی از مباحث ریاضی هستند که بمنظور درک مدل‌ها نیازمند آشنایی با آنها می‌باشید. برای اطلاعات بیشتر در مورد این مدل‌ها به این لینک مراجعه کنید.


مدل‌های کتابخانه scikit-learn به دو دسته تقسیم می شوند: تحت‌نظارت (Supervised) و بدون‌نظارت (Unsupervised)، که هر دو به طور تخصصی در ادامه‌ی این فصل توضیح داده خواهند شد. این تیپ دسته‌بندی در تشخیص اینکه بکارگیری کدام مدل بر روی یک مجموعه داده‌ی مخصوص، منجر به دستیابی به بیشترین اطلاعات ممکن خواهد شد، بدرد میخورد.
در کنار کاربرد اصلی این کتابخانه که در خصوص مسائل یادگیری تحت نظارت، منحصر به پیش‌بینی رفتار آینده‌ی سیستم و در خصوص مسائل یادگیری بدون نظارت، منحصر به خوشه‌بندی داده‌ها میشود؛ از scikit-learn به دلایل زیر نیز استفاده می‌شود:

  • انجام عملیات اعتبارسنجیِ متقابل(cross-validation) و آنالیز معیارهای عملکرد سیستم، بمنظور درک نتایج به دست آمده از مدل پیاده شده و بهبود عملکرد آن.
  • به دست آوردن مجموعه داده‌های نمونه، بمنظور آزمایش الگوریتم‌ها بر روی آنها.
  • اجرای عملیات استخراج ویژگی(feature extraction)، جهت استخراج ویژگی های بارز و تعیین کننده‌ای از تصاویر یا داده‌های متنی.

اگرچه در دنیای یادگیری ماشین ترجیح داده میشود که از scikit-learn به عنوان کتابخانه‌ای برای شروع کار مبتدیان استفاده شود، اما این بدین معنا نیست که این کتابخانه در سطوح بالا کاربرد ندارد؛ از این رو میتوان به چندین شرکت بزرگ در سراسر جهان اشاره که از scikit-learn به این دلیل استفاده میکنند که به آنها این امکان را می دهد تا محصولات یا خدمات خود را با استفاده از مدل های در حال تحول بهبود ببخشند و با سرعت زیادی آزمایش‌های خود را روی ایده‌های جدید اجرا کنند.
در لیست زیر به برخی از شرکت های پیشرویی که از scikit-learn استفاده می کنند، اشاره شده است:

  • سرویس Spotify:
    یکی از محبوب‌ترین اَپلیکیشن های اِستریم موسیقی میباشد که از scikit-learn به دلیل تنوع گسترده الگوریتم‌های آن و سهولت پیاده‌سازی مدلهای جدید، در روند توسعه‌ی خود استفاده میکند. به عبارت دقیق تر، Spotify از scikit-learn در بخشی از مدل ریکامِندر موزیک(مدلی بمنظور پیشنهاد موزیک های جدید به کاربر) خود استفاده کرده است.
  • موتور جستجوی booking.com:
    این موتور فراجستجوی مسافرتی در میان انبوهی از راه‌حل های دیگر توانسته است با بکارگیری صحیح scikit-learn دست به توسعه‌ی تعداد زیادی از الگوریتم ها بزند که منجر به ایجاد مدل های بسیار پیشرفته شده اند و به نوبه‌ی خود در توسعه سیستم‌های متعددی، از سیستم های ریکامِندر گرفته تا جلوگیری از فعالیت‌های متقلبانه مورداستفاده قرار بگیرند.
  • اَپلیکیشن evernote:
    این اَپلیکیشن یادداشت برداری و مدیریت فایل، از scikit-learn برای حل چالش هایی که ممکن است در هر مرحله از روند توسعه ی یک مدل طبقه‌بندی کننده پیش بیاید، استفاده کرده است. مراحل چنین روندی از کاوش داده شروع و تا ارزیابی مدل ادامه پیدا میکنند.
  • سایت change.org:
    به لطف الگوریتم‌های متنوع و سهولت استفاده از scikit-learn، این سازمان قادر بوده است تا با ایجاد کمپین‌های بازاریابی ایمیلی، توجه میلیون‌ها مخاطب در سراسر جهان را به خود جلب کند.

*: می‌توانید با مراجعه به این آدرس، با شرکت‌های دیگری که از scikit-learn استفاده می‌کنند آشنا شده و ببینید که به چه دلیلی از آن استفاده می‌کنند.


بطور خلاصه اینطور میتوان گفت که scikit-learn یک کتابخانه‌ی پایتونی اُپن سورس میباشد که از یک API توکار بمنظور بکارگیری و اعمال مدل‌های یادگیری ماشین در قبال مسائل داده‌محور استفاده می کند. کاربرد اصلی آن در مدل‌سازی داده‌ها به‌نحوی میباشد که بتوان از آن بمنظور ارائه‌ی پیش‌بینی‌هایی در خصوص موارد خارج از دید و مشاهده نشده استفاده کرد؛ اما با این وجود، کاربرد آن نباید فقط به این مورد محدود شود زیرا این کتابخانه به کاربران خود اجازه می‌دهد تا نتایج را بر اساس مدلی که آموزش داده میشود پیش‌بینی کرده و همچنین عملکرد مدل را نیز تحلیل کنند.