با پایتون میتوانید چکارهایی را انجام دهید؟
اگر دارید به یادگیری پایتون فکر میکنید و یا اینکه جدیدا شروع به یادگیری آن کردهاید، ممکن است از خودتان بپرسید که:
از پایتون برای چکارهایی میتونم استفاده کنم؟
خب، این سوالی است که جواب دادن به آن ممکن است کمی پیچیده باشد. کاربردهای بسیار زیادی برای پایتون وجود دارد.
اما با گذشت زمان به این نتیجه رسیدم که سه نوع کاربرد عمومی و محبوب برای پایتون وجود دارد که بهتر است آنها را توضیح دهیم:
- توسعه وب
- علوم داده – یادگیری ماشین، آنالیز داده و بصریسازی داده
- اسکریپت نویسی
بیایید هر مورد را به صورت جداگانه بررسی کنیم.
توسعه وب
وب فریمورکهایی که براساس پایتون نوشته شدهاند؛ مانند جانگو و فلسک، اخیرا توانستهاند محبوبیت بسیار زیادی را بدست بیاورند.
این فریمورکهای وب به شما کمک میکنند تا اپلیکیشنهای مبتنی بر سرور (Back-End) را ایجاد کنید. کدهای این بخش روی سرور اجرا میشوند و کاری با دستگاه کاربر یا مرورگر وب ندارند (Front-End).
چرا من به یک فریمورک نیاز دارم؟
فریمورکها باعث میشوند که روند پیادهسازی یک اپلیکیشن برای شما بسیار آسانتر شود. فریمورکها میتوانند به شما ابزارهایی را برای کار با بانکهای اطلاعاتی، URLها، ایجاد صفحات HTML و… را بدهد.
از کدام فریمورک پایتون باید استفاده کنم؟
جانگو و فلسک دو مورد از محبوبترین فریمورکهای پایتون به شمار میروند. به شما پیشنهاد میکنم که از این دو مورد در مراحل اولیه کارتان استفاده کنم.
تفاوت بین جانگو و فلسک در چیست؟
من یک خلاصه را در رابطه با این مقاله برای شما فراهم کردهام:
- فلسک به شما سادگی، انعطافپذیری و کنترل کامل را میدهد.
- جانگو تجربهای از کامل بودن را میدهد، شما یک پنل ادمین، رابط بانک اطلاعاتی، ORM، ساختار دایرکتوری کامل و… را به صورت پیشفرض در اختیار دارید.
کدام مورد؟
- اگر میخواهید روی بدست آوردن تجربه و یادگیری تمرکز داشته باشید و یا اینکه میخواهید کنترل بسیار بیشتری روی تمام پکیجهایی که استفاده میکنید داشته باشید، به شما فلسک را پیشنهاد میدهم.
- اگر میخواهید روی محصول نهایی تمرکز کنید و با اپلیکیشن بزرگ و پیچیدهای طرف هستید، به شما پیشنهاد میدهم که جانگو را انتخاب کنید.
به صورت سادهتر، اگر شما مبتدی هستید به نظر میرسد که فلسک بسیار انتخاب بهتری خواهد بود، به این خاطر که کامپوننتهای کمتری در آن تعبیه شده و همه چیز سادهتر ست. اگر دنبال شخصیسازی بیشتری باشید، فلسک باز هم انتخاب مناسبی است.
استفاده از فلسک برای ساخت REST APIها انعطافپذیری بیشتری نسبت به جانگو را به شما میدهد.
علوم داده – یادگیری ماشین، آنالیز داده و بصریسازی داده
ابتدای کار بیایید با یادگیری ماشین آشنا شویم:
فکر میکنم بهترین راه برای یادگیری ماشین از طریق یک مثال باشد.
بیایید تصور کنیم که شما قصد ساخت یک اپلیکیشن را دارید که به صورت خودکار مواردی که در یک عکس وجود دارد را تشخیص میدهد.
برای مثال تصویر زیر را در نظر بگیرید، حال میخواهید که کامپیوتر وجود سگ در تصویر را تشخیص دهد:
شاید شما بگویید که این خیلی ساده است. کافیست تمام پیکسلها را بررسی کنم، اگر با یک برآمدگی روشن مواجه شدم پس نتیجه میگیرم این یک سگ است!! نه، نه! این اصلا کار درستی نیست، همه سگها سفید یا رنگ روشنی ندارند!
اینجا جائیست که یادگیری ماشین وارد عرصه میشود.
یادگیری ماشین به صورت کلی یک الگوریتم را پیادهسازی میکند که در آن به صورت خودکار یک الگو را از ورودی تشخیص میدهد.
شما میتوانید هزار عکس سگ را در اختیار این برنامه قرار دهید و از طرفی دیگر هزار عکس انسان را نیز به صورت جداگانه به برنامه بدهید. حال ماموریت این است که اگر یک عکس سگ دیگر به برنامه بدهید بتواند آن را تشخیص دهد و بگوید که این عکس یک سگ است یا یک انسان.
میتوانید یادگیری ماشین را در عرصههای امروزی شامل موارد زیر مشاهده کنید:
- سیستمهای پیشنهادی یا Recommendation Systems
- تشخیص چهره
- تشخیص صدا
و اپلیکیشنهایی دیگر!
الگوریتمهایی که در دنیای یادگیری ماشین بسیار معروف هستند عبارتند از:
- شبکههای عصبی
- یادگیری عمیق
- ماشینهای برداری پشتیبانی
- جنگل تصادفی
از هرکدام این الگوریتمها میتوانید برای کاربردهای متفاوت استفاده کنید.
پایتون برای یادگیری ماشین
کتابخانهها و فریمورکهای مختلف بسیاری برای پایتون در زمینه یادگیری ماشین نوشته شده است.
دو مورد از محبوبترین کتابخانهها scikit-learn و TensorFlow نام دارند.
- scikit-learn همراه با برخی از الگوریتمهای محبوب یادگیری ماشین عرضه میشود.
- TensorFlow بیشتر یک کتابخانه سطح پایین است که به شما اجازه ایجاد الگوریتمهای سفارشی برای یادگیری ماشین را میدهد.
اگر به تازگی قصد دارید که روی پروژه یادگیری ماشین کار کنید به شما پیشنهاد میکنم که ابتدا به سراغ scikit-learn بروید. اگر مسیری پیشرفتهتر همراه با امکانات بیشتری را میخواهید، TensorFlow انتخاب خوبیست.
چگونه باید یادگیری ماشین را بیاموزیم؟
اگر قصد یادگیری بحث Machine Learning را دارید میتوانید دورههای Stanford و Caltech را بگذرانید.
برای یادگیری ابتدای کار نیاز است که در زمینه علوم ریاضی پیش زمینه خوبی داشته باشید و با مبحث جبر خطی و رگرسیون آشنایی داشته باشید.
بعد از این موارد، برای تمرین کردن میتوانید از پلتفرم Kaggle بهره بگیرید.
آنالیز داده و بصریسازی داده:
برای اینکه با این موارد آشنا شوید، به شما یک مثال ساده را میدهم.
بیایید فکر کنیم که مشغول کار کردن برای یک شرکت هستید که محصولاتش را به صورت آنلاین میفروشد.
بعد از آن به عنوان یک تحلیلگر داده شما باید گرافی مانند زیر را رسم کنید:
از طریق این گراف میتوانید به این نتیجه برسید که در روز یکشنبه، بیشتر از ۴۰۰ واحد از محصولات توسط مردها خریداری شدهاند و ۳۵۰ محصول نیز توسط زنان.
یک توضیح ممکن برای این محصول این است که مردها بیشتر از زنان به این محصول علاقه دارند. یک توضیح دیگر ممکن است این باشد که زمان دسترسی به این دادهها بسیار کوتاه بوده و این تفاوت تنها ممکن است اتفاقی رخ داده باشد. یک توضیح دیگر ممکن است این باشد که مردها علاقه زیادی به خرید این محصول در روزهای یکشنبه دارند -بنا به هر دلیلی-.
برای اینکه ببینید کدام یک از این احتمالات بیشتر صدق میکند، باید یک گراف دیگر را رسم کنید:
بجای اینکه روی دادههای مربوط به یک روز تمرکز کنیم، روی دادههای تمام هفته تمرکز میکنیم. از طریق این گراف میتوانید تفاوت را به صورت واضح متوجه شوید.
از طریق این تحلیل کوچک، میتوانید به این نتیجه برسید که براساس تفاوتها، مردها علاقه بیشتری به خرید محصول نسبت به خانمها دارند.
حال به یک صورت دیگر با این قضیه برخورد میکنیم، گراف زیر را در نظر بگیرید:
حال چه چیزی تفاوت در یکشنبه توجیه میکند؟
ممکن است بگویید که مردها تمایل بیشتری به خرید این محصول در روز یکشنبهها دارند. شاید هم این موضوع کاملا اتفاقی صورت گرفته باشد.
این یک مثال بسیار ساده از آنالیز داده است که ممکن است چنین چیزی را در دنیای واقعی نیز مشاهده کنید.
آنالیز و بصریسازی داده با استفاده از پایتون
یکی از محبوبترین کتابخانههای پایتون برای بصریسازی Matplotlib نام دارد. برای وارد شدن به دنیای بصریسازی این مورد بسیار مناسب است. به دلیل:
- یادگیری و شروع کار با آن ساده است.
- برخی از دیگر کتابخانهها مانند seaborn براساس این مورد ساخته شدهاند. بنابراین، یادگیری Matplotlib به شما کمک میکند تا کتابخانههای دیگری را نیز بعدا یاد بگیرید.
اسکریپتنویسی
اسکریپتنویسی چیست؟
اسکریپتنویسی معمولا مرتبط به نوشتن برنامههای کوچکی میشود که برای خودکارسازی برخی از وظایف ساده ایجاد شدهاند.
یک مثال از تجربه شخصی:
قبلا در ژاپن در یک استارتاپ کوچک مشغول کار کردن بودم، آنجا یک سیستم پشتیبانی از طریق ایمیل داشتند. یک سیستم در این بین برای جواب دادن به سوالات مشتریانی که از طریق ایمیل انجام میشد نیز قرار داشت.
زمانی که من داشتم آنجا کار میکردم مجبور بودم که تعداد ایمیلهایی که یک کلمه کلیدی را در خود داشتند بدست بیاورم. بنابراین ما مجبور بودیم که یک آنالیز را انجام دهیم.
این کار به صورت دستی انجام میشد اما من یک برنامه ساده نوشتم که این کار را به صورت خودکار انجام میداد.
البته برای این مثال من از روبی استفاده کردم، اما پایتون نیز انتخاب بسیار خوبی برای نوشتن چنین برنامههایی است. نوشتن ساده برنامهها در پایتون این قابلیت را میدهد که نوشتن چنین برنامههایی بسیار سریعتر انجام شود.
موارد دیگر:
از پایتون میتوان برای کار با سخت افزار استفاده کرد. میتوانید مقالات بسیاری را در رابطه با ارتباط پایتون و رزبریپای مطالعه کنید.
میتوانید از پایتون برای توسعه بازیها نیز استفاده کنید. البته نسبت به مواردی مانند یونیتی و سیشارپ، پایتون از چنین قدرتی برای توسعه بازیهای گرافیکی بهرهمند نیست.
از پایتون برای توسعه اپلیکیشنهای دسکتاپ نیز استفاده میشود. اما واقعیت را بگوییم انتخابهای بهتری برای این کار وجود دارد. سیپلاسپلاس و سیشارپ میتوانند جایگزین بهتری برای این کار باشند.