از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
بهترین کتابخانه های یادگیری ماشین در پایتون
سرفصلهای مطلب
معرفی
شکی نیست که شبکه های عصبی و به طور کلی یادگیری ماشینی یکی از داغ ترین موضوعات در فناوری در چند سال گذشته بوده است. به راحتی می توان فهمید که چرا با همه موارد کاربردی واقعا جالبی که آنها حل می کنند، مانند تشخیص صدا، تشخیص تصویر، یا حتی آهنگسازی. بنابراین، برای این مقاله تصمیم گرفتم لیستی از بهترین کتابخانه های یادگیری ماشین پایتون را گردآوری کنم و آنها را در زیر پست کنم.
به نظر من، پایتون یکی از بهترین زبان هایی است که می توانید برای یادگیری (و پیاده سازی) تکنیک های یادگیری ماشینی به چند دلیل استفاده کنید:
- ساده است: Python اکنون به لطف نحو ساده و جامعه عظیم خود به زبان انتخابی در بین برنامه نویسان جدید تبدیل شده است.
- این قدرتمند است: فقط به این دلیل که چیزی ساده است به این معنی نیست که قادر نیست. پایتون همچنین یکی از محبوب ترین زبان ها در بین دانشمندان داده و برنامه نویسان وب است. جامعه آن کتابخانه هایی ایجاد کرده است تا تقریباً هر کاری را که می خواهید انجام دهید، از جمله یادگیری ماشین
- بسیاری از کتابخانه های ML: وجود دارد تن از کتابخانه های یادگیری ماشینی که قبلاً برای پایتون نوشته شده است. شما می توانید یکی از صدها کتابخانه را انتخاب کنید روی مورد استفاده، مهارت و نیاز شما به سفارشی سازی.
نکته آخر در اینجا بدون شک مهمترین است. الگوریتمهایی که به یادگیری ماشین کمک میکنند بسیار پیچیده هستند و ریاضیات زیادی را شامل میشوند، بنابراین خودتان آنها را بنویسید (و درست انجام دادن) سخت ترین کار خواهد بود. خوشبختانه برای ما، افراد باهوش و فداکار زیادی وجود دارند که این کار سخت را برای ما انجام دادهاند تا بتوانیم تمرکز کنیم. روی برنامه در دست
به هیچ وجه این یک لیست جامع نیست. وجود دارد مقدار زیادی از کد موجود است و من فقط برخی از کتابخانه های مرتبط تر یا شناخته شده را در اینجا پست می کنم. اکنون، روی به لیست
محبوب ترین کتابخانه ها
من شرح کوتاهی از برخی از کتابخانههای محبوبتر و آنچه که برای آنها خوب هستند را با فهرست کاملتری از پروژههای قابل توجه در بخش بعدی آوردهام.
TensorFlow
این جدیدترین کتابخانه شبکه عصبی است روی لیست. تنها در چند روز گذشته منتشر شده است، TensorFlow یک کتابخانه شبکه عصبی سطح بالا است که به شما کمک می کند معماری های شبکه خود را برنامه ریزی کنید و در عین حال از جزئیات سطح پایین اجتناب کنید. تمرکز بیشتر است روی به شما این امکان را می دهد که محاسبات خود را به صورت نمودار جریان داده بیان کنید، که برای حل مسائل پیچیده بسیار مناسب تر است.
بیشتر در C++ نوشته شده است که شامل پیوندهای پایتون است، بنابراین لازم نیست نگران کاهش عملکرد باشید. یکی از ویژگی های مورد علاقه من، معماری انعطاف پذیر است که به شما امکان می دهد آن را در یک یا چند CPU یا GPU در دسکتاپ، سرور یا دستگاه تلفن همراه با یک API یکسان استقرار دهید. تعداد زیادی از کتابخانهها، در صورت وجود، نمیتوانند چنین ادعایی داشته باشند.
برای توسعه داده شد مغز گوگل این پروژه اکنون توسط صدها مهندس در سراسر شرکت مورد استفاده قرار می گیرد، بنابراین شکی نیست که آیا می تواند راه حل های جالبی ایجاد کند یا خیر.
با این حال، مانند هر کتابخانه ای، احتمالاً باید مدتی را برای یادگیری API آن اختصاص دهید، اما زمان صرف شده باید ارزش آن را داشته باشد. در چند دقیقه اول بازی با ویژگیهای اصلی که قبلاً میتوانستم بگویم TensorFlow به من اجازه میدهد زمان بیشتری را برای اجرای طرحهای شبکهام صرف کنم و از طریق API مبارزه نکنم.
اگر میخواهید درباره TensorFlow و شبکههای عصبی بیشتر بدانید، سعی کنید دورهای مانند این را بگذرانید یادگیری عمیق با تنسورفلو، که نه تنها در مورد TensorFlow، بلکه بسیاری از تکنیک های یادگیری عمیق را نیز به شما آموزش می دهد.
scikit-یادگیری
کتابخانه scikit-learn قطعاً یکی از، اگر نگوییم محبوبترین کتابخانههای ML در میان همه زبانها (در زمان نگارش این مقاله) است. دارای تعداد زیادی ویژگی برای داده کاوی و تجزیه و تحلیل داده است که آن را به یک انتخاب برتر برای محققان و توسعه دهندگان تبدیل می کند.
ساخته شده است روی در بالای کتابخانه های محبوب NumPy، SciPy، و matplotlib قرار دارد، بنابراین برای بسیاری از افرادی که قبلا از این کتابخانه ها استفاده می کنند، احساسی آشنا خواهد داشت. اگرچه، در مقایسه با بسیاری از کتابخانه های دیگر فهرست شده در زیر، این یکی سطح پایین تری دارد و به عنوان پایه ای برای بسیاری از پیاده سازی های ML دیگر عمل می کند.
با توجه به اینکه این کتابخانه چقدر قدرتمند است، شروع کار با آن می تواند دشوار باشد مگر اینکه منبع خوبی داشته باشید. یکی از محبوب ترین منابعی که من دیده ام این است پایتون برای بوت کمپ علم داده و یادگیری ماشین، که به خوبی توضیح می دهد که چگونه بسیاری از روش های ML را در scikit-learn پیاده سازی کنیم.
تیانو
Theano یک کتابخانه یادگیری ماشینی است که به شما امکان تعریف، بهینهسازی و ارزیابی عبارات ریاضی شامل آرایههای چند بعدی را میدهد، که میتواند برای برخی از توسعهدهندگان در کتابخانههای دیگر باعث ناامیدی شود. مانند scikit-learn، Theano نیز به شدت با NumPy ادغام می شود. استفاده شفاف از GPU باعث می شود Theano سریع و بدون درد راه اندازی شود، که برای کسانی که تازه شروع به کار کرده اند بسیار مهم است. اگرچه برخی آن را بیشتر به عنوان یک ابزار تحقیقاتی توصیف کرده اند تا استفاده در تولید، بنابراین از آن استفاده کنید.
یکی از بهترین ویژگی های آن مستندات عالی و آموزش های فراوان است. به لطف محبوبیت این کتابخانه، در یافتن منابعی که به شما نشان می دهد چگونه مدل های خود را راه اندازی و اجرا کنید، مشکل زیادی نخواهید داشت.
Pylearn2
بیشتر قابلیت های Pylearn2 در واقع ساخته شده است روی بالای Theano، بنابراین پایه بسیار محکمی دارد.
طبق وب سایت Pylearn2:
Pylearn2 با scikit-learn تفاوت دارد زیرا هدف Pylearn2 ارائه انعطاف پذیری زیاد و ایجاد امکان انجام تقریباً هر کاری برای محقق است، در حالی که scikit-learn به عنوان یک “جعبه سیاه” عمل می کند که می تواند نتایج خوبی ایجاد کند حتی اگر کاربر این کار را انجام ندهد. اجرا را درک کنید
به خاطر داشته باشید که Pylearn2 گاهی اوقات ممکن است کتابخانههای دیگری مانند scikit-learn را که منطقی باشد، بپیچد، بنابراین شما در اینجا کدهای 100% سفارشی را دریافت نمیکنید. با این حال، این عالی است، زیرا بسیاری از اشکالات قبلاً برطرف شده اند. Wrapper هایی مانند Pylearn2 جایگاه بسیار مهمی در این لیست دارند.
پیوولو
یکی از مهیجترین و متفاوتترین حوزههای تحقیقات شبکههای عصبی، در فضای الگوریتمهای ژنتیک است. یک الگوریتم ژنتیک اساساً فقط یک جستجوی اکتشافی است که از آن تقلید می کند process انتخاب طبیعی در اصل یک شبکه عصبی را آزمایش می کند روی برخی از داده ها و بازخورد دریافت می کند روی عملکرد شبکه از یک تابع تناسب اندام. سپس به طور مکرر تغییرات کوچک و تصادفی در شبکه ایجاد می کند و با استفاده از همان داده ها دوباره آن را آزمایش می کند. شبکههایی که امتیازات تناسب اندام بالاتری دارند برنده میشوند و سپس بهعنوان والدین نسلهای جدید استفاده میشوند.
Pyevolve یک چارچوب عالی برای ساخت و اجرای این نوع الگوریتم ارائه می دهد. اگرچه نویسنده بیان کرده است که از نسخه 0.6 این چارچوب از برنامهنویسی ژنتیکی نیز پشتیبانی میکند، بنابراین در آینده نزدیک این چارچوب بیشتر به سمت یک چارچوب محاسباتی تکاملی متمایل خواهد شد تا یک چارچوب ساده GA.
- مناسب برای: شبکه های عصبی با الگوریتم ژنتیک
- Github
NuPIC
NuPIC کتابخانه دیگری است که عملکردهای متفاوتی نسبت به الگوریتم های استاندارد ML در اختیار شما قرار می دهد. مبتنی است روی نظریه ای از نئوکورتکس به نام حافظه زمانی سلسله مراتبی (HTM). HTM ها را می توان به عنوان یک نوع شبکه عصبی در نظر گرفت، اما برخی از نظریه ها کمی متفاوت است.
اساسا، HTM ها یک سیستم حافظه سلسله مراتبی و مبتنی بر زمان هستند که می توان آنها را آموزش داد روی داده های مختلف این یک چارچوب محاسباتی جدید است که روش درهم تنیده شدن حافظه و محاسبات در مغز ما را تقلید می کند. برای توضیح کامل این نظریه و کاربردهای آن، به ادامه مطلب مراجعه کنید کاغذ سفید.
الگو
این بیشتر یک کتابخانه «مجموعه کامل» است زیرا نه تنها برخی از الگوریتمهای ML را ارائه میکند، بلکه ابزارهایی را نیز برای کمک به جمعآوری و تجزیه و تحلیل دادهها فراهم میکند. بخش داده کاوی به شما کمک می کند تا داده ها را از سرویس های وب مانند Google، Twitter و Wikipedia جمع آوری کنید. همچنین دارای یک خزنده وب و تجزیه کننده HTML DOM است. نکته خوب در مورد گنجاندن این ابزارها این است که جمع آوری و آموزش آن را آسان می کند روی داده ها در همان برنامه
در اینجا یک مثال عالی از مستندات وجود دارد که از دسته ای از توییت ها برای آموزش یک طبقه بندی کننده استفاده می کند روی آیا یک توییت “برنده” یا “شکست” است:
from pattern.web import Twitter
from pattern.en import tag
from pattern.vector import KNN, count
twitter, knn = Twitter(), KNN()
for i in range(1, 3):
for tweet in twitter.search('#win OR #fail', start=i, count=100):
s = tweet.text.lower()
p = '#win' in s and 'WIN' or 'FAIL'
v = tag(s)
v = (word for word, pos in v if pos == 'JJ')
v = count(v)
if v:
knn.train(v, type=p)
print knn.classify('sweet potato burger')
print knn.classify('stupid autocorrect')
توییت ها ابتدا با استفاده از آن جمع آوری می شوند twitter.search()
از طریق هشتگ “#برد” و “#شکست” سپس یک k-nearest همسایه (KNN) با استفاده از صفت های استخراج شده از توییت ها آموزش داده می شود. پس از آموزش کافی، شما یک طبقه بندی کننده دارید. فقط برای 15 خط کد بد نیست.
- خوب برای: NLP، خوشه بندی، و طبقه بندی
- Github
کافه
Caffe یک کتابخانه برای یادگیری ماشین در برنامه های بینایی است. شما ممکن است از آن برای ایجاد شبکه های عصبی عمیقی استفاده کنید که اشیاء را در تصاویر و یا حتی به تشخیص می دهد یک سبک بصری را تشخیص دهید.
ادغام یکپارچه با آموزش GPU ارائه شده است که برای زمانی که در حال تمرین هستید بسیار توصیه می شود روی تصاویر. اگرچه به نظر میرسد این کتابخانه بیشتر برای دانشگاهیان و تحقیقات است، اما باید کاربردهای فراوانی برای مدلهای آموزشی برای استفاده در تولید نیز داشته باشد.
- خوب برای: شبکه های عصبی / یادگیری عمیق برای بینایی
- سایت اینترنتی
- Github
سایر کتابخانه های قابل توجه
و در اینجا لیستی از چندین کتابخانه Python ML وجود دارد. برخی از آنها عملکرد مشابه موارد فوق را ارائه می دهند و برخی دیگر اهداف باریک تری دارند یا بیشتر به عنوان ابزار یادگیری مورد استفاده قرار می گیرند.
Nilearn
- ساخته شده روی بالای scikit-learn
- Github
مدل های آماری
PyBrain (غیر فعال)
سوخت
باب
skdata
شیر
IEPY
پرس و جو
هبل
mlxtend
بدون یادگیری
سطح شیب دار
ویژگی Forge
هرزه
Python-ELM
PythonXY
XCS
PyML
MLPY (غیر فعال)
نارنجی
مونت
PYMVPA
MDP (غیر فعال)
شوگون
PyMC
جنسیم
آزمایشگاه عصبی
FFnet (غیر فعال)
LibSVM
نعناع
زنجیر
تاپیک
خرچنگ
CoverTree
برزه
عمیق
آزمایشگاه عصبی
نعناع
یاهم
pydeep
اذیت کردن
نئون
احساسات
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-30 13:12:04