یادگیری ماشین با پایتون - sklearn (قسمت اول)

امروزه کمتر کاربردی از تکنولوژی را می‌توان یافت که از یادگیری ماشین و هوش مصنوعی بهره نگرفته باشد. از شناسایی چهره و تحلیل احساسات گرفته تا تشخیص عیب در سیستم‌های صنعتی و نظارت‌های تصویری در زمینه‌های مختلف، همه و همه با به کارگیری یادگیری ماشین شاهد پیشرفتی غیرقابل وصف بوده اند.

پایتون یکی از سریع‌ترین و قوی‌ترین پلتفرم‌ها در زمینه یادگیری ماشین است که این روزها با سرعت زیادی درحال رشد است و کتابخانه‌ها و ماژول‌های متعددی برای توسعه در زمینه‌ی یادگیری ماشین وجود دارد که از جمله آن‌ها می‌توان به ‌‌Pandas و Scikit Learn اشاره کرد که در این آموزش به معرفی و نحوه استفاده از کتابخانه Scikit learn اشاره‌هایی خواهیم کرد.

قدم اول : معرفی Scikit Learn – کتابخانه مورد استفاده پایتون در یادگیری ماشین

تاریخچه :

اگر شما با اصول برنامه نویسی پایتون آشنایی دارید و به دنبال استفاده از کتابخانه قوی‌ای برای یادگیری ماشین هستید Scikit Learn کتابخانه مناسبی برای این کاربرد است. این کتابخانه اولین بار در سال 2007 توسط دیوید کورناپئو به عنوان یک پروژه تابستانه گوگل توسعه یافت. پیوستن متیو بروچر به این پروژه و شروع استفاده او از این کتابخانه به عنوان بخشی از پایان‌نامه خود و سپس پیوستن INRIA به پروژه در سال 2010 منجر به انتشار نسخه اولیه (نسخه بتا 0.1) این کتابخانه  به صورت عمومی در اواخر ژانویه 2010 شد.

این پروژه در حال حاضر بیش‌از 30 مشارکت‌کننده فعال دارد و از طرف شرکت‌های بزرگی مانند INRIA، گوگل، TINYclues و بنیاد نرم‌افزار پایتون حمایت‌ مالی شده‌است.

کتابخانه Scikit_Learn چیست ؟

همانطور که می‌دانید برای یادگیری ماشین از روش‌های مختلفی شامل یادگیری بانظارت، یادگیری بدون‌نظارت، یادگیری نیمه‌نظارتی و یادگیری تقویتی استفاده می‌شود که کتابخانه Scikit Learn برای پیاده‌سازی  طیفی از الگوریتم‌های بانظارت و بدون‌نظارت در پایتون مناسب است.

لایسنس این کتابخانه تحت مجوز BSD است و در بسیاری از توزیع‌های لینوکس و در زمینه‌های مختلف علمی و تجاری استفاده شده‌است.

این کتابخانه زیرمجموعه کتابخانه SciPy [1]در پایتون می‌باشد که باید قبل از استفاده از Scikit Learn نصب گردد.

پشته‌ی[2] کتابخانه‌های موردنیاز شامل موارد زیر هستند:

· NumPy : اساس این پکیج برای کار با آرایه‌های چند بعدی است

· SciPy : کتابخانه اساسی برای محاسبات علمی می‌باشد

· Matplotlib : برای رسم نمودارهای 2 بعدی و 3 بعدی استفاده می‌شود

· IPython : یک کنسول تعاملی پیشرفته برای کار با پایتون است

· Sympy : برای کار با نمادهای ریاضیات[3] استفاده می‌شود

· Pandas : برای کار با ساختمان داده‌ها و آنالیز داده‌ها کاربرد دارد

ماژول‌ها و افزونه‌های ‌SciPy معمولا با Scikits نامگذاری می‌شوند؛ به همین دلیل کتابخانه ارائه شده برای یادگیری ماشین نیز با نام Scikit Learn نامگذاری شده‌است.

قبل از استفاده از هر ماژول داشتن یک دید کلی از کتابخانه‌های مورد نیاز برای فهمیدن سطح پشتیبانی و کاربرد آن‌ها توصیه می‌شود. به این معنی که قبل از استفاده تمرکز و مطالعه‌ای بر روی حل نگرانی‌هایی از جمله استفاده راحت از کدهای ماژول، کیفیت کدها، مستندات و پرفورمنس آن کتابخانه داشته باشیم.

اگرچه اینترفیس و رابط اصلی کار ما پایتون است ولی از کتابخانه‌های C مانند NumPy برای آرایه‌ها و عملیات ماتریسی، LAPACK، LibSVM و Cython نیز در مواردی استفاده می‌شود.

صفات[4] چه چیزهایی هستند ؟

تمرکز این کتابخانه فقط بر روی مدل‌سازی داده‌ها است و عمل لودکردن داده‌ها، دستکاری و جمع‌بندی داده‌ها را انجام نمی‌دهد. برای اضافه کردن این ویژگی‌ها به پروژه می‌توان از کتابخانه‌های دیگری مانند NumPy و Pandas استفاده کرد.


چند مورد از مدل‌های معروف با استفاده از Scikit Learn شامل موارد زیر است:

  • مدل Clustring: برای گروه‌بندی داده‌های بدون برچسب مانند KMeans استفاده می‌شود.
  • مدل Cross Validation: برای تخمین عملکرد مدل‌های تحت‌نظارت بر داده‌های ناپیدا مورد استفاده قرار می‌گیرد
  • مدل Datasets:  برای آزمایش مجموعه داده‌ها و برای ایجاد مجموعه داده‌ها با ویژگی‌های خاص برای بررسی رفتار مدل استفاده می‌شود.
  • مدل Dimensionality Reduction: برای کاهش تعداد ویژگی‌ها در داده برای خلاصه‌سازی، تصویرسازی و انتخاب برخی ویژگی‌ها استفاده می‌شود.
  • مدل Ensemble methods: برای ترکیب پیش‌بینی‌ها از چندین مدل تحت نظارت استفاده می‌شود.
  • مدل Feature Extraction: برای تعریف ویژگی‌ها در داده‌های تصویر و متن استفاده می‌شود.
  • مدل Feature selection: برای شناسایی ویژگی‌های معنی‌دار و استفاده از آن‌ها برای مدل‌های تحت نظارت استفاده می‌شود.
  • مدل Parameter Tuning: برای به‌دست آوردن بهترین خروجی از مدل‌های تحت‌نظارت استفاده می‌شود.
  • مدل Manifold Learning: برای خلاصه‌سازی و ترسیم داده‌های چندبعدی پیچیده استفاده می‌شود.
  • مدل Supervised Models: گستره‌ی بزرگی از متدها است که شامل مدل‌های خطی تعمیم‌یافته، متدهای تنبل، روش‌های تجزیه و تحلیل داده، شبکه عصبی، ماشین‌های بردار پشتیبان و درخت تصمیم می‌باشد.


مثال: کلاس بندی و رگرسیون با درخت‌ها

در اینجا با مثالی ساده کارکرد این کتابخانه را نشان می‌دهیم.

در این مثال از الگوریتم کلاس‌بندی درخت تصمیم بر روی دیتاست iris استفاده می‌کنیم. دیتاست iris دیتاستی شامل 150 دیتا با 4 ویژگی است که با توجه به این صفات، 150 گل زنبق موجود در دیتاست را به 3 کلاس تقسیم‌بندی می‌کند.

کلاس‌بندی را ابتدا بر روی داده‌های آموزشی انجام می‌دهیم و در ادامه با داده‌های تست موجود صحت مدل ساخته شده را مورد سنجش قرار می‌دهیم؛ و در آخر دقت کلاس‌بندی و ماتریس درهم‌ریختگی چاپ می‌شود.

پس از اجرای کدهای بالا خروجی ما به صورت زیر نمایش داده می‌شود:

به عنوان کاربران پر استفاده از این کتابخانه می‌توان به Inria، Mendeley، wise.io، Evernote،Telecom ParisTech  و AWeber اشاره‌کرد. اگرچه این آمار مربوط به شرکت‌هایی است که استفاده خود از این کتابخانه را اطلاع داده‌اند، به طور کلی صدها کمپانی کم یا زیاد از این ماژول در پروژه‌های خود استفاده می‌کنند زیرا این کتابخانه نتیجه مناسبی دارد و برای  پروژه‌های پیش‌تولید و پروژه‌های کامل مناسب است و آن‌ها را تحت پوشش قرار می‌دهد.


مراجع:

https://scikit-learn.org/

https://machinelearningmastery.com/a-gentle-introduction-to-scikit-learn-a-python-machine-learning-library/

[1]Scientific Python

[2] Stack

[3]Symbolic mathematics

[4] features