۱۰ الگوریتم مهم یادگیری ماشین که هر متخصص داده باید بشناسد

...

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

برای یک متخصص داده یا فردی که قصد ورود جدی به حوزه Data Science و هوش مصنوعی را دارد، شناخت الگوریتم‌های اصلی اهمیت بسیار زیادی دارد. نکته مهم این است که هدف از یادگیری این الگوریتم‌ها صرفاً حفظ کردن نام یا فرمول آن‌ها نیست؛ بلکه باید بدانیم هر الگوریتم چگونه کار می‌کند، چه نوع داده‌ای برای آن مناسب است، چه مزایا و محدودیت‌هایی دارد و در چه شرایطی باید آن را به الگوریتم‌های دیگر ترجیح دهیم. در این مقاله با ۱۰ الگوریتم مهم و پرکاربرد یادگیری ماشین آشنا می‌شویم که درک آن‌ها می‌تواند پایه مناسبی برای ورود به دنیای حرفه‌ای Machine Learning باشد. در ادامه با آرتیجنس همراه باشید.

الگوریتم‌های مهم یادگیری ماشین در یک نگاه

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

الگوریتمنوع یادگیریکاربرد اصلیمیزان تفسیرپذیری
Linear Regressionنظارت‌شدهپیش‌بینی مقادیر عددیبالا
Logistic Regressionنظارت‌شدهدسته‌بندیبالا
Decision Treeنظارت‌شدهدسته‌بندی و رگرسیونبسیار بالا
Random Forestنظارت‌شدهدسته‌بندی و رگرسیونمتوسط
Support Vector Machineنظارت‌شدهدسته‌بندی و رگرسیونمتوسط
K-Nearest Neighborsنظارت‌شدهدسته‌بندی و پیش‌بینیمتوسط
K-Meansبدون نظارتخوشه‌بندیمتوسط
Naive Bayesنظارت‌شدهدسته‌بندی و متنبالا
PCAبدون نظارتکاهش ابعادمتوسط
Gradient Boostingنظارت‌شدهپیش‌بینی و دسته‌بندیپایین تا متوسط

اکنون هر یک از این الگوریتم‌ها را با جزئیات بیشتری بررسی می‌کنیم و می‌بینیم که چه زمانی استفاده از آن‌ها منطقی است.

۱. رگرسیون خطی؛ یکی از ساده‌ترین و مهم‌ترین الگوریتم‌های یادگیری ماشین

رگرسیون خطی یا Linear Regression یکی از بنیادی‌ترین الگوریتم‌های یادگیری ماشین و آمار است که برای پیش‌بینی یک مقدار عددی بر اساس یک یا چند متغیر ورودی استفاده می‌شود. ایده اصلی این الگوریتم نسبتاً ساده است: مدل تلاش می‌کند رابطه‌ای بین متغیرهای مستقل و متغیر هدف پیدا کند و با استفاده از این رابطه، مقدار خروجی را پیش‌بینی کند. برای مثال، می‌توان از رگرسیون خطی برای پیش‌بینی قیمت یک خانه بر اساس متراژ، تعداد اتاق‌ها و موقعیت مکانی استفاده کرد.

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

۲. رگرسیون لجستیک؛ الگوریتمی قدرتمند برای دسته‌بندی

Logistic Regression برخلاف نامش، معمولاً برای مسائل رگرسیون عددی استفاده نمی‌شود، بلکه یکی از الگوریتم‌های شناخته‌شده برای Classification یا دسته‌بندی است. این الگوریتم به‌ویژه زمانی کاربرد دارد که بخواهیم یک نمونه را در یکی از دو یا چند کلاس قرار دهیم. برای مثال، می‌توان از آن برای تشخیص اینکه یک ایمیل اسپم است یا خیر، پیش‌بینی احتمال وقوع یک بیماری یا تشخیص تقلب در یک تراکنش بانکی استفاده کرد.

یکی از ویژگی‌های مهم رگرسیون لجستیک، سادگی و تفسیرپذیری آن است. برخلاف بسیاری از مدل‌های پیچیده یادگیری ماشین، می‌توان تأثیر ویژگی‌های مختلف بر نتیجه مدل را تا حد زیادی تحلیل کرد. این ویژگی در حوزه‌هایی مانند پزشکی، امور مالی و کسب‌وکار که توضیح دلیل تصمیم مدل اهمیت زیادی دارد، بسیار ارزشمند است.رگرسیون لجستیک همچنین یک الگوریتم مناسب برای شروع یادگیری دسته‌بندی در Machine Learning محسوب می‌شود. با این حال، عملکرد آن در مسائلی که مرزهای تصمیم بسیار پیچیده یا غیرخطی هستند، ممکن است محدود باشد و در چنین شرایطی الگوریتم‌هایی مانند درخت تصمیم، SVM یا مدل‌های Ensemble گزینه‌های بهتری خواهند بود.

۳. درخت تصمیم؛ مدلی شبیه فرآیند تصمیم‌گیری انسان

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

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

با این حال، درخت تصمیم ممکن است در صورت رشد بیش از حد دچار Overfitting شود؛ یعنی به‌جای یادگیری الگوهای عمومی، جزئیات و نویز داده‌های آموزشی را بیش از اندازه یاد بگیرد. برای کاهش این مشکل می‌توان عمق درخت را محدود کرد، حداقل تعداد نمونه‌های هر برگ را تعیین کرد یا از روش‌های Ensemble مانند Random Forest استفاده کرد.

 

10 الگوریتم یادگیری ماشین

 

۴. جنگل تصادفی؛ ترکیب چندین درخت برای پیش‌بینی بهتر

Random Forest یا جنگل تصادفی یکی از معروف‌ترین الگوریتم‌های Ensemble Learning است که از ترکیب تعداد زیادی درخت تصمیم تشکیل می‌شود. ایده اصلی این است که به‌جای تکیه بر یک درخت تصمیم، چندین درخت ساخته شوند و نتیجه نهایی با ترکیب پیش‌بینی آن‌ها به دست آید. این روش معمولاً باعث می‌شود مدل نسبت به یک درخت تصمیم منفرد عملکرد پایدارتر و مقاومت بیشتری در برابر Overfitting داشته باشد.

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

۵. ماشین بردار پشتیبان؛ مناسب برای مرزبندی پیچیده داده‌ها

Support Vector Machine یا SVM الگوریتمی قدرتمند برای دسته‌بندی داده‌ها است که تلاش می‌کند بهترین مرز ممکن را برای جدا کردن کلاس‌های مختلف پیدا کند. هدف اصلی SVM پیدا کردن یک مرز تصمیم است که فاصله مناسبی از نمونه‌های کلاس‌های مختلف داشته باشد. این نمونه‌های مهم که در تعیین مرز نقش اصلی دارند، با عنوان Support Vectors شناخته می‌شوند.

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

۶. الگوریتم K-Nearest Neighbors؛ یادگیری بر اساس شباهت

K-Nearest Neighbors یا KNN یکی از ساده‌ترین الگوریتم‌های یادگیری ماشین است که پیش‌بینی خود را بر اساس شباهت نمونه‌های جدید به نمونه‌های موجود انجام می‌دهد. ایده اصلی این الگوریتم این است که نمونه‌هایی که به یکدیگر نزدیک‌تر هستند، احتمالاً ویژگی‌ها یا برچسب‌های مشابهی نیز دارند. برای مثال، اگر بخواهیم نوع یک گل جدید را مشخص کنیم، KNN می‌تواند ویژگی‌های آن را با نمونه‌های قبلی مقایسه کند و بر اساس نزدیک‌ترین نمونه‌ها، کلاس احتمالی را تعیین کند. مقدار K مشخص می‌کند که چند همسایه در فرآیند تصمیم‌گیری نقش داشته باشند. سادگی یکی از مهم‌ترین مزایای KNN است، اما این الگوریتم در مجموعه‌داده‌های بسیار بزرگ می‌تواند از نظر محاسباتی پرهزینه باشد؛ زیرا برای پیش‌بینی نمونه‌های جدید باید فاصله آن‌ها با نمونه‌های آموزشی بررسی شود. همچنین مقیاس ویژگی‌ها در KNN اهمیت زیادی دارد و معمولاً باید قبل از آموزش، داده‌ها را استاندارد یا نرمال‌سازی کرد.

 

10 الگوریتم یادگیری ماشین

 

۷. K-Means؛ یکی از مهم‌ترین الگوریتم‌های یادگیری بدون نظارت

K-Means یکی از شناخته‌شده‌ترین الگوریتم‌های Unsupervised Learning است. برخلاف الگوریتم‌های نظارت‌شده، در این روش داده‌ها از قبل برچسب مشخصی ندارند و مدل تلاش می‌کند نمونه‌های مشابه را در گروه‌هایی به نام Cluster قرار دهد. یکی از کاربردهای رایج K-Means، تقسیم‌بندی مشتریان بر اساس رفتار خرید است. برای مثال، یک فروشگاه اینترنتی می‌تواند مشتریان خود را بر اساس میزان خرید، تعداد سفارش‌ها و میانگین ارزش خرید به چند گروه تقسیم کند و برای هر گروه استراتژی بازاریابی متفاوتی در نظر بگیرد.

در K-Means باید تعداد خوشه‌ها یا مقدار K را مشخص کنیم. انتخاب مقدار مناسب K یکی از چالش‌های اصلی این الگوریتم است و روش‌هایی مانند Elbow Method می‌توانند برای انتخاب تعداد مناسب خوشه‌ها مورد استفاده قرار گیرند. این الگوریتم زمانی عملکرد مناسبی دارد که ساختار خوشه‌های داده نسبتاً مشخص باشد، اما در داده‌هایی با خوشه‌های پیچیده یا شکل‌های غیرمعمول ممکن است نتایج مطلوبی ارائه نکند.

۸. Naive Bayes؛ سریع و کاربردی برای داده‌های متنی

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

۹. تحلیل مؤلفه‌های اصلی؛ کاهش پیچیدگی داده با PCA

Principal Component Analysis یا PCA یک الگوریتم کاهش ابعاد است که برای ساده‌تر کردن داده‌های پیچیده و چندبعدی استفاده می‌شود. در پروژه‌های Data Science ممکن است یک دیتاست شامل صدها یا هزاران ویژگی باشد و بسیاری از این ویژگی‌ها اطلاعات مشابه یا همبسته‌ای داشته باشند. PCA تلاش می‌کند تعداد ابعاد داده را کاهش دهد و در عین حال بخش مهمی از اطلاعات موجود را حفظ کند.

کاهش ابعاد می‌تواند مزایای مختلفی داشته باشد. برای مثال، سرعت آموزش مدل‌های یادگیری ماشین افزایش پیدا می‌کند، امکان نمایش داده‌های چندبعدی در فضای دوبعدی یا سه‌بعدی فراهم می‌شود و گاهی نویز موجود در داده نیز کاهش می‌یابد. PCA در تحلیل داده‌های علمی، پردازش تصویر و مصورسازی داده‌ها کاربرد دارد. با این حال، باید توجه داشت که مؤلفه‌های جدید PCA ممکن است مانند ویژگی‌های اصلی قابل تفسیر نباشند؛ بنابراین در پروژه‌هایی که توضیح‌پذیری ویژگی‌ها اهمیت بالایی دارد، باید با دقت از آن استفاده کرد.

۱۰. Gradient Boosting؛ قدرت پیش‌بینی بالا با ترکیب مدل‌های ضعیف

Gradient Boosting یکی از روش‌های قدرتمند Ensemble Learning است که در آن چندین مدل نسبتاً ساده به‌صورت ترتیبی ساخته می‌شوند و هر مدل تلاش می‌کند خطاهای مدل‌های قبلی را کاهش دهد. این فرآیند به‌تدریج یک مدل قدرتمندتر ایجاد می‌کند که می‌تواند برای مسائل دسته‌بندی و رگرسیون مورد استفاده قرار گیرد. Gradient Boosting در بسیاری از مسائل داده‌های ساختاریافته یا Tabular Data عملکرد بسیار خوبی دارد. مدل‌هایی مانند XGBoost، LightGBM و CatBoost از خانواده روش‌های Boosting هستند و در بسیاری از رقابت‌های علم داده و پروژه‌های صنعتی مورد استفاده قرار گرفته‌اند.

قدرت بالای پیش‌بینی یکی از مهم‌ترین مزایای این خانواده از الگوریتم‌ها است، اما در مقابل، تنظیم پارامترهای آن‌ها می‌تواند پیچیده باشد و اگر مدل به‌درستی تنظیم نشود، احتمال Overfitting وجود دارد. با وجود این، آشنایی با Gradient Boosting برای متخصصان داده اهمیت زیادی دارد؛ زیرا این روش‌ها همچنان در بسیاری از پروژه‌های واقعی و رقابت‌های Machine Learning جزو گزینه‌های قدرتمند محسوب می‌شوند.

 

10 الگوریتم یادگیری ماشین

 

چگونه الگوریتم مناسب یادگیری ماشین را انتخاب کنیم؟

انتخاب بهترین الگوریتم یادگیری ماشین به نوع مسئله، اندازه و ساختار داده، تعداد ویژگی‌ها، میزان نویز، نیاز به تفسیرپذیری و منابع محاسباتی بستگی دارد. هیچ الگوریتمی وجود ندارد که برای تمام مسائل بهترین عملکرد را داشته باشد. برای مثال، اگر هدف پیش‌بینی یک مقدار عددی و رابطه میان متغیرها تقریباً خطی باشد، Linear Regression می‌تواند گزینه مناسبی باشد؛ اما اگر مسئله شامل روابط پیچیده و غیرخطی باشد، الگوریتم‌هایی مانند Random Forest یا Gradient Boosting ممکن است عملکرد بهتری داشته باشند.

برای مسائل دسته‌بندی می‌توان از Logistic Regression، Decision Tree، SVM، KNN یا Naive Bayes استفاده کرد. اگر داده‌ها بدون برچسب باشند و هدف پیدا کردن گروه‌های مشابه باشد، الگوریتم‌هایی مانند K-Means گزینه‌های مناسبی هستند. همچنین اگر تعداد ویژگی‌ها بسیار زیاد باشد، PCA می‌تواند برای کاهش ابعاد و ساده‌تر کردن داده‌ها مفید باشد.

در پروژه‌های واقعی، معمولاً متخصصان داده یک الگوریتم را به‌صورت تصادفی انتخاب نمی‌کنند. ابتدا داده‌ها را بررسی و پاک‌سازی می‌کنند، سپس یک مدل پایه ایجاد کرده و عملکرد چند الگوریتم را با معیارهای مناسب مقایسه می‌کنند. در نهایت، با استفاده از روش‌هایی مانند Cross Validation و Hyperparameter Tuning تلاش می‌کنند بهترین مدل را برای مسئله موردنظر پیدا کنند.

آیا برای یادگیری ماشین باید همه این الگوریتم‌ها را یاد بگیریم؟

برای شروع فعالیت در حوزه یادگیری ماشین لازم نیست تمام الگوریتم‌های موجود را به شکل عمیق و تخصصی یاد بگیرید. با این حال، درک مفاهیم و منطق الگوریتم‌های اصلی اهمیت زیادی دارد. بهتر است ابتدا الگوریتم‌هایی مانند Linear Regression، Logistic Regression، Decision Tree، Random Forest و K-Means را به‌خوبی یاد بگیرید و سپس به سراغ مدل‌های پیشرفته‌تر بروید.

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

همچنین یادگیری ابزارهایی مانند Python، NumPy، Pandas، Matplotlib و Scikit-learn می‌تواند مسیر یادگیری Machine Learning را بسیار ساده‌تر کند. پس از تسلط بر مفاهیم پایه، می‌توان سراغ کتابخانه‌های تخصصی‌تر و الگوریتم‌های پیشرفته مانند XGBoost، LightGBM، مدل‌های Deep Learning و در نهایت معماری‌های مدرن هوش مصنوعی رفت.

 

10 الگوریتم یادگیری ماشین

 

جمع‌بندی؛ کدام الگوریتم‌های یادگیری ماشین مهم‌تر هستند؟

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

اگر در ابتدای مسیر یادگیری Machine Learning هستید، بهتر است به‌جای تلاش برای حفظ کردن تعداد زیادی الگوریتم، ابتدا منطق چند الگوریتم کلیدی را عمیقاً درک کنید. Linear Regression و Logistic Regression برای یادگیری مفاهیم پایه، Decision Tree و Random Forest برای درک مدل‌های درختی، KNN برای فهم روش‌های مبتنی بر شباهت، K-Means برای یادگیری بدون نظارت و Gradient Boosting برای آشنایی با مدل‌های Ensemble انتخاب‌های مناسبی هستند.

در مرحله بعد، باید یاد بگیرید چگونه این الگوریتم‌ها را روی داده‌های واقعی اجرا و ارزیابی کنید. در دنیای حرفه‌ای Data Science، موفقیت یک پروژه فقط به انتخاب الگوریتم وابسته نیست؛ بلکه ترکیبی از کیفیت داده، مهندسی ویژگی، انتخاب مدل، تنظیم پارامترها، ارزیابی صحیح و در نهایت استقرار مدل در محیط واقعی است. بنابراین شناخت این ۱۰ الگوریتم را می‌توان یکی از پایه‌های مهم مسیر تبدیل شدن به یک متخصص یادگیری ماشین دانست، اما مسیر حرفه‌ای شدن زمانی آغاز می‌شود که بتوانید دانش تئوری خود را به پروژه‌های واقعی و مسائل دنیای واقعی تبدیل کنید.
الگوریتم:

منبع مقاله:

alexanderthamm

teamacademysaudi

medium

نظرات 0

wave

ارسال نظر

wave
برای ثبت نظر ابتدا وارد حساب کاربری خود شوید. ورود | ثبت نام

در آرتیجنس دنبال چی میگردی؟