پایتون زبان برنامه نویسی است که بسیار رشد کرده است و در بیشتر زمینه ها مانند طراحی وب، وب اسکرپینگ و استخراج داده ها، کار با پایگاه داده های رابطه ای و غیر رابطه ای NoSQL، نوشتن برنامه های چند پردازشی، کنترل همروندی، موازی و توزیع شده، برنامه های رویداد گرا (Event Driven)، برنامه نویسی فرستادن پیام (Message Passing)، نوشتن و ایجاد بازی ها و بسیاری دیگر از زمینه های کاربرد دارد.

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

یک زمینه مهم دیگر که لازم است تا برای پایتون پوشش داده شود، کاربرهای هوش مصنوعی مانند یادگیری ماشین (Machine Learning)، شبکه های عصبی مصنوعی (Artificial Neural Network)، پردازش تصویر، پردازش زبان طبیعی (Natural Language Processing) را پوشش دهد. برای هر یک از این کاربردها کتابخانه هایی نوشته شده اند ولی آن چه که برای ما مهم است، کتابخانه هایی هستند که برای یادگیری ماشین می توانیم به کار ببریم.

خوشبختانه کتابخانه های زیادی برای یادگیری ماشین و شبکه های عصبی مصنوعی و یادگیری عمیق (Deep Learning) در پایتون مانند Scikit-Learn و Tensorflow و Keras وجود دارند ولی چیزی که ما می خواهیم در این دوره از آن برای پیاده سازی الگوریتم های یادگیری (Learning Algorithms) به کار ببریم، کتابخانه متن باز به نام Scikit-Learn است. در واقع در مطلب های این دوره از زبان برنامه نویسی پایتون و کتابخانه Scikit-Learn کمک می گیریم تا بتوانیم برنامه هایی ساده یادگیری ماشین بنویسیم.

کتابخانه Scikit-Learn یکی از چندین کتابخانه ای است که برای کاربردهای یادگیری ماشین ایجاد شده است. این کتابخانه شامل پیاده سازی الگوریتم های یادگیری نظارت شده (Supervised Learning) و یادگیری نظارت نشده (Unsupervised Learning) مانند رگرسیون خطی (Linear Regression)، رگرسیون لوجستیک (Logestic Regression)، درخت تصمیم (Decesion Tree)، خوشه بندی (Clustering) و K-Means است.

Scikit-Learn کتابخانه ای است که بر روی ماژول دیگری به نام SciPy نوشته شده است. در واقع SciPy ماژولی به زبان پایتون است که برای کاربردهای ریاضی مانند آمار (Statistic)، جبر خطی (Linear Algebra) و انتگرال (Integral) کاربرد دارد.

یادگیری ماشین نیز زمینه ای است که الگوریتم های آن به زمینه های ریاضی آمار، جبر خطی و حساب دیفرانسیل و انتگرال (Calculus) وابسته است، بنابراین Scikit-Learn ماژول SciPy را برای کاربردهای ریاضی مورد نیاز برای پیاده سازی الگوریتم های یادگیری به کار گرفته است.

Scikit-Learn کتابخانه ای است شامل پیاده سازی بیشتر الگوریتم های یادگیری که از طریق کلاس ها استاندارد قابل دسترسی و به کار گیری هستند. این کتابخانه در کنار یادگیری ماشین می تواند برای زمینه داده کاوی (Data Mining) نیز به کار گرفته شود. این زمینه ها شامل خوشه بندی و رگرسیون خطی و یا کلاس بندی (Classification) است.

در کنار به کار گیری از کلاس های مربوط الگوریتم های یادگیری، از کتابخانه Scikit-Learn برای کاربردهای دیگر مانند تبدیل داده ها (Data Transformation)، گزینش ویژگی ها (یا انتخاب ویژگی ها – Feature Selection) کمک بگیریم. می توانید از اینجا فهرست کاملی از ویژگی ها و ابزارهای کتابخانه Scikit-Learn را بخوانید.

اما برای برنامه های یادگیری ماشین و داده کاوی، آیا کتابخانه Scikit-Learn کفایت می کند؟ به طور کلی در به کار گیری پایتون برای کاربردهای هوش مصنوعی مانند یادگیری ماشین، شبکه های عصبی مصنوعی و یادگیری عمیق کتابخانه های گوناگونی وجود دارد که چندین مورد از این کتابخانه ها را پیش در همین مطلب مانند Scikit-Learn و Tensorflow و Keras نام بردیم.

در کنار این کتابخانه های دیگری مانند NumPy، Pandas، SciPy و Matplotlib نیز لازم هستند. مطلب های این دوره (فهرست دوره مقدماتی یادگیری ماشین) تنها به مفاهیم یادگیری ماشین و الگوریتم های یادگیری از طریق کتابخانه Scikit-Learn می پردازد و تصمیم گرفته شده است که دیگر ماژول ها و حتی دیگر کاربردهای کتابخانه Scikit-Learn در مطلب های دیگری در غالب “دوره مقدمه های لازم برای یادگیری ماشین و داده کاوی پایتون” مطرح شده اند.

بنابراین تاکید می کنیم حتما پیش از خواندن ادامه مطلب این دوره، حتما وحتما می بایست مطلب های لینک زیر را بخوانید. در مطلب های لینک زیر سعی شده تا حد ممکن ماژول های Pandas، Numpy، SciPy، Matplotlib و همچنین برخی از ابزارهای کتابخانه Scikit-Learn توضیح داده شوند.

دوره مقدمه های لازم برای یادگیری ماشین و داده کاوی پایتون

دلیل به کار گیری زبان پایتون این است که پایتون زبانی فراگیر، با جامعه (Community) کاربری و توسعه دهندگان بالا، انجمن های پاسخ گویی فعال و از همه مهمتر زبانی است که بسیار ساده می توان آنرا یاد گرفت. در کنار کتابخانه های فراوانی که برای پایتون در زمینه یادگیری ماشین، یادگیری ژرف و شبکه های عصبی وجود دارد، تعداد فراوانی از دیگر ماژول ها و کتابخانه ها وجود دارند که می توانند شما را در نوشتن و ایجاد کردن یک سیستم همه کاره کمک کنند.