در این درس درباره ابزار هوش مصنوعی مسئولانه یاد گرفتید، یک پروژه "متنباز و مبتنی بر جامعه برای کمک به دانشمندان داده در تحلیل و بهبود سیستمهای هوش مصنوعی." برای این تکلیف، یکی از [دفترچههای یادداشت](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ابزار RAI را بررسی کنید و یافتههای خود را در قالب یک مقاله یا ارائه گزارش کنید.
در این درس با جعبهابزار هوش مصنوعی مسئولانه آشنا شدید، یک «پروژه متنباز و جامعهمحور برای کمک به دانشمندان داده به منظور تحلیل و بهبود سیستمهای هوش مصنوعی». برای این تمرین، یکی از [دفترچههای] جعبهابزار RAI را بررسی کرده و یافتههای خود را در قالب مقاله یا ارائه گزارش دهید.
## معیارها
## معیار ارزیابی
| معیار | عالی | قابل قبول | نیاز به بهبود |
| ------ | ----- | ---------- | ------------- |
| | یک مقاله یا ارائه پاورپوینت ارائه شده که سیستمهای Fairlearn، دفترچه یادداشت اجرا شده، و نتایج حاصل از اجرای آن را مورد بحث قرار میدهد | یک مقاله ارائه شده بدون نتیجهگیری | هیچ مقالهای ارائه نشده است |
| | مقاله یا ارائه پاورپوینت ارائه شده است که درباره سیستمهای Fairlearn، دفترچهای که اجرا شده، و نتایج حاصل از اجرای آن بحث میکند | مقاله ارائه شده است اما بدون نتایج | مقالهای ارائه نشده است |
---
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**توضیح مهم**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش میکنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مبدا باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئول هیچگونه سوء تفاهم یا تفسیر نادرستی که از استفاده این ترجمه ناشی شود، نیستیم.
# ساخت مدل رگرسیون با استفاده از Scikit-learn: چهار روش رگرسیون

## یادداشت مبتدیان
رگرسیون خطی زمانی استفاده میشود که بخواهیم یک **مقدار عددی** (برای مثال، قیمت خانه، دما یا فروش) را پیشبینی کنیم.
این روش با پیدا کردن یک خط مستقیم که بهترین نمایشدهنده رابطه بین ویژگیهای ورودی و خروجی است، کار میکند.
در این درس، تمرکز ما بر فهم مفهوم است قبل از اینکه به تکنیکهای پیشرفتهتر رگرسیون بپردازیم.

> اینفوگرافیک توسط [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
> ### [این درس به زبان R نیز موجود است!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### مقدمه
### معرفی
تا اینجا شما با مفهوم رگرسیون آشنا شدهاید و دادههای نمونهای از مجموعه دادههای قیمتگذاری کدو تنبل را بررسی کردهاید که در طول این درس از آن استفاده خواهیم کرد. همچنین این دادهها را با استفاده از Matplotlib بصریسازی کردهاید.
تا کنون شما بررسی کردهاید که رگرسیون چیست با دادههای نمونه جمعآوری شده از مجموعه داده قیمت کدو حلوایی که در طول این درس استفاده خواهیم کرد. همچنین آن را با استفاده از Matplotlib بصریسازی کردهاید.
اکنون آماده هستید تا به عمق بیشتری در موضوع رگرسیون برای یادگیری ماشین بپردازید. در حالی که بصریسازی به شما کمک میکند دادهها را درک کنید، قدرت واقعی یادگیری ماشین در _آموزش مدلها_ نهفته است. مدلها بر اساس دادههای تاریخی آموزش داده میشوند تا وابستگیهای دادهها را به طور خودکار شناسایی کنند و به شما امکان میدهند نتایج را برای دادههای جدیدی که مدل قبلاً ندیده است پیشبینی کنید.
حالا آمادهاید که عمیقتر به رگرسیون برای یادگیری ماشین بپردازید. در حالی که بصریسازی به شما کمک میکند دادهها را درک کنید، قدرت واقعی یادگیری ماشین از _آموزش مدلها_ میآید. مدلها بر اساس دادههای تاریخی آموزش میبینند تا وابستگیهای دادهای را به صورت خودکار ضبط کنند و به شما امکان پیشبینی نتایج برای دادههای جدیدی را میدهند که مدل قبلاً آنها را ندیده است.
در این درس، شما با دو نوع رگرسیون بیشتر آشنا خواهید شد: _رگرسیون خطی ساده_ و _رگرسیون چندجملهای_، همراه با برخی از ریاضیات پایهای این تکنیکها. این مدلها به ما امکان میدهند قیمت کدو تنبل را بر اساس دادههای ورودی مختلف پیشبینی کنیم.
در این درس، شما درباره دو نوع رگرسیون بیشتر خواهید آموخت: _رگرسیون خطی پایه_ و _رگرسیون چندجملهای_، همراه با برخی از ریاضیات زیرساخت این تکنیکها. این مدلها به ما اجازه میدهند قیمت کدو حلوایی را بسته به دادههای ورودی مختلف پیشبینی کنیم.
[](https://youtu.be/CRxFT8oTDMg "یادگیری ماشین برای مبتدیان - درک رگرسیون خطی")
[](https://youtu.be/CRxFT8oTDMg "یادگیری ماشین برای مبتدیان – درک رگرسیون خطی")
> 🎥 برای مشاهده ویدئوی کوتاه درباره رگرسیون خطی، روی تصویر بالا کلیک کنید.
> 🎥 برای مشاهده ویدئوی کوتاه معرفی رگرسیون خطی روی تصویر بالا کلیک کنید.
> در طول این دوره آموزشی، ما فرض میکنیم که دانش ریاضی شما حداقلی است و تلاش میکنیم آن را برای دانشآموزانی که از زمینههای دیگر میآیند قابل دسترس کنیم. بنابراین به یادداشتها، 🧮 نکات، نمودارها و ابزارهای یادگیری دیگر برای کمک به درک توجه کنید.
> در طول این برنامه آموزشی، فرض بر دانش حداقلی ریاضیات است و تلاش میشود آن را برای دانشآموزان رشتههای دیگر قابل دسترسی کنیم، پس به یادداشتها، 🧮 فراخوانها، نمودارها و سایر ابزارهای یادگیری توجه کنید تا فهم آسانتر شود.
### پیشنیاز
تا اینجا باید با ساختار دادههای کدو تنبل که در حال بررسی آن هستیم آشنا شده باشید. این دادهها در فایل _notebook.ipynb_ این درس از پیش بارگذاری و پاکسازی شدهاند. در این فایل، قیمت کدو تنبل به ازای هر بوشل در یک فریم داده جدید نمایش داده شده است. مطمئن شوید که میتوانید این نوتبوکها را در کرنلهای Visual Studio Code اجرا کنید.
تا حالا باید با ساختار دادههای کدو حلوایی که بررسی میکنیم آشنا شده باشید. میتوانید این دادهها را در فایل _notebook.ipynb_ این درس که پیشبارگذاری و پاکسازی شده است پیدا کنید. در این فایل، قیمت کدو حلوایی به ازای هر بوشل در یک فریم داده جدید نمایش داده شده است. مطمئن شوید که میتوانید این دفترچهها را در کرنلهای Visual Studio Code اجرا کنید.
### آمادهسازی
به یاد داشته باشید که شما این دادهها را بارگذاری میکنید تا سوالاتی از آن بپرسید.
به یاد داشته باشید که این دادهها را بارگذاری میکنید تا بتوانید سوالاتی از آن بپرسید.
- بهترین زمان خرید کدو حلوایی چه زمانی است؟
- چه قیمتی میتوانم برای یک جعبه کدوهای کوچک انتظار داشته باشم؟
- آیا باید آنها را در سبدهای نیم بوشل خریداری کنم یا جعبه ۱ و ۱/۹ بوشل؟
- بهترین زمان برای خرید کدو تنبل چه زمانی است؟
- چه قیمتی را میتوانم برای یک جعبه کدو تنبل کوچک انتظار داشته باشم؟
- آیا باید آنها را در سبدهای نیمبوشل بخرم یا در جعبههای 1 1/9 بوشل؟
بیایید به بررسی این دادهها ادامه دهیم.
بیایید بیشتر در این داده کاوش کنیم.
در درس قبلی، شما یک فریم داده Pandas ایجاد کردید و آن را با بخشی از مجموعه داده اصلی پر کردید، قیمتها را بر اساس بوشل استانداردسازی کردید. با این حال، با انجام این کار، فقط توانستید حدود 400 نقطه داده جمعآوری کنید و فقط برای ماههای پاییز.
در درس قبلی، شما یک فریم داده Pandas ایجاد کردید و آن را با بخشی از مجموعه داده اولیه پر کردید، و قیمتگذاری را بر اساس بوشل استاندارد کردید. اما با این کار فقط توانستید حدود ۴۰۰ نقطه داده و فقط برای ماههای پاییز گردآوری کنید.
به دادههایی که در نوتبوک همراه این درس از پیش بارگذاری شدهاند نگاهی بیندازید. دادهها از پیش بارگذاری شدهاند و یک نمودار پراکندگی اولیه برای نمایش دادههای ماه رسم شده است. شاید بتوانیم با پاکسازی بیشتر، جزئیات بیشتری درباره ماهیت دادهها به دست آوریم.
نگاهی به دادههایی که در دفترچه همراه این درس پیشبارگذاری شده است بیندازید. دادهها آمادهاند و یک نمودار پراکندگی اولیه برای نشان دادن داده ماه ترسیم شده است. شاید بتوانیم با پاکسازی بیشتر دادهها جزئیات بیشتری درباره طبیعت دادهها به دست آوریم.
## خط رگرسیون خطی
همانطور که در درس 1 یاد گرفتید، هدف یک تمرین رگرسیون خطی این است که بتوانید یک خط رسم کنید تا:
همانطور که در درس ۱ آموختید، هدف تمرین رگرسیون خطی این است که خطی ترسیم کنیم که:
- **رابطه متغیرها را نشان دهد.** رابطه بین متغیرها را نشان دهد.
- **پیشبینی انجام دهد.** پیشبینی دقیقی از اینکه یک نقطه داده جدید در رابطه با آن خط کجا قرار میگیرد، ارائه دهد.
رایجترین نوع رگرسیون خطی، **رگرسیون حداقل مربعات** است که این نوع خط را رسم میکند. اصطلاح "حداقل مربعات" به فرایند کمینه کردن مجموع کل خطا در مدل اشاره دارد. برای هر نقطه داده، فاصله عمودی (که باقیمانده نامیده میشود) بین نقطه واقعی و خط رگرسیون اندازهگیری میشود.
- **روابط متغیرها را نشان دهید**. رابطه بین متغیرها را نشان دهید.
- **پیشبینی کنید**. پیشبینیهای دقیقی درباره اینکه یک نقطه داده جدید در رابطه با آن خط کجا قرار میگیرد انجام دهید.
این فاصلهها به دلایل دوگانه به توان دو میرسند:
در رگرسیون **کمترین مربعات** معمول است که این نوع خط را رسم کنید. اصطلاح "کمترین مربعات" به این معناست که تمام نقاط داده اطراف خط رگرسیون مربع شده و سپس جمع میشوند. ایدهآل این است که این مجموع نهایی تا حد ممکن کوچک باشد، زیرا ما میخواهیم تعداد خطاها کم باشد، یا همان `کمترین مربعات`.
1. **مقدار نسبت به جهت:** میخواهیم خطای -۵ را برابر با خطای +۵ در نظر بگیریم. با مربع گرفتن همه مقدارها مثبت میشوند.
ما این کار را انجام میدهیم زیرا میخواهیم مدلی از یک خط داشته باشیم که کمترین فاصله تجمعی از تمام نقاط داده ما را داشته باشد. همچنین قبل از جمع کردن، مقادیر را مربع میکنیم زیرا به بزرگی آنها اهمیت میدهیم نه جهت آنها.
2. **مجازات نقاط پرت:** توان دو دادن وزن بیشتری به خطاهای بزرگتر میدهد و خط را مجبور میکند که نزدیک به نقاط دورتر بماند.
سپس همه این مقادیر مربعی را با هم جمع میکنیم. هدف ما یافتن آن خط خاص است که مجموع نهایی در آن حداقل (کوچکترین مقدار ممکن) باشد — به همین دلیل به آن "حداقل مربعات" گفته میشود.
> **🧮 ریاضیات را به من نشان بده**
>
> این خط، که به آن _خط بهترین برازش_ گفته میشود، میتواند با [یک معادله](https://en.wikipedia.org/wiki/Simple_linear_regression) بیان شود:
>
>
> این خط که _خط بهترین برازش_ نامیده میشود را میتوان با [یک معادله](https://en.wikipedia.org/wiki/Simple_linear_regression) بیان کرد:
>
> ```
> Y = a + bX
> ```
>
> `X` متغیر توضیحی است. `Y` متغیر وابسته است. شیب خط `b` است و `a`نقطه تقاطع با محور y است که به مقدار `Y` زمانی که `X = 0` اشاره دارد.
> `X` متغیر «توضیحی» است. `Y` متغیر «وابسته» است. شیب خط `b` است و `a`مقدار y-عرض از مبدأ (y-intercept) است که به مقدار `Y` هنگامی که `X = 0` اشاره دارد.
> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> به عبارت دیگر، و با اشاره به سوال اصلی دادههای کدو تنبل: "پیشبینی قیمت کدو تنبل به ازای هر بوشل بر اساس ماه"، `X` به قیمت اشاره دارد و `Y` به ماه فروش.
> به عبارت دیگر، و با اشاره به سوال اصلی دادههای کدو حلوایی ما: «پیشبینی قیمت کدو حلوایی به ازای هر بوشل با توجه به ماه»، `X` اشاره به قیمت دارد و `Y` به ماه فروش اشاره میکند.
>
>
> مقدار `Y` را محاسبه کنید. اگر حدود 4 دلار پرداخت میکنید، باید ماه آوریل باشد! اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
> مقدار Y را محاسبه کنید. اگر حدود ۴ دلار پرداخت میکنید، حتماً ماه آوریل است! اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> ریاضیات محاسبه خط باید شیب خط را نشان دهد، که همچنین به نقطه تقاطع وابسته است، یا جایی که `Y` زمانی که`X = 0` قرار دارد.
> ریاضیات محاسبه خط باید شیب خط را که به مقدار عرض از مبدأ نیز وابسته است نشان دهد، یعنی جایی که مقدار `Y` وقتی`X = 0` قرار دارد.
>
> میتوانید روش محاسبه این مقادیر را در وبسایت [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) مشاهده کنید. همچنین به [این ماشین حساب کمترین مربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) مراجعه کنید تا ببینید چگونه مقادیر عددی بر خط تأثیر میگذارند.
> روش محاسبه این مقادیر را میتوانید در وبسایت [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) مشاهده کنید. همچنین با استفاده از [این ماشین حساب حداقل مربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) ببینید که چگونه مقدار اعداد بر خط تاثیر میگذارد.
## همبستگی
یک اصطلاح دیگر که باید درک کنید **ضریب همبستگی** بین متغیرهای X و Y داده شده است. با استفاده از نمودار پراکندگی، میتوانید این ضریب را به سرعت بصریسازی کنید. نموداری با نقاط داده پراکنده در یک خط مرتب دارای همبستگی بالا است، اما نموداری با نقاط داده پراکنده در همه جا بین X و Y دارای همبستگی پایین است.
یک اصطلاح دیگر برای درک، **ضریب همبستگی** بین دو متغیر X و Y است. با استفاده از نمودار پراکندگی، میتوانید این ضریب را سریع بصریسازی کنید. نموداری با نقاط داده مرتب روی یک خط همبستگی بالا دارد، ولی اگر نقاط پراکنده در جایجای نمودار باشند، همبستگی پایین است.
یک مدل رگرسیون خطی خوب مدلی است که با استفاده از روش کمترین مربعات رگرسیون و یک خط رگرسیون، ضریب همبستگی بالایی (نزدیکتر به 1 تا 0) داشته باشد.
یک مدل رگرسیون خطی خوب، مدلی است که ضریب همبستگی بالایی (نزدیک به ۱ و دور از ۰) با روش حداقل مربعات و خط رگرسیون داشته باشد.
✅ نوتبوک همراه این درس را اجرا کنید و به نمودار پراکندگی ماه به قیمت نگاه کنید. آیا دادههای مرتبط با ماه به قیمت برای فروش کدو تنبل به نظر شما همبستگی بالا یا پایینی دارند، بر اساس تفسیر بصری شما از نمودار پراکندگی؟ آیا این تغییر میکند اگر به جای `ماه` از اندازهگیری دقیقتر مانند *روز سال* (یعنی تعداد روزها از ابتدای سال) استفاده کنید؟
✅ دفترچه همراه این درس را اجرا کنید و نمودار پراکندگی ماه به قیمت را نگاه کنید. آیا دادههای ارتباط ماه به قیمت کدو فروش همبستگی بالا یا پایین دارند، طبق تفسیر بصری شما از نمودار پراکندگی؟ آیا این تغییر میکند اگر به جای `ماه` از معیار دقیقتری مثل *روز سال* (یعنی تعداد روزهای گذشته از اول سال) استفاده کنید؟
در کد زیر، فرض میکنیم که دادهها را پاکسازی کردهایم و یک فریم داده به نام `new_pumpkins`به دست آوردهایم، مشابه موارد زیر:
در کد زیر فرض میکنیم دادهها را پاکسازی کردهایم و یک فریم داده به نام `new_pumpkins`داریم، شبیه به موارد زیر:
ID | ماه | روز سال | نوع | شهر | بستهبندی | قیمت پایین | قیمت بالا | قیمت
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> کد پاکسازی دادهها در [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb) موجود است. ما همان مراحل پاکسازی درس قبلی را انجام دادهایم و ستون `روز سال` را با استفاده از عبارت زیر محاسبه کردهایم:
> کد پاکسازی داده در [`notebook.ipynb`](notebook.ipynb) موجود است. ما همان مراحل پاکسازی درس قبلی را انجام دادهایم و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کردهایم:
اکنون که درک بهتری از ریاضیات پشت رگرسیون خطی دارید، بیایید یک مدل رگرسیون بسازیم تا ببینیم آیا میتوانیم پیشبینی کنیم کدام بستهبندی کدو تنبل بهترین قیمتها را خواهد داشت. کسی که کدو تنبل برای یک مزرعه تعطیلاتی خریداری میکند ممکن است بخواهد این اطلاعات را داشته باشد تا خریدهای بستههای کدو تنبل برای مزرعه را بهینه کند.
حالا که با ریاضیات پشت رگرسیون خطی آشنا شدید، بیایید یک مدل رگرسیون بسازیم تا ببینیم آیا میتوانیم پیشبینی کنیم کدام بسته کدو بیشترین قیمت را خواهد داشت. کسی که کدو برای یک نقطه کدو حلوایی تعطیلات میخرد ممکن است بخواهد این اطلاعات را برای بهینهسازی خریدهای خود داشته باشد.
## جستجوی همبستگی
[](https://youtu.be/uoRq-lW2eQo "یادگیری ماشین برای مبتدیان - جستجوی همبستگی: کلید رگرسیون خطی")
[](https://youtu.be/uoRq-lW2eQo "یادگیری ماشین برای مبتدیان – جستجوی همبستگی: کلید رگرسیون خطی")
> 🎥 برای مشاهده ویدئوی کوتاه درباره همبستگی، روی تصویر بالا کلیک کنید.
> 🎥 برای مشاهده ویدئوی کوتاه معرفی همبستگی روی تصویر بالا کلیک کنید.
از درس قبلی احتمالاً دیدهاید که میانگین قیمت برای ماههای مختلف به این شکل است:
<imgalt="میانگین قیمت بر اساس ماه"src="../../../../translated_images/fa/barchart.a833ea9194346d76.webp"width="50%"/>
این نشان میدهد که باید مقداری همبستگی وجود داشته باشد، و میتوانیم تلاش کنیم مدل رگرسیون خطی را آموزش دهیم تا رابطه بین `ماه` و `قیمت` یا بین `روز سال` و `قیمت`را پیشبینی کنیم. در اینجا نمودار پراکندگی که رابطه دوم را نشان میدهد آورده شده است:
این نشان میدهد که باید نوعی همبستگی وجود داشته باشد، و میتوانیم مدل رگرسیون خطی را برای پیشبینی رابطه بین `ماه` و `قیمت` یا بین `روز سال` و `قیمت`آموزش دهیم. در اینجا نمودار پراکندگی رابطه دوم نشان داده شده است:
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال"src="../../../../translated_images/fa/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال"src="../../../../translated_images/fa/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
بیایید ببینیم آیا همبستگی وجود دارد یا نه با استفاده از تابع `corr`:
بیایید ببینیم با استفاده از تابع `corr` آیا همبستگی وجود دارد:
به نظر میرسد که همبستگی بسیار کم است، -0.15 بر اساس `ماه` و -0.17 بر اساس`روز سال`، اما ممکن است رابطه مهم دیگری وجود داشته باشد. به نظر میرسد که دستههای مختلف قیمتها مربوط به انواع مختلف کدو تنبل هستند. برای تأیید این فرضیه، بیایید هر دسته کدو تنبل را با رنگ متفاوتی رسم کنیم. با ارسال پارامتر `ax` به تابع رسم پراکندگی، میتوانیم تمام نقاط را روی یک نمودار رسم کنیم:
به نظر میرسد همبستگی نسبتاً کوچک است، -۰.۱۵ برای `ماه` و -۰.۱۷ برای`روز سال`، اما ممکن است ارتباط مهم دیگری وجود داشته باشد. به نظر میرسد خوشههای مختلف قیمت با انواع مختلف کدو متناسب است. برای تأیید این فرض، بیایید هر دسته کدو را با رنگ متفاوت ترسیم کنیم. با ارسال پارامتر `ax` به تابع نمودار پراکندگی، میتوانیم همه نقاط را روی یک نمودار ترسیم کنیم:
```python
ax=None
@ -128,40 +141,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال" src="../../../../translated_images/fa/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال با رنگ" src="../../../../translated_images/fa/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
تحقیقات ما نشان میدهد که نوع کدو تنبل تأثیر بیشتری بر قیمت کلی دارد تا تاریخ فروش واقعی. میتوانیم این را با یک نمودار میلهای ببینیم:
تحقیق ما نشان میدهد که نوع کدو تاثیر بیشتری روی قیمت کلی دارد تا تاریخ واقعی فروش. این را میتوان با نمودار میلهای دید:
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال"src="../../../../translated_images/fa/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="نمودار پراکندگی قیمت در مقابل روز سال"src="../../../../translated_images/fa/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
اگر اکنون همبستگی بین `قیمت` و `روز سال` را با استفاده از تابع `corr` محاسبه کنیم، چیزی حدود `-0.27` به دست خواهیم آورد - که به این معناست که آموزش یک مدل پیشبینی منطقی است.
اگر اکنون همبستگی بین `قیمت` و `روز سال` را با استفاده از تابع `corr` محاسبه کنیم، چیزی مانند `-0.27` به دست میآوریم که نشان میدهد آموزش مدل پیشبینی منطقی است.
> قبل از آموزش مدل رگرسیون خطی، مهم است که مطمئن شویم دادههای ما پاک هستند. رگرسیون خطی با مقادیر گمشده خوب کار نمیکند، بنابراین منطقی است که تمام سلولهای خالی را حذف کنیم:
> پیش از آموزش مدل رگرسیون خطی، مهم است که دادهها پاک باشند. رگرسیون خطی با مقادیر گمشده خوب کار نمیکند، بنابراین بهتر است همه خانههای خالی را حذف کنیم:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
یک روش دیگر این است که این مقادیر خالی را با مقادیر میانگین از ستون مربوطه پر کنیم.
رویکرد دیگر پر کردن این مقادیر خالی با میانگین ستون مربوطه است.
## رگرسیون خطی ساده
[](https://youtu.be/e4c_UP2fSjg "یادگیری ماشین برای مبتدیان - رگرسیون خطی و چندجملهای با استفاده از Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "یادگیری ماشین برای مبتدیان – رگرسیون خطی و چندجملهای با استفاده از Scikit-learn")
> 🎥 برای مشاهده ویدئوی کوتاه درباره رگرسیون خطی و چندجملهای، روی تصویر بالا کلیک کنید.
> 🎥 برای دیدن ویدئوی کوتاه معرفی رگرسیون خطی و چندجملهای روی تصویر بالا کلیک کنید.
برای آموزش مدل رگرسیون خطی خود، از کتابخانه **Scikit-learn** استفاده خواهیم کرد.
@ -171,31 +184,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
ابتدا باید مقادیر ورودی (ویژگیها) و خروجی مورد انتظار (برچسب) را به آرایههای numpy جداگانه تقسیم کنیم:
با جدا کردن مقادیر ورودی (ویژگیها) و خروجی مورد انتظار (برچسب) به آرایههای numpy جداگانه شروع میکنیم:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> توجه داشته باشید که ما مجبور بودیم دادههای ورودی را با استفاده از `reshape` تغییر شکل دهیم تا بسته رگرسیون خطی بتواند آن را به درستی درک کند. رگرسیون خطی یک آرایه دوبعدی را به عنوان ورودی انتظار دارد، جایی که هر سطر آرایه مربوط به یک بردار از ویژگیهای ورودی است. در مورد ما، از آنجا که فقط یک ورودی داریم - به آرایهای با شکل N×1 نیاز داریم، جایی که N اندازه مجموعه داده است.
> توجه داشته باشید که ما باید `reshape` روی دادههای ورودی اعمال کنیم تا بسته رگرسیون خطی آنها را به درستی بفهمد. رگرسیون خطی انتظار دارد ورودی یک آرایه ۲بعدی باشد که هر سطر آن یک بردار ویژگیهای ورودی است. در مورد ما چون فقط یک ورودی داریم، به آرایهای با شکل N×1 نیاز داریم که N اندازه دیتاست است.
سپس، باید دادهها را به مجموعههای آموزشی و آزمایشی تقسیم کنیم تا بتوانیم مدل خود را پس از آموزش اعتبارسنجی کنیم:
سپس، باید دادهها را به مجموعههای آموزش و تست تقسیم کنیم، تا بتوانیم پس از آموزش مدل آن را ارزیابی کنیم:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
در نهایت، آموزش مدل رگرسیون خطی واقعی فقط دو خط کد طول میکشد. ما شیء `LinearRegression` را تعریف میکنیم و آن را با استفاده از روش `fit` به دادههای خود تطبیق میدهیم:
در نهایت، آموزش مدل واقعی رگرسیون خطی تنها دو خط کد طول میکشد. ما یک شیء `LinearRegression` تعریف میکنیم و آن را با استفاده از متد `fit` روی دادهها آموزش میدهیم:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
شیء `LinearRegression` پس از تطبیق شامل تمام ضرایب رگرسیون است که میتوان با استفاده از ویژگی `.coef_` به آنها دسترسی پیدا کرد. در مورد ما، فقط یک ضریب وجود دارد، که باید حدود `-0.017` باشد. این به این معناست که قیمتها به نظر میرسد کمی با گذشت زمان کاهش مییابند، اما نه خیلی زیاد، حدود 2 سنت در روز. همچنین میتوانیم نقطه تقاطع رگرسیون با محور Y را با استفاده از `lin_reg.intercept_`دسترسی پیدا کنیم - که در مورد ما حدود `21` خواهد بود، که نشاندهنده قیمت در ابتدای سال است.
شیء `LinearRegression` پس از انجام `fit` شامل تمامی ضرایب رگرسیون است که میتوان به آنها با استفاده از خاصیت `.coef_` دسترسی داشت. در مورد ما، فقط یک ضریب وجود دارد که باید حدود `-0.017` باشد. این یعنی قیمتها کمی با گذر زمان کاهش مییابد، اما نه خیلی زیاد، حدود ۲ سنت در روز. همچنین میتوانیم نقطه تقاطع رگرسیون با محور Y را با استفاده از `lin_reg.intercept_`مشاهده کنیم - که در مورد ما حدود `21` است و نشاندهنده قیمت در ابتدای سال است.
برای دیدن اینکه مدل ما چقدر دقیق است، میتوانیم قیمتها را در مجموعه داده آزمایشی پیشبینی کنیم و سپس اندازهگیری کنیم که پیشبینیهای ما چقدر به مقادیر مورد انتظار نزدیک هستند. این کار را میتوان با استفاده از معیار خطای میانگین مربعات (MSE) انجام داد، که میانگین تمام تفاوتهای مربعی بین مقدار مورد انتظار و پیشبینی شده است.
برای دیدن اینکه مدل ما چقدر دقیق است، میتوانیم قیمتها را روی دادههای تست پیشبینی کنیم و سپس میزان نزدیکی پیشبینیها به مقادیر انتظار رفته را بسنجیم. این کار میتواند با استفاده از معیار میانگین مربعات خطا (MSE) انجام شود، که میانگین تمام تفاوتهای مجذور شده بین مقدار انتظار رفته و پیشبینی شده است.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +216,38 @@ pred = lin_reg.predict(X_test)
خطای ما به نظر میرسد در حدود ۲ نقطه باشد، که تقریباً ۱۷٪ است. چندان خوب نیست. یکی دیگر از شاخصهای کیفیت مدل **ضریب تعیین** است، که میتوان آن را به این صورت به دست آورد:
خطای ما به نظر میرسد حدود ۲ واحد است که حدود ۱۷٪ میشود. چندان خوب نیست. شاخص دیگری برای کیفیت مدل، **ضریب تعیین** است که میتوان آن را به صورت زیر به دست آورد:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
اگر مقدار برابر با ۰ باشد، به این معناست که مدل دادههای ورودی را در نظر نمیگیرد و به عنوان *بدترین پیشبینیکننده خطی* عمل میکند، که صرفاً میانگین نتایج است. مقدار ۱ به این معناست که میتوانیم تمام خروجیهای مورد انتظار را به طور کامل پیشبینی کنیم. در مورد ما، ضریب تعیین حدود ۰.۰۶ است که بسیار پایین است.
```
اگر مقدار ۰ باشد، به این معناست که مدل ورودیها را در نظر نمیگیرد و به عنوان *بدترین پیشبینیکننده خطی* عمل میکند که صرفاً مقدار میانگین نتیجه است. مقدار ۱ نشان میدهد که میتوانیم بهطور کامل همه خروجیهای انتظار رفته را پیشبینی کنیم. در مورد ما، ضریب حدود ۰.۰۶ است که بسیار پایین است.
ما همچنین میتوانیم دادههای آزمایشی را همراه با خط رگرسیون رسم کنیم تا بهتر ببینیم که رگرسیون در مورد ما چگونه عمل میکند:
همچنین میتوانیم دادههای تست را به همراه خط رگرسیونی رسم کنیم تا بهتر ببینیم رگرسیون در مورد ما چگونه عمل میکند:
نوع دیگری از رگرسیون خطی، رگرسیون چندجملهای است. گاهی اوقات رابطه خطی بین متغیرها وجود دارد - مثلاً هرچه حجم کدو تنبل بزرگتر باشد، قیمت بالاتر میرود - اما گاهی این روابط نمیتوانند به صورت یک صفحه یا خط مستقیم رسم شوند.
نوع دیگری از رگرسیون خطی، رگرسیون چندجملهای است. در حالی که گاهی رابطه خطی بین متغیرها وجود دارد - مثلاً هرچه حجم کدو تنبل بزرگتر باشد، قیمت بالاتر است - گاهی این روابط قابل ترسیم به صورت یک صفحه یا خط راست نیستند.
✅ [اینجا چند مثال دیگر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از دادههایی که میتوانند از رگرسیون چندجملهای استفاده کنند آورده شده است.
✅ اینجا [چند مثال بیشتر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از دادههایی وجود دارد که میتوانند از رگرسیون چندجملهای استفاده کنند
یک بار دیگر به رابطه بین تاریخ و قیمت نگاه کنید. آیا این نمودار پراکندگی به نظر میرسد که باید حتماً با یک خط مستقیم تحلیل شود؟ آیا قیمتها نمیتوانند نوسان داشته باشند؟ در این مورد، میتوانید رگرسیون چندجملهای را امتحان کنید.
یک بار دیگر رابطه بین تاریخ و قیمت را بررسی کنید. آیا این نمودار پراکندگی حتما باید توسط یک خط راست تحلیل شود؟ آیا نمیتوان قیمتها را متغیر و نوسانکننده در نظر گرفت؟ در این حالت، میتوانید رگرسیون چندجملهای را امتحان کنید.
✅ چندجملهایها عبارتهای ریاضی هستند که ممکن است شامل یک یا چند متغیر و ضرایب باشند.
✅ چندجملهایها عبارات ریاضی هستند که ممکن است از یک یا چند متغیر و ضرایب تشکیل شوند.
رگرسیون چندجملهای یک خط منحنی ایجاد میکند تا دادههای غیرخطی را بهتر تطبیق دهد. در مورد ما، اگر یک متغیر `DayOfYear` به توان دو را به دادههای ورودی اضافه کنیم، باید بتوانیم دادههای خود را با یک منحنی سهمی تطبیق دهیم که در یک نقطه خاص در طول سال حداقل خواهد بود.
رگرسیون چندجملهای یک خط منحنی ایجاد میکند تا بهتر دادههای غیرخطی را برازش کند. در مورد ما، اگر متغیر مربعی `DayOfYear` را به دادههای ورودی اضافه کنیم، باید بتوانیم دادهها را با یک منحنی سهمی شکل تناسب دهیم که حداقل آن در نقطهای مشخص در طول سال واقع شده باشد.
Scikit-learn یک [API خط لوله](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفید برای ترکیب مراحل مختلف پردازش دادهها ارائه میدهد. **خط لوله** زنجیرهای از **تخمینگرها** است. در مورد ما، یک خط لوله ایجاد خواهیم کرد که ابتدا ویژگیهای چندجملهای را به مدل اضافه میکند و سپس رگرسیون را آموزش میدهد:
Scikit-learn یک [رابط خط لوله](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفید ارائه میدهد که مراحل مختلف پردازش داده را با هم ترکیب میکند. یک **خط لوله** زنجیرهای از **برآوردگرها** است. در مورد ما، یک خط لوله میسازیم که ابتدا ویژگیهای چندجملهای را به مدل اضافه میکند و سپس رگرسیون را آموزش میدهد:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +256,62 @@ from sklearn.pipeline import make_pipeline
استفاده از `PolynomialFeatures(2)`به این معناست که تمام چندجملهایهای درجه دوم از دادههای ورودی را شامل خواهیم کرد. در مورد ما این فقط به معنای `DayOfYear`<sup>2</sup> خواهد بود، اما با دو متغیر ورودی X و Y، این شامل X<sup>2</sup>، XY و Y<sup>2</sup> خواهد بود. اگر بخواهیم، میتوانیم از چندجملهایهای درجه بالاتر نیز استفاده کنیم.
استفاده از `PolynomialFeatures(2)`یعنی اینکه همه چندجملهایهای درجه دوم از داده ورودی را شامل میشویم. در مورد ما، فقط به معنی `DayOfYear`<sup>2</sup> است، اما اگر دو متغیر ورودی X و Y داشته باشیم، این شامل X<sup>2</sup>، XY و Y<sup>2</sup> خواهد بود. ما همچنین میتوانیم از چندجملهایهای درجه بالاتر نیز استفاده کنیم اگر بخواهیم.
خط لولهها را میتوان به همان شیوهای که شیء اصلی `LinearRegression` استفاده میشود، یعنی با `fit` کردن خط لوله و سپس استفاده از `predict` برای دریافت نتایج پیشبینی، استفاده کرد. اینجا نمودار دادههای آزمایشی و منحنی تقریب آورده شده است:
خط لولهها میتوانند به همان شیوه شیء `LinearRegression` اصلی استفاده شوند، یعنی میتوانیم روی خط لوله `fit` کنیم و سپس از `predict` برای دریافت نتایج پیشبینی استفاده کنیم. در اینجا نموداری است که دادههای تست و منحنی تقریب را نشان میدهد:
با استفاده از رگرسیون چندجملهای، میتوانیم MSE کمی پایینتر و ضریب تعیین بالاتری داشته باشیم، اما نه به طور قابل توجهی. باید ویژگیهای دیگر را نیز در نظر بگیریم!
با استفاده از رگرسیون چندجملهای، میتوانیم خطای میانگین مربعات کمی پایینتر و ضریب تعیین بالاتری به دست آوریم، اما نه به طور قابل توجه. باید ویژگیهای دیگر را نیز مد نظر قرار دهیم!
> میتوانید ببینید که قیمتهای حداقل کدو تنبل در حوالی هالووین مشاهده میشود. چگونه میتوانید این را توضیح دهید؟
> میبینید که کمترین قیمتهای کدو تنبل در حوالی هالووین مشاهده میشود. چگونه میتوانید این را توضیح دهید؟
🎃 تبریک میگویم، شما مدلی ایجاد کردید که میتواند به پیشبینی قیمت کدو تنبل پای کمک کند. احتمالاً میتوانید همین روش را برای همه انواع کدو تنبل تکرار کنید، اما این کار خستهکننده خواهد بود. حالا بیایید یاد بگیریم که چگونه نوع کدو تنبل را در مدل خود در نظر بگیریم!
🎃 تبریک میگوییم، شما به تازگی مدلی ایجاد کردید که میتواند در پیشبینی قیمت کدو تنبل پای کمک کند. احتمالاً میتوانید همین روند را برای همه نوعهای کدو تنبل تکرار کنید، اما این کار خستهکننده خواهد بود. حالا بیایید یاد بگیریم چگونه تنوع کدو تنبل را در مدل خود در نظر بگیریم!
## ویژگیهای دستهبندیشده
## ویژگیهای دستهای
در دنیای ایدهآل، ما میخواهیم بتوانیم قیمتها را برای انواع مختلف کدو تنبل با استفاده از همان مدل پیشبینی کنیم. با این حال، ستون `Variety` کمی متفاوت از ستونهایی مانند `Month` است، زیرا شامل مقادیر غیرعددی است. چنین ستونهایی **دستهبندیشده** نامیده میشوند.
در دنیای ایدهآل، میخواهیم بتوانیم قیمتها را برای گونههای مختلف کدو تنبل با استفاده از همان مدل پیشبینی کنیم. اما ستون `Variety` کمی متفاوت از ستونهایی مثل `Month` است، چون شامل مقادیر غیرعددی است. چنین ستونهایی **دستهای** نامیده میشوند.
[](https://youtu.be/DYGliioIAE0 "یادگیری ماشین برای مبتدیان - پیشبینی ویژگیهای دستهبندیشده با رگرسیون خطی")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره استفاده از ویژگیهای دستهبندیشده مشاهده کنید.
> 🎥 روی تصویر بالا کلیک کنید تا یک ویدیوی کوتاه درباره استفاده از ویژگیهای دستهای ببینید.
اینجا میتوانید ببینید که چگونه قیمت متوسط به نوع کدو تنبل بستگی دارد:
در اینجا میبینید که قیمت متوسط چگونه بسته به نوع کدو تنبل تغییر میکند:
<imgalt="قیمت متوسط بر اساس نوع" src="../../../../translated_images/fa/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/fa/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
برای در نظر گرفتن نوع کدو تنبل، ابتدا باید آن را به شکل عددی تبدیل کنیم، یا **رمزگذاری** کنیم. چند روش برای انجام این کار وجود دارد:
برای در نظر گرفتن تنوع، ابتدا باید آن را به فرم عددی تبدیل کنیم، یا به اصطلاح آن را **کدگذاری** کنیم. چند روش وجود دارد:
* **رمزگذاری عددی ساده** یک جدول از انواع مختلف ایجاد میکند و سپس نام نوع را با یک شاخص در آن جدول جایگزین میکند. این بهترین روش برای رگرسیون خطی نیست، زیرا رگرسیون خطی مقدار عددی واقعی شاخص را میگیرد و آن را به نتیجه اضافه میکند، ضرب در یک ضریب. در مورد ما، رابطه بین شماره شاخص و قیمت به وضوح غیرخطی است، حتی اگر مطمئن شویم که شاخصها به ترتیب خاصی مرتب شدهاند.
* **رمزگذاری یکبهچند** ستون `Variety` را با ۴ ستون مختلف جایگزین میکند، یکی برای هر نوع. هر ستون شامل `1` خواهد بود اگر ردیف مربوطه از یک نوع خاص باشد، و در غیر این صورت `0`. این به این معناست که در رگرسیون خطی، چهار ضریب وجود خواهد داشت، یکی برای هر نوع کدو تنبل، که مسئول "قیمت شروع" (یا بهتر بگوییم "قیمت اضافی") برای آن نوع خاص است.
* کدگذاری عددی ساده جدولی از گونههای مختلف میسازد و سپس نام گونه را با یک شماره شاخص در آن جدول جایگزین میکند. این روش برای رگرسیون خطی ایدهآل نیست، چون رگرسیون خطی مقدار عددی شاخص را وارد محاسبات میکند و در نتیجه رابطه بین شماره شاخص و قیمت به طور مشهود غیرخطی است، حتی اگر مطمئن شویم که شاخصها به ترتیب خاصی هستند.
* **کدگذاری یکگرمی** ستون `Variety` را با ۴ ستون مختلف جایگزین میکند، یکی برای هر نوع. هر ستون مقدار `1` دارد اگر سطر مربوط به آن نوع باشد، و `0` در غیر این صورت. این یعنی برای رگرسیون خطی چهار ضریب داریم، یکی برای هر نوع کدو تنبل، که مسئول قیمت اولیه (یا بهتر است بگوییم قیمت اضافی) برای آن نوع مشخص است.
کد زیر نشان میدهد که چگونه میتوان یک نوع را به صورت یکبهچند رمزگذاری کرد:
کد زیر نشان میدهد چگونه میتوانیم یکگرمی کدگذاری را انجام دهیم:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
برای آموزش رگرسیون خطی با استفاده از نوع رمزگذاریشده به صورت یکبهچند به عنوان ورودی، فقط باید دادههای `X` و `y` را به درستی مقداردهی کنیم:
برای آموزش رگرسیون خطی با استفاده از تنوع کدگذاری شده به صورت یکگرمی به عنوان ورودی، فقط کافی است دادههای `X` و `y` را به درستی مقداردهی اولیه کنیم:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
بقیه کد مشابه چیزی است که در بالا برای آموزش رگرسیون خطی استفاده کردیم. اگر آن را امتحان کنید، خواهید دید که میانگین مربعات خطا تقریباً همان است، اما ضریب تعیین بسیار بالاتر (~77٪) است. برای دریافت پیشبینیهای دقیقتر، میتوانیم ویژگیهای دستهبندیشده بیشتری را در نظر بگیریم، همچنین ویژگیهای عددی مانند `Month` یا `DayOfYear`. برای دریافت یک آرایه بزرگ از ویژگیها، میتوانیم از `join` استفاده کنیم:
باقی کد همان است که قبلاً برای آموزش رگرسیون خطی استفاده کردیم. اگر امتحان کنید، خواهید دید که میانگین مربعات خطا تقریباً همان است، اما ضریب تعیین بسیار بالاتری (~۷۷٪) به دست میآوریم. برای پیشبینیهای دقیقتر، میتوانیم ویژگیهای دستهای بیشتری و همچنین ویژگیهای عددی مانند `Month` یا `DayOfYear` را در نظر بگیریم. برای داشتن یک آرایه بزرگ از ویژگیها، میتوانیم از `join` استفاده کنیم:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,69 +319,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
اینجا همچنین `City` و نوع `Package` را در نظر میگیریم، که MSE 2.84 (10٪) و ضریب تعیین 0.94 را به ما میدهد!
در اینجا همچنین `City` و نوع `Package` را در نظر میگیریم که به ما MSE 2.84 (۱۰٪) و ضریب تعیین ۰.۹۴ میدهد!
## همه چیز را کنار هم قرار دادن
## جمعبندی همه چیز
برای ایجاد بهترین مدل، میتوانیم دادههای ترکیبی (دستهبندیشده رمزگذاریشده به صورت یکبهچند + عددی) از مثال بالا را همراه با رگرسیون چندجملهای استفاده کنیم. اینجا کد کامل برای راحتی شما آورده شده است:
برای ساخت بهترین مدل، میتوانیم دادههای ترکیبی (ویژگیهای کدگذاری شده یکگرمی و عددی) از مثال بالا را همراه با رگرسیون چندجملهای استفاده کنیم. در اینجا کد کامل برای راحتی شما آمده است:
```python
# set up training data
# تنظیم دادههای آموزشی
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# تقسیم دادهها به مجموعه آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
این باید بهترین ضریب تعیین تقریباً 97٪ و MSE=2.23 (~8٪ خطای پیشبینی) را به ما بدهد.
این باید بهترین ضریب تعیین یعنی تقریباً ۹۷٪ و MSE=2.23 (حدود ۸٪ خطای پیشبینی) را به ما بدهد.
| مدل | MSE | ضریب تعیین |
|-------|-----|---------------|
| `DayOfYear` خطی | 2.77 (17.2٪) | 0.07 |
| `DayOfYear` چندجملهای | 2.73 (17.0٪) | 0.08 |
| `Variety` خطی | 5.24 (19.7٪) | 0.77 |
| همه ویژگیها خطی | 2.84 (10.5٪) | 0.94 |
| همه ویژگیها چندجملهای | 2.23 (8.25٪) | 0.97 |
| مدل | MSE | ضریب تعیین |
|-------|-----|---------------|
| خطی `DayOfYear` | 2.77 (17.2%) | 0.07 |
| چندجملهای `DayOfYear` | 2.73 (17.0%) | 0.08 |
| خطی `Variety` | 5.24 (19.7%) | 0.77 |
| همه ویژگیها خطی | 2.84 (10.5%) | 0.94 |
| همه ویژگیها چندجملهای | 2.23 (8.25%) | 0.97 |
🏆 عالی کار کردید! شما چهار مدل رگرسیون را در یک درس ایجاد کردید و کیفیت مدل را به 97٪ بهبود دادید. در بخش نهایی درباره رگرسیون، یاد خواهید گرفت که چگونه از رگرسیون لجستیک برای تعیین دستهها استفاده کنید.
🏆 آفرین! شما در یک درس چهار مدل رگرسیون ساختید و کیفیت مدل را تا ۹۷٪ بهبود دادید. در بخش نهایی درباره رگرسیون، درباره رگرسیون لجستیک برای تعیین دستهها خواهید آموخت.
---
## 🚀 چالش
## 🚀چالش
چندین متغیر مختلف را در این دفترچه آزمایش کنید تا ببینید چگونه همبستگی با دقت مدل مطابقت دارد.
متغیرهای مختلف را در این دفترچه تست کنید تا ببینید چگونه همبستگی با دقت مدل رابطه دارد.
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## مرور و مطالعه شخصی
## مرور و خودآموزی
در این درس درباره رگرسیون خطی یاد گرفتیم. انواع مهم دیگری از رگرسیون وجود دارند. درباره تکنیکهای Stepwise، Ridge، Lasso و Elasticnet مطالعه کنید. یک دوره خوب برای یادگیری بیشتر [دوره یادگیری آماری استنفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) است.
در این درس درباره رگرسیون خطی آموختیم. انواع مهم دیگری از رگرسیون نیز وجود دارد. درباره تکنیکهای مرحلهای، Ridge، Lasso و Elasticnet مطالعه کنید. دوره خوبی برای یادگیری بیشتر دوره [یادگیری آماری استنفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) است.
## تکلیف
## تمرین
[یک مدل بسازید](assignment.md)
[مدلی بسازید](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نواقص باشند. سند اصلی به زبان مبدأ باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سوتفاهم یا تفسیر نادرست ناشی از استفاده از این ترجمه نیستیم.
در این درس دوم از طبقهبندی، شما روشهای بیشتری برای طبقهبندی دادههای عددی بررسی خواهید کرد. همچنین درباره پیامدهای انتخاب یک طبقهبند نسبت به دیگری یاد خواهید گرفت.
در این درس دوم طبقهبندی، شما راههای بیشتری برای طبقهبندی دادههای عددی کاوش خواهید کرد. همچنین درباره عواقب انتخاب یک طبقهبند نسبت به دیگری خواهید آموخت.
## [آزمون قبل از درس](https://ff-quizzes.netlify.app/en/ml/)
### پیشنیاز
فرض میکنیم که درسهای قبلی را کامل کردهاید و یک مجموعه داده تمیز شده در پوشه `data` دارید که به نام _cleaned_cuisines.csv_ در ریشه این پوشه چهار درسی ذخیره شده است.
فرض میکنیم که درسهای قبلی را به پایان رساندهاید و یک مجموعهداده تمیز شده به نام _cleaned_cuisines.csv_ در پوشه `data` در ریشه این فولدر ۴ درسی دارید.
### آمادهسازی
ما فایل _notebook.ipynb_ شما را با مجموعه داده تمیز شده بارگذاری کردهایم و آن را به دو دیتافریم X و y تقسیم کردهایم، آماده برای فرآیند ساخت مدل.
ما فایل _notebook.ipynb_ شما را با مجموعهداده تمیز شده بارگذاری کردهایم و آن را به DataFrame های X و y تقسیم کردهایم که آماده فرآیند ساخت مدل هستند.
## نقشه طبقهبندی
قبلاً درباره گزینههای مختلفی که هنگام طبقهبندی دادهها با استفاده از برگه تقلب مایکروسافت دارید، یاد گرفتید. Scikit-learn یک برگه تقلب مشابه اما دقیقتر ارائه میدهد که میتواند به محدود کردن انتخاب طبقهبندها (که به آنها تخمینگر نیز گفته میشود) کمک کند:
قبلاً درباره گزینههای مختلفی که هنگام طبقهبندی دادهها با استفاده از چیت شیت مایکروسافت دارید، یاد گرفتید. Scikit-learn چیتشیتی مشابه، اما دقیقتر ارائه میدهد که میتواند به شما کمک کند برآوردگرهای خود (اصطلاحی دیگر برای طبقهبندها) را بیشتر محدود کنید:

> نکته: [این نقشه را آنلاین ببینید](https://scikit-learn.org/stable/tutorial/machine_learning_map/) و مسیرها را کلیک کنید تا مستندات را بخوانید.

> نکته: [این نقشه را به صورت آنلاین ببینید](https://scikit-learn.org/stable/tutorial/machine_learning_map/) و در مسیرها کلیک کنید تا مستندات را بخوانید.
### برنامه
این نقشه زمانی بسیار مفید است که درک واضحی از دادههای خود داشته باشید، زیرا میتوانید در مسیرهای آن قدم بزنید تا به یک تصمیم برسید:
این نقشه زمانی بسیار مفید است که تسلط خوبی روی دادههای خود داشته باشید، زیرا میتوانید در مسیرهای آن قدم بزنید تا به تصمیم برسید:
- ما بیش از ۵۰ نمونه داریم
- میخواهیم یک دستهبندی را پیشبینی کنیم
- دادههای برچسبدار داریم
- دادهها برچسبخوردهاند
- کمتر از ۱۰۰ هزار نمونه داریم
- ✨ میتوانیم یک Linear SVC انتخاب کنیم
- اگر این کار نکرد، چون دادههای عددی داریم
- میتوانیم ✨ KNeighbors Classifier را امتحان کنیم
- اگر این کار نکرد، ✨ SVC و ✨ Ensemble Classifiers را امتحان کنید
- ✨ میتوانیم Linear SVC را انتخاب کنیم
- اگر این کار نکند، چون دادههای عددی داریم
- میتوانیم یک ✨ KNeighbors Classifier را امتحان کنیم
- اگر آن هم خوب نبود، امتحان کنید ✨ SVC و ✨ Ensemble Classifiers
این مسیر بسیار مفید است.
این مسیر بسیار مفیدی است که باید دنبال شود.
## تمرین - تقسیم دادهها
با دنبال کردن این مسیر، باید با وارد کردن برخی کتابخانهها شروع کنیم.
1. کتابخانههای مورد نیاز را وارد کنید:
1. کتابخانههای لازم را وارد کنید:
```python
from sklearn.neighbors import KNeighborsClassifier
خوشهبندی پشتیبان-برداری (SVC) یکی از اعضای خانواده تکنیکهای یادگیری ماشین پشتیبان-برداری است (در مورد اینها بیشتر در زیر یاد بگیرید). در این روش، میتوانید یک 'kernel' انتخاب کنید تا نحوه خوشهبندی برچسبها را تعیین کنید. پارامتر 'C' به 'تنظیمسازی' اشاره دارد که تأثیر پارامترها را تنظیم میکند. کرنل میتواند یکی از [چندین](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) باشد؛ در اینجا آن را به 'linear' تنظیم میکنیم تا از Linear SVC استفاده کنیم. مقدار پیشفرض احتمال 'false' است؛ در اینجا آن را به 'true' تنظیم میکنیم تا تخمینهای احتمالی جمعآوری شود. حالت تصادفی را به '0' تنظیم میکنیم تا دادهها برای دریافت احتمالات مخلوط شوند.
خوشهبندی پشتیبانی برداری (SVC) از خانواده ماشینهای بردار پشتیبان است (برای اطلاعات بیشتر درباره اینها در ادامه بخوانید). در این روش، میتوانید یک 'هسته' انتخاب کنید تا تصمیم بگیرد چگونه برچسبها را خوشهبندی کند. پارامتر 'C' به «تنظیم» اشاره دارد که تأثیر پارامترها را کنترل میکند. هسته میتواند از [چندین](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) مورد باشد؛ در اینجا آن را روی 'linear' قرار دادیم تا اطمینان حاصل شود از SVC خطی استفاده میکنیم. احتمال پیشفرض 'false' است؛ در اینجا روی 'true' تنظیم شده است تا تخمینهای احتمال جمعآوری شود. حالت تصادفی را روی '۰' تنظیم کردیم تا دادهها را برای به دست آوردن احتمالات جابهجا کند.
### تمرین - اعمال Linear SVC
با ایجاد یک آرایه از طبقهبندها شروع کنید. شما به تدریج به این آرایه اضافه خواهید کرد.
با ایجاد آرایهای از طبقهبندها شروع کنید. به تدریج به این آرایه اضافه خواهید کرد همانطور که آزمایش میکنیم.
2. مدل خود را با استفاده از Linear SVC آموزش دهید و گزارش را چاپ کنید:
2. مدل خود را با استفاده از Linear SVC آموزش دهید و گزارش چاپ کنید:
```python
n_classifiers = len(classifiers)
@ -88,7 +88,7 @@
print(classification_report(y_test,y_pred))
```
نتیجه بسیار خوب است:
نتیجه نسبتاً خوب است:
```output
Accuracy (train) for Linear SVC: 78.6%
@ -107,13 +107,13 @@
## طبقهبند K-Neighbors
K-Neighbors بخشی از خانواده "همسایهها" در روشهای یادگیری ماشین است که میتواند برای یادگیری نظارتشده و بدون نظارت استفاده شود. در این روش، تعداد نقاط از پیش تعریف شده ایجاد میشود و دادهها در اطراف این نقاط جمعآوری میشوند تا برچسبهای عمومی برای دادهها پیشبینی شود.
K-Neighbors بخشی از خانواده روشهای یادگیری ماشین "همسایهها" است که میتواند برای یادگیری نظارتشده و بدون نظارت استفاده شود. در این روش، تعداد نقاط از پیش تعریف شدهای ساخته میشود و دادهها اطراف این نقاط جمع میشوند تا برچسبهای تعمیمیافته برای دادهها پیشبینی شود.
### تمرین - اعمال طبقهبند K-Neighbors
طبقهبند قبلی خوب بود و با دادهها خوب کار کرد، اما شاید بتوانیم دقت بهتری داشته باشیم. طبقهبند K-Neighbors را امتحان کنید.
طبقهبند قبلی خوب بود و با دادهها خوب کار کرد، اما شاید بتوانیم دقت بهتری داشته باشیم. یک طبقهبند K-Neighbors را امتحان کنید.
1. یک خط به آرایه طبقهبند خود اضافه کنید (بعد از آیتم Linear SVC یک کاما اضافه کنید):
1. یک خط به آرایه طبقهبندهای خود اضافه کنید (بعد از عنصر Linear SVC یک ویرگول اضافه کنید):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -136,23 +136,23 @@ K-Neighbors بخشی از خانواده "همسایهها" در روشه
weighted avg 0.76 0.74 0.74 1199
```
✅ درباره [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) یاد بگیرید
✅ درباره [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) بیشتر بدانید
## طبقهبند پشتیبان-برداری
## طبقهبند Support Vector
طبقهبندهای پشتیبان-برداری بخشی از خانواده [ماشینهای پشتیبان-برداری](https://wikipedia.org/wiki/Support-vector_machine) در روشهای یادگیری ماشین هستند که برای وظایف طبقهبندی و رگرسیون استفاده میشوند. SVMها "نمونههای آموزشی را به نقاطی در فضا نگاشت میکنند" تا فاصله بین دو دسته را به حداکثر برسانند. دادههای بعدی به این فضا نگاشت میشوند تا دسته آنها پیشبینی شود.
طبقهبندهای بردار پشتیبان بخشی از خانواده ماشین بردار پشتیبان (SVM) هستند که برای وظایف طبقهبندی و رگرسیون استفاده میشوند. SVMها "نمونههای آموزش را به نقاطی در فضا نگاشت میدهند" تا فاصله بین دو دسته را به حداکثر برسانند. دادههای بعدی در این فضا نگاشت میشود تا دسته آنها پیشبینی شود.
### تمرین - اعمال طبقهبند پشتیبان-برداری
### تمرین - اعمال طبقهبند Support Vector
بیایید برای دقت بهتر، طبقهبند پشتیبان-برداری را امتحان کنیم.
بیایید برای دقت کمی بهتر، طبقهبند Support Vector را امتحان کنیم.
1. بعد از آیتم K-Neighbors یک کاما اضافه کنید و سپس این خط را اضافه کنید:
1. بعد از عنصر K-Neighbors یک ویرگول اضافه کنید، سپس این خط را اضافه کنید:
```python
'SVC': SVC(),
```
نتیجه بسیار خوب است!
نتیجه خیلی خوب است!
```output
Accuracy (train) for SVC: 83.2%
@ -169,18 +169,18 @@ K-Neighbors بخشی از خانواده "همسایهها" در روشه
weighted avg 0.84 0.83 0.83 1199
```
✅ درباره [پشتیبان-برداری](https://scikit-learn.org/stable/modules/svm.html#svm) یاد بگیرید
✅ درباره [راهحلهای بردار پشتیبان](https://scikit-learn.org/stable/modules/svm.html#svm) بیشتر بدانید
## طبقهبندهای Ensemble
بیایید مسیر را تا انتها دنبال کنیم، حتی اگر آزمایش قبلی بسیار خوب بود. بیایید برخی از طبقهبندهای Ensemble، بهویژه Random Forest و AdaBoost را امتحان کنیم:
بیایید مسیر را تا انتها دنبال کنیم، گرچه آزمایش قبلی بسیار خوب بود. بیایید برخی 'طبقهبندهای Ensemble' را امتحان کنیم، به خصوص Random Forest و AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
نتیجه بسیار خوب است، بهویژه برای Random Forest:
نتیجه بسیار خوب است، بهویژه برای Random Forest:
```output
Accuracy (train) for RFST: 84.5%
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ درباره [طبقهبندهای Ensemble](https://scikit-learn.org/stable/modules/ensemble.html) یاد بگیرید
✅ درباره [طبقهبندهای Ensemble](https://scikit-learn.org/stable/modules/ensemble.html) بیشتر بخوانید
این روش یادگیری ماشین "پیشبینیهای چندین تخمینگر پایه را ترکیب میکند" تا کیفیت مدل را بهبود بخشد. در مثال ما، از Random Trees و AdaBoost استفاده کردیم.
این روش یادگیری ماشین "پیشبینی چندین برآوردگر پایه را ترکیب میکند" تا کیفیت مدل را بهبود بخشد. در مثال ما، از درختان تصادفی و AdaBoost استفاده کردیم.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، یک روش میانگینگیری، یک 'جنگل' از 'درختان تصمیمگیری' ایجاد میکند که با تصادفیسازی تزریق شدهاند تا از بیشبرازش جلوگیری شود. پارامتر n_estimators به تعداد درختان تنظیم شده است.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، یک روش میانگینگیری، یک «جنگل» از «درخت تصمیم» ایجاد میکند که با تصادفی بودن ترکیب شده تا از بیشبرازش جلوگیری کند. پارامتر n_estimators روی تعداد درختان تنظیم شده است.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) یک طبقهبند را به مجموعه داده تطبیق میدهد و سپس نسخههایی از آن طبقهبند را به همان مجموعه داده تطبیق میدهد. این روش بر وزن آیتمهای اشتباه طبقهبندی شده تمرکز میکند و تطبیق را برای طبقهبند بعدی تنظیم میکند تا اصلاح شود.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) یک طبقهبند را روی مجموعه داده برازش میدهد و سپس نسخههایی از همان طبقهبند را روی همان مجموعه داده برازش میدهد. تمرکز آن روی وزن نمونههای نادرست طبقهبندی شده است و برازش را برای طبقهبند بعدی تنظیم میکند تا خطا را اصلاح کند.
---
## 🚀چالش
هر یک از این تکنیکها تعداد زیادی پارامتر دارند که میتوانید تنظیم کنید. درباره پارامترهای پیشفرض هر کدام تحقیق کنید و فکر کنید که تنظیم این پارامترها چه تأثیری بر کیفیت مدل خواهد داشت.
هر یک از این تکنیکها دارای تعداد زیادی پارامتر هستند که میتوانید تنظیم کنید. پارامترهای پیشفرض هر کدام را تحقیق کنید و فکر کنید تنظیم این پارامترها برای کیفیت مدل چه معنایی دارد.
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## [آزمون بعد از درس](https://ff-quizzes.netlify.app/en/ml/)
## مرور و مطالعه شخصی
## بازبینی و مطالعه خودخوان
در این درسها اصطلاحات زیادی وجود دارد، بنابراین چند دقیقه وقت بگذارید تا [این فهرست](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) از اصطلاحات مفید را مرور کنید!
در این درسها اصطلاحات زیادی وجود دارد، پس یک دقیقه وقت بگذارید و [این فهرست](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) اصطلاحات مفید را مرور کنید!
## تکلیف
## تمرین
[بازی با پارامترها](assignment.md)
---
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه مبتنی بر هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی اشتباهات یا نادرستیهایی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده شود. ما مسئول هیچگونه سوءتفاهم یا برداشت نادرستی که ناشی از استفاده از این ترجمه باشد، نمیباشیم.
"\n---\n\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش میکنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادقتیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما هیچ مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است اشتباهات یا نواقصی داشته باشند. سند اصلی به زبان مادری آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه نیستیم.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش میکنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما هیچ مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**توضیح مهم**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در پی دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی اشتباهات یا نواقص باشند. سند اصلی به زبان بومی آن منبع مرجع و معتبر تلقی میشود. برای اطلاعات حیاتی، استفاده از ترجمه حرفهای انسانی توصیه میشود. مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه پذیرفته نمیشود.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> این مخزن شامل بیش از ۵۰ ترجمه زبان است که اندازه دانلود را بهطور قابل توجهی افزایش میدهد. برای کلون کردن بدون ترجمهها، از sparse checkout استفاده کنید:
> **ترجیح میدهید به صورت محلی کلون کنید؟**
>
> این مخزن شامل ترجمههایی به بیش از ۵۰ زبان است که حجم دانلود را به طور قابل توجهی افزایش میدهد. برای کلون کردن بدون ترجمهها، از sparse checkout استفاده کنید:
ما یک سری آموزش Discord با موضوع یادگیری همراه با هوش مصنوعی برگزار میکنیم، اطلاعات بیشتر و پیوستن به ما را در [Learn with AI Series](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ بیابید. در این دوره نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را خواهید گرفت.
ما یک سری آموزش Discord با محوریت یادگیری با هوش مصنوعی داریم، بیشتر بدانید و از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ به ما بپیوندید در [Learn with AI Series](https://aka.ms/learnwithai/discord). در این سری نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را خواهید آموخت.


# یادگیری ماشین برای مبتدیان - یک برنامه درسی
# یادگیری ماشین برای مبتدیان - یک برنامه آموزشی
> 🌍 در حالی که یادگیری ماشین را از طریق فرهنگهای جهانی کاوش میکنیم، به دور دنیا سفر کنید 🌍
> 🌍 با ما در سفری به اطراف جهان در حالی که یادگیری ماشین را از طریق فرهنگهای مختلف جهان بررسی میکنیم 🌍
حمایتکنندگان ابری مایکروسافت خوشحالند که یک برنامه درسی ۱۲ هفتهای، شامل ۲۶ درس را درباره **یادگیری ماشین** ارائه دهند. در این برنامه درسی، درباره چیزی که گاهی اوقات به آن «یادگیری ماشین کلاسیک» گفته میشود، آموزش خواهید دید، که عمدتاً از کتابخانه Scikit-learn استفاده میکند و از یادگیری عمیق که در برنامه درسی [هوش مصنوعی برای مبتدیان](https://aka.ms/ai4beginners) ما پوشش داده شده است، اجتناب میکند. این دروس را با برنامه درسی ما ['علم داده برای مبتدیان'](https://aka.ms/ds4beginners) نیز جفت کنید!
حمایتکنندگان ابری در مایکروسافت مفتخرند یک برنامه ۱۲ هفتهای با ۲۶ درس درباره **یادگیری ماشین** ارائه دهند. در این برنامه، شما با چیزی که گاهی «یادگیری ماشین کلاسیک» نامیده میشود، آشنا خواهید شد، عمدتاً با استفاده از کتابخانه Scikit-learn و به دور از یادگیری عمیق که در برنامه آموزشی [هوش مصنوعی برای مبتدیان](https://aka.ms/ai4beginners) پوشش داده شده است. این درسها را همراه با برنامه ['علم داده برای مبتدیان'](https://aka.ms/ds4beginners) نیز بیاموزید!
با ما در طول جهان سفر کنید در حالی که این تکنیکهای کلاسیک را روی دادههای مناطق مختلف دنیا اعمال میکنیم. هر درس شامل کوییزهای قبل و بعد از درس، دستورات مکتوب برای تکمیل درس، یک راهحل، یک تمرین و بیشتر است. روش آموزش مبتنی بر پروژه ما به شما اجازه میدهد در حالی که میسازید یاد بگیرید، روشی اثبات شده برای تثبیت مهارتهای جدید.
با ما به سفر به اطراف جهان بپیوندید تا این تکنیکهای کلاسیک را بر دادههای از مناطق مختلف جهان اعمال کنیم. هر درس شامل سوالات قبل و بعد از درس، دستورالعملهای مکتوب برای انجام درس، راه حل، تمرین و موارد دیگر است. روش آموزشی پروژهمحور ما به شما این امکان را میدهد تا در حین ساختن یاد بگیرید؛ روشی اثبات شده برای چسبیدن مهارتهای جدید.
**✍️ قدردانی فراوان از نویسندگان ما** جن لوپر، استفان هاول، فرانچسکا لازری، تومومی ایمورا، کاسی برویو، دمیتری سوشنیکوف، کریس نورینگ، آنربان موخرجی، اورنلا آلتونین، روث یاکوبو و اِمی بوید
**✍️ با تشکر فراوان از نویسندگان ما** جن لوپر، استفان هاول، فرانچسکا لازری، تومومی ایمورا، کَسی برویو، دیمیتری سوشنیکوف، کریس نورینگ، آنیربان موخرجی، اورنلا آلتونیان، روث یاکوبو و ایمی بوید
**🎨 همچنین از تصویرگران ما متشکریم** تومومی ایمورا، داسانی مادینپالی، و جن لوپر
**🎨 همچنین تشکر از تصویرگران ما** تومومی ایمورا، داسانی مادیپالی و جن لوپر
**🙏 تشکر ویژه 🙏 از سفیران دانشجویی مایکروسافت، نویسندگان، بازبینها، و مشارکتکنندگان محتوا** به ویژه ریشیت داغلی، محمد ساکیب خان اینان، روهان راج، الکساندرو پتروسکو، آبیشک جایسوال، ناورین طبسوم، ایوان سامویلا، و اسنیگدا آگاروال
**🙏 سپاس ویژه 🙏 از نویسندگان، بازبینان و مشارکتکنندگان مایکروسافت استیودنت امباسادور** به ویژه ریشیت داگلی، محمد ساکیب خان اینان، روهان راج، الکساندرو پتروسکو، آبیشک جایسوال، نوورین طبسم، ایوان سامویلا و اسنیگدها آگرال
**🤩 قدردانی اضافی از سفیران دانشجویی مایکروسافت اریک وانجو، جاسلین سوندی، و ویدوشی گوپتا به خاطر درسهای R ما!**
**🤩 قدردانی ویژه به مایکروسافت استیودنت امباسادورهای اریک وانژاو، جَسلین سوندی و ویدوشی گپتا برای درسهای R ما!**
# شروع به کار
این مراحل را دنبال کنید:
1. **فورک کردن مخزن**: روی دکمه "Fork" در گوشه بالا-راست صفحه کلیک کنید.
2. **کلون کردن مخزن**:`git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **شاخۀ مخزن را بسازید (Fork):** روی دکمه «Fork» در گوشه بالا سمت راست این صفحه کلیک کنید.
2. **مخزن را کلون کنید:**`git clone https://github.com/microsoft/ML-For-Beginners.git`
> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما بیابید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [تمام منابع اضافی این دوره را در مجموعه مایکروسافت لرن ما بیابید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **نیاز به کمک دارید؟** راهنمای [رفع اشکال](TROUBLESHOOTING.md) ما را برای حل مشکلات رایج نصب، راهاندازی و اجرای درسها بررسی کنید.
> 🔧 **نیاز به کمک دارید؟** راهنمای [رفع مشکلات](TROUBLESHOOTING.md) را برای حل مشکلات رایج نصب، پیکربندی و اجرای درسها بررسی کنید.
**[دانشجویان](https://aka.ms/student-page)**، برای استفاده از این برنامه درسی، کل مخزن را به حساب GitHub خود فورک کنید و تمرینها را بهصورت جداگانه یا گروهی کامل کنید:
- با کوییز پیشکلاس شروع کنید.
- متن درس را بخوانید و فعالیتها را انجام دهید، در هر بررسی دانش توقف و تأمل کنید.
- سعی کنید پروژهها را با درک دروس بسازید نه فقط با اجرای کد راهحل؛ البته کد راهحل در پوشههای `/solution` در هر درس مبتنی بر پروژه در دسترس است.
- کوییز پس از درس را انجام دهید.
**[دانشجویان](https://aka.ms/student-page)** برای استفاده از این برنامه، کل مخزن را به حساب GitHub خود فورک کرده و تمرینها را بهصورت فردی یا گروهی انجام دهید:
- با یک آزمون پیش از درس شروع کنید.
- درس را بخوانید و فعالیتها را انجام دهید و در هر مرحلهای که سوال دانش مطرح است، توقف کرده و فکر کنید.
- سعی کنید پروژهها را با درک درسها ایجاد کنید نه صرفاً اجرای کد راهحل؛ هرچند کد راهحل در پوشههای `/solution` هر درس پروژهمحور موجود است.
- آزمون پس از درس را انجام دهید.
- چالش را کامل کنید.
- تمرین را انجام دهید.
- پس از تکمیل یک گروه درس، به [صفحه بحث](https://github.com/microsoft/ML-For-Beginners/discussions) مراجعه کنید و با پر کردن فرم ارزیابی پیشرفت مناسب (PAT) "با صدای بلند بیاموزید". 'PAT' یک ابزار ارزیابی پیشرفت است که به شما کمک میکند یادگیری خود را عمیقتر کنید. همچنین میتوانید به سایر PATها واکنش نشان دهید تا با هم یاد بگیریم.
- پس از تکمیل گروه درسی، به [تابلو بحث](https://github.com/microsoft/ML-For-Beginners/discussions) سر بزنید و با پر کردن فرم PAT مناسب، از یادگیری خود به صورت بلند بیاموزید. PAT یک ابزار ارزیابی پیشرفت است که شما پر میکنید تا یادگیری خود را عمیقتر کنید. همچنین میتوانید به PATهای دیگر واکنش نشان دهید تا با هم یاد بگیریم.
> برای مطالعه بیشتر، ما پیشنهاد میکنیم این ماژولها و مسیرهای یادگیری [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) را دنبال کنید.
> برای مطالعه بیشتر، توصیه میکنیم این ماژولها و مسیرهای یادگیری [مایکروسافت لرن](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) را دنبال کنید.
**اساتید**، ما [چند پیشنهاد](for-teachers.md) در مورد نحوه استفاده از این برنامه درسی ارائه کردهایم.
**معلمان**، ما برخی پیشنهادات را در [فایل for-teachers.md](for-teachers.md) گنجاندهایم برای چگونگی استفاده از این برنامه.
---
## راهنمای ویدیویی
## فیلمهای آموزشی
برخی از دروس به صورت ویدیوهای کوتاه در دسترس هستند. میتوانید همه آنها را در داخل درسها یا در [لیست پخش ML for Beginners در کانال یوتیوب Microsoft Developer](https://aka.ms/ml-beginners-videos) با کلیک روی تصویر زیر بیابید.
بعضی از درسها به صورت ویدیوهای کوتاه در دسترس هستند. میتوانید این ویدیوها را به صورت خطی در درسها پیدا کنید یا در [لیست پخش ML for Beginners در کانال Microsoft Developer یوتیوب](https://aka.ms/ml-beginners-videos) از طریق کلیک روی تصویر زیر مشاهده کنید.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
> 🎥 برای مشاهده ویدیو درباره پروژه و افراد سازنده آن روی تصویر بالا کلیک کنید!
> 🎥 برای دیدن ویدیویی درباره پروژه و افرادی که آن را ساختهاند، روی تصویر بالا کلیک کنید!
---
## روش آموزش
## روش آموزشی
ما دو اصل آموزشی را در ساخت این برنامه درسی انتخاب کردهایم: اطمینان از اینکه به صورت عملی و **مبتنی بر پروژه** باشد و شامل **کوییزهای مکرر** باشد. همچنین این برنامه درسی یک **موضوع کلی** مشترک دارد تا انسجام داشته باشد.
ما در ساخت این برنامه دو اصل آموزشی را انتخاب کردهایم: اطمینان از عملی بودن آن یعنی **پروژهمحور** بودن و داشتن **آزمونهای مکرر**. افزون بر این، این برنامه دارای **تم مشترک** است که یکپارچگی آن را فراهم میکند.
با اطمینان از انطباق محتوا با پروژهها، فرایند برای دانشجویان جذابتر شده و نگهداری مفاهیم افزایش مییابد. علاوه بر این، یک کوییز کم ریسک قبل از کلاس قصد دانشجو را برای یادگیری موضوع تنظیم میکند، در حالی که کوییز دوم پس از کلاس اطمینان میدهد که مطلب بهتر در ذهن باقی میماند. این برنامه به گونهای طراحی شده است که قابل انعطاف و لذتبخش باشد و میتوان آن را کامل یا بخش به بخش اخذ کرد. پروژهها از کوچک شروع شده و تا پایان چرخه ۱۲ هفتهای به تدریج پیچیدهتر میشوند. این برنامه درسی همچنین شامل بخشی درباره کاربردهای واقعی یادگیری ماشین است که میتواند به عنوان امتیاز اضافی یا پایه بحث استفاده شود.
با اطمینان از همراستایی محتوا با پروژهها، فرایند برای دانشآموزان جذابتر شده و ماندگاری مفاهیم افزایش مییابد. همچنین وجود آزمون کم ریسک قبل از کلاس قصد یادگیری را در دانشآموز ایجاد کرده و آزمون دوم پس از کلاس باعث تثبیت بیشتر میشود. این برنامه به گونهای طراحی شده که انعطافپذیر و سرگرمکننده باشد و میتوان آن را به طور کامل یا قسمتی از آن را گذراند. پروژهها از کوچک شروع شده و تا پایان دوره ۱۲ هفتهای به تدریج پیچیدهتر میشوند. این برنامه همچنین شامل بخش پایانی در مورد کاربردهای واقعی یادگیری ماشین است که میتوان از آن به عنوان امتیاز اضافه یا پایهای برای بحث استفاده کرد.
> دستورالعملهای [رفتار حرفهای](CODE_OF_CONDUCT.md)، [سهیم شدن](CONTRIBUTING.md)، [ترجمه](TRANSLATIONS.md)، و [رفع اشکال](TROUBLESHOOTING.md) ما را بیابید. بازخورد سازنده شما را استقبال میکنیم!
> دستورالعملهای [کد رفتاری](CODE_OF_CONDUCT.md)، [همکاری](CONTRIBUTING.md)، [ترجمه](TRANSLATIONS.md) و [رفع مشکلات](TROUBLESHOOTING.md) ما را بیابید. منتظر بازخورد سازنده شما هستیم!
## هر درس شامل
## هر درس شامل موارد زیر است
- یادداشت اختیاری طرحکشی شده
- ویدیوی مکمل اختیاری
- راهنمای ویدئویی (فقط برخی دروس)
- [کوییز گرمکننده پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
- اسکیچنوت اختیاری
- ویدیوی تکمیلی اختیاری
- آموزش ویدیویی (فقط برخی درسها)
- [آزمون گرمکننده پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
- درس مکتوب
- برای دروس مبتنی بر پروژه، راهنمای گامبهگام ساخت پروژه
- بررسیهای دانش
- برای درسهای پروژهمحور، راهنمای گام به گام ساخت پروژه
- آزمونهای دانش
- یک چالش
- مطالعه تکمیلی
- تمرین
- [کوییز پس از درس](https://ff-quizzes.netlify.app/en/ml/)
> **نکتهای درباره زبانها**: این دروس عمدتاً در زبان پایتون نوشته شدهاند، اما بسیاری نیز به زبان R موجود هستند. برای کامل کردن درس R، به پوشه `/solution` رفته و درسهای R را جستجو کنید. این فایلها دارای پسوند .rmd هستند که نمایانگر یک فایل **R Markdown** است، که به سادگی میتوان آن را یک چارچوب نویسندگی نمونه برای علم داده تعریف کرد، زیرا به شما اجازه میدهد کد، خروجی آن، و فکر خود را با نوشتن آنها در Markdown ترکیب کنید. همچنین، اسناد R Markdown میتوانند به فرمتهای خروجی مانند PDF، HTML، یا Word صادر شوند.
> **یادداشتی درباره آزمونها**: تمام آزمونها در [پوشه Quiz App](../../quiz-app) قرار دارند، مجموعاً ۵۲ آزمون که هر کدام شامل سه سوال است. این آزمونها درون دروس لینک شدهاند اما اپلیکیشن آزمون میتواند به صورت محلی اجرا شود؛ برای میزبانی محلی یا پیادهسازی در Azure دستورالعملهای موجود در پوشه `quiz-app` را دنبال کنید.
| شماره درس | موضوع | دستهبندی درس | اهداف یادگیری | درس مرتبط | نویسنده |
| ۰۱ | مقدمهای بر یادگیری ماشین | [مقدمه](1-Introduction/README.md) | مفاهیم پایه پشت یادگیری ماشین را بیاموزید | [درس](1-Introduction/1-intro-to-ML/README.md) | محمد |
| ۰۲ | تاریخچه یادگیری ماشین | [مقدمه](1-Introduction/README.md) | تاریخچه زمینه این حوزه را یاد بگیرید | [درس](1-Introduction/2-history-of-ML/README.md) | جن و اِمی |
| ۰۳ | عدالت و یادگیری ماشین | [مقدمه](1-Introduction/README.md) | مسائل فلسفی مهم پیرامون عدالت که دانشآموزان باید هنگام ساخت و استفاده از مدلهای یادگیری ماشین مدنظر داشته باشند چیست؟ | [درس](1-Introduction/3-fairness/README.md) | تومومی |
| ۰۴ | تکنیکهای یادگیری ماشین | [مقدمه](1-Introduction/README.md) | پژوهشگران یادگیری ماشین از چه تکنیکهایی برای ساخت مدلهای یادگیری ماشین استفاده میکنند؟ | [درس](1-Introduction/4-techniques-of-ML/README.md) | کریس و جن |
| ۰۵ | مقدمهای بر رگرسیون | [رگرسیون](2-Regression/README.md) | با پایتون و Scikit-learn برای مدلهای رگرسیون شروع کنید | [پایتون](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • اریک وانجاو |
| ۰۶ | قیمتهای کدو تنبل آمریکای شمالی 🎃 | [رگرسیون](2-Regression/README.md) | دادهها را جهت آمادهسازی برای یادگیری ماشین تجسم و پاکسازی کنید | [پایتون](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • اریک وانجاو |
| ۰۷ | قیمتهای کدو تنبل آمریکای شمالی 🎃 | [رگرسیون](2-Regression/README.md) | مدلهای رگرسیون خطی و چندجملهای بسازید | [پایتون](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن و دیمیتری • اریک وانجاو |
| ۰۹ | یک اپ وب 🔌 | [اپ وب](3-Web-App/README.md) | یک اپ وب بسازید تا از مدل آموزش دیده خود استفاده کنید | [پایتون](3-Web-App/1-Web-App/README.md) | جن |
| ۱۰ | مقدمهای بر طبقهبندی | [طبقهبندی](4-Classification/README.md) | دادههای خود را پاکسازی، آمادهسازی و تجسم کنید؛ مقدمهای بر طبقهبندی | [پایتون](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن و کَسی • اریک وانجاو |
| ۱۱ | غذاهای خوشمزه آسیایی و هندی 🍜 | [طبقهبندی](4-Classification/README.md) | مقدمهای بر طبقهبندها | [پایتون](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن و کَسی • اریک وانجاو |
| ۱۲ | غذاهای خوشمزه آسیایی و هندی 🍜 | [طبقهبندی](4-Classification/README.md) | طبقهبندهای بیشتر | [پایتون](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن و کَسی • اریک وانجاو |
| ۱۳ | غذاهای خوشمزه آسیایی و هندی 🍜 | [طبقهبندی](4-Classification/README.md) | اپ وب توصیهگر با استفاده از مدل خود بسازید | [پایتون](4-Classification/4-Applied/README.md) | جن |
| ۱۴ | مقدمهای بر خوشهبندی | [خوشهبندی](5-Clustering/README.md) | دادههای خود را پاکسازی، آمادهسازی و تجسم کنید؛ مقدمهای بر خوشهبندی | [پایتون](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • اریک وانجاو |
| ۱۵ | بررسی سلیقههای موسیقی نیجریهای 🎧 | [خوشهبندی](5-Clustering/README.md) | روش خوشهبندی K-Means را کاوش کنید | [پایتون](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جن • اریک وانجاو |
| ۱۶ | مقدمهای بر پردازش زبان طبیعی ☕️ | [پردازش زبان طبیعی](6-NLP/README.md) | اصول پردازش زبان طبیعی را با ساخت یک ربات ساده بیاموزید | [پایتون](6-NLP/1-Introduction-to-NLP/README.md) | استیفن |
| ۱۷ | وظایف رایج پردازش زبان طبیعی ☕️ | [پردازش زبان طبیعی](6-NLP/README.md) | دانش خود را با درک وظایف متداول مورد نیاز هنگام کار با ساختارهای زبانی عمیقتر کنید | [پایتون](6-NLP/2-Tasks/README.md) | استیفن |
| ۱۸ | ترجمه و تحلیل احساسات ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | ترجمه و تحلیل احساسات با جین آستن | [پایتون](6-NLP/3-Translation-Sentiment/README.md) | استیفن |
| ۱۹ | هتلهای رمانتیک اروپا ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | تحلیل احساسات با نقدهای هتل ۱ | [پایتون](6-NLP/4-Hotel-Reviews-1/README.md) | استیفن |
| ۲۰ | هتلهای رمانتیک اروپا ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | تحلیل احساسات با نقدهای هتل ۲ | [پایتون](6-NLP/5-Hotel-Reviews-2/README.md) | استیفن |
| ۲۱ | مقدمهای بر پیشبینی سریهای زمانی | [سریهای زمانی](7-TimeSeries/README.md) | مقدمهای بر پیشبینی سریهای زمانی | [پایتون](7-TimeSeries/1-Introduction/README.md) | فرانچسکا |
| ۲۲ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با ARIMA | [سریهای زمانی](7-TimeSeries/README.md) | پیشبینی سری زمانی با ARIMA | [پایتون](7-TimeSeries/2-ARIMA/README.md) | فرانچسکا |
| ۲۳ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با SVR | [سریهای زمانی](7-TimeSeries/README.md) | پیشبینی سری زمانی با رگرسیون بردار پشتیبان | [پایتون](7-TimeSeries/3-SVR/README.md) | آنیربان |
| ۲۴ | مقدمهای بر یادگیری تقویتی | [یادگیری تقویتی](8-Reinforcement/README.md) | مقدمهای بر یادگیری تقویتی با Q-Learning | [پایتون](8-Reinforcement/1-QLearning/README.md) | دیمیتری |
| ۲۵ | کمک به پیتر برای فرار از گرگ! 🐺 | [یادگیری تقویتی](8-Reinforcement/README.md) | یادگیری تقویتی در Gym | [پایتون](8-Reinforcement/2-Gym/README.md) | دیمیتری |
| پسنویس | سناریوها و کاربردهای دنیای واقعی یادگیری ماشین | [یادگیری ماشین در دنیای واقعی](9-Real-World/README.md) | کاربردهای جالب و روشنگر یادگیری ماشین کلاسیک در دنیای واقعی | [درس](9-Real-World/1-Applications/README.md) | تیم |
| پسنویس | عیبیابی مدل در یادگیری ماشین با داشبورد RAI | [یادگیری ماشین در دنیای واقعی](9-Real-World/README.md) | عیبیابی مدل در یادگیری ماشین با استفاده از مولفههای داشبورد Responsible AI | [درس](9-Real-World/2-Debugging-ML-Models/README.md) | روث یا کوبو |
- [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
> **یادداشتی درباره زبانها**: این درسها عمدتاً به زبان پایتون نوشته شدهاند، اما بسیاری از آنها همچنین به زبان R نیز در دسترس هستند. برای تکمیل یک درس R، به پوشه `/solution` بروید و به دنبال درسهای R بگردید. آنها دارای پسوند .rmd هستند که نمایانگر یک فایل **R Markdown** است که میتوان آن را به سادگی بهعنوان یک جایگذاری از `قطعههای کد` (از زبان R یا زبانهای دیگر) و یک `سرصفحه YAML` (که نحوه قالببندی خروجیها مانند PDF را راهنمایی میکند) در یک `سند Markdown` تعریف کرد. بنابراین، این یک چارچوب نمونهوار برای تولید محتوا در علم داده است زیرا به شما اجازه میدهد کد، خروجی آن و فکرهای خود را با نوشتن آنها در Markdown ترکیب کنید. همچنین، اسناد R Markdown میتوانند به فرمتهای خروجی مانند PDF، HTML یا Word تبدیل شوند.
> **یادداشتی درباره آزمونها**: تمام آزمونها در پوشه [Quiz App](../../quiz-app) قرار دارند، که شامل مجموعاً ۵۲ آزمون، هر کدام با سه سوال است. این آزمونها از داخل درسها لینک شدهاند اما اپلیکیشن آزمون میتواند به صورت محلی اجرا شود؛ دستورالعملهای موجود در پوشه `quiz-app` را برای میزبانی محلی یا استقرار در Azure دنبال کنید.
| شماره درس | موضوع | دستهبندی درس | اهداف یادگیری | درس مرتبط | نویسنده |
| ۰۱ | معرفی یادگیری ماشین | [مقدمه](1-Introduction/README.md) | آشنایی با مفاهیم پایه یادگیری ماشین | [درس](1-Introduction/1-intro-to-ML/README.md) | محمد |
| ۰۲ | تاریخچه یادگیری ماشین | [مقدمه](1-Introduction/README.md) | یادگیری تاریخچه این حوزه | [درس](1-Introduction/2-history-of-ML/README.md) | جن و ایمی |
| ۰۳ | انصاف و یادگیری ماشین | [مقدمه](1-Introduction/README.md) | مسائل فلسفی مهم درباره انصاف که دانشآموزان باید هنگام ساخت و پیادهسازی مدلهای یادگیری ماشین در نظر بگیرند چیست؟ | [درس](1-Introduction/3-fairness/README.md) | تومومی |
| ۰۴ | تکنیکهای یادگیری ماشین | [مقدمه](1-Introduction/README.md) | پژوهشگران یادگیری ماشین از چه تکنیکهایی برای ساخت مدلهای یادگیری ماشین استفاده میکنند؟ | [درس](1-Introduction/4-techniques-of-ML/README.md) | کریس و جن |
| ۰۵ | مقدمهای بر رگرسیون | [رگرسیون](2-Regression/README.md) | شروع کار با پایتون و Scikit-learn برای مدلهای رگرسیون | [پایتون](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • اریک وانجاو |
| ۰۶ | قیمت کدو حلوایی آمریکای شمالی 🎃 | [رگرسیون](2-Regression/README.md) | مصورسازی و پاکسازی دادهها برای آمادهسازی یادگیری ماشین | [پایتون](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • اریک وانجاو |
| ۰۷ | قیمت کدو حلوایی آمریکای شمالی 🎃 | [رگرسیون](2-Regression/README.md) | ساخت مدلهای رگرسیون خطی و چندجملهای | [پایتون](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن و دیمیتری • اریک وانجاو |
| ۰۸ | قیمت کدو حلوایی آمریکای شمالی 🎃 | [رگرسیون](2-Regression/README.md) | ساخت مدل رگرسیون لجستیک | [پایتون](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • اریک وانجاو |
| ۰۹ | یک برنامه وب 🔌 | [برنامه وب](3-Web-App/README.md) | ساخت یک برنامه وب برای استفاده از مدل آموزشدیده شده | [پایتون](3-Web-App/1-Web-App/README.md) | جن |
| ۱۰ | مقدمهای بر دستهبندی | [دستهبندی](4-Classification/README.md) | پاکسازی، آمادهسازی، و مصورسازی دادهها؛ مقدمهای بر دستهبندی | [پایتون](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن و کِسی • اریک وانجاو |
| ۱۱ | غذاهای خوشمزه آسیایی و هندی 🍜 | [دستهبندی](4-Classification/README.md) | مقدمهای بر طبقهبندها | [پایتون](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن و کِسی • اریک وانجاو |
| ۱۲ | غذاهای خوشمزه آسیایی و هندی 🍜 | [دستهبندی](4-Classification/README.md) | طبقهبندهای بیشتر | [پایتون](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن و کِسی • اریک وانجاو |
| ۱۳ | غذاهای خوشمزه آسیایی و هندی 🍜 | [دستهبندی](4-Classification/README.md) | ساخت یک برنامه وب توصیهگر با استفاده از مدل خود | [پایتون](4-Classification/4-Applied/README.md) | جن |
| ۱۴ | مقدمهای بر خوشهبندی | [خوشهبندی](5-Clustering/README.md) | پاکسازی، آمادهسازی و مصورسازی دادهها؛ مقدمهای بر خوشهبندی | [پایتون](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • اریک وانجاو |
| ۱۵ | بررسی سلیقههای موسیقی نیجریهای 🎧 | [خوشهبندی](5-Clustering/README.md) | بررسی روش خوشهبندی K-Means | [پایتون](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جن • اریک وانجاو |
| ۱۶ | مقدمهای بر پردازش زبان طبیعی ☕️ | [پردازش زبان طبیعی](6-NLP/README.md) | آموزش مبانی NLP با ساخت یک ربات ساده | [پایتون](6-NLP/1-Introduction-to-NLP/README.md) | استیفن |
| ۱۷ | وظایف رایج NLP ☕️ | [پردازش زبان طبیعی](6-NLP/README.md) | تعمیق دانش NLP با درک وظایف رایج مورد نیاز در برخورد با ساختارهای زبانی | [پایتون](6-NLP/2-Tasks/README.md) | استیفن |
| ۱۸ | ترجمه و تحلیل احساسات ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | ترجمه و تحلیل احساسات با جین آستن | [پایتون](6-NLP/3-Translation-Sentiment/README.md) | استیفن |
| ۱۹ | هتلهای عاشقانه اروپا ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | تحلیل احساسات با بررسی هتلها ۱ | [پایتون](6-NLP/4-Hotel-Reviews-1/README.md) | استیفن |
| ۲۰ | هتلهای عاشقانه اروپا ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | تحلیل احساسات با بررسی هتلها ۲ | [پایتون](6-NLP/5-Hotel-Reviews-2/README.md) | استیفن |
| ۲۱ | مقدمهای بر پیشبینی سریهای زمانی | [سریهای زمانی](7-TimeSeries/README.md) | مقدمهای بر پیشبینی سریهای زمانی | [پایتون](7-TimeSeries/1-Introduction/README.md) | فرانچسکا |
| ۲۲ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با ARIMA | [سریهای زمانی](7-TimeSeries/README.md) | پیشبینی سریهای زمانی با ARIMA | [پایتون](7-TimeSeries/2-ARIMA/README.md) | فرانچسکا |
| ۲۳ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با SVR | [سریهای زمانی](7-TimeSeries/README.md) | پیشبینی سریهای زمانی با رگرسیون بردار پشتیبان | [پایتون](7-TimeSeries/3-SVR/README.md) | آنیربان |
| ۲۴ | مقدمهای بر یادگیری تقویتی | [یادگیری تقویتی](8-Reinforcement/README.md) | مقدمهای بر یادگیری تقویتی با الگوریتم Q-Learning | [پایتون](8-Reinforcement/1-QLearning/README.md) | دیمیتری |
| ۲۵ | کمک به پیتر برای جلوگیری از گرگ! 🐺 | [یادگیری تقویتی](8-Reinforcement/README.md) | یادگیری تقویتی در Gym | [پایتون](8-Reinforcement/2-Gym/README.md) | دیمیتری |
| پستاسکریپت | موقعیتها و کاربردهای دنیای واقعی ML | [ML در طبیعت](9-Real-World/README.md) | کاربردهای جالب و روشنگر یادگیری ماشین کلاسیک در دنیای واقعی | [درس](9-Real-World/1-Applications/README.md) | تیم |
| پستاسکریپت | اشکالزدایی مدل در ML با استفاده از داشبورد RAI | [ML در طبیعت](9-Real-World/README.md) | اشکالزدایی مدل در یادگیری ماشین با استفاده از المانهای داشبورد Responsible AI | [درس](9-Real-World/2-Debugging-ML-Models/README.md) | راث یاکوبو |
> [تمام منابع اضافی این دوره را در مجموعه Microsoft Learn ما بیابید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## دسترسی آفلاین
شما میتوانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. مخزن را فورک کنید، [Docsify](https://docsify.js.org/#/quickstart) را روی دستگاه محلی خود نصب کنید، سپس در پوشه اصلی این مخزن، دستور `docsify serve` را تایپ کنید. وبسایت روی پورت ۳۰۰۰ در localhost شما با آدرس `localhost:3000` میزبانی میشود.
شما میتوانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کنید، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی کامپیوتر محلی خود، و سپس در پوشه ریشه این مخزن، دستور `docsify serve` را وارد کنید. سایت روی پورت ۳۰۰۰ در هاست محلی شما ارائه خواهد شد: `localhost:3000`.
## فایلهای PDF
نسخه پیدیاف برنامه درسی با لینکها را [اینجا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) بیابید.
یک فایل PDF از برنامه درسی به همراه لینکها را [اینجا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) بیابید.
## 🎒 دورههای دیگر
تیم ما دورههای دیگری نیز تولید میکند! بررسی کنید:
تیم ما دورههای دیگری نیز تولید میکند! نگاه کنید به:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generative AI Series
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### سری کوپایلوت
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
### سری همیار برنامهنویس
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
اگر در ساخت برنامههای هوش مصنوعی گیر کردهاید یا سوالی دارید. به جمع زبانآموزان و توسعهدهندگان با تجربه در بحثهای پیرامون MCP بپیوندید. این یک جامعه پشتیبان است که در آن سوالات خوشآمد گفته میشود و دانش آزادانه به اشتراک گذاشته میشود.
اگر گیر کردید یا سوالی درباره ساخت برنامههای هوش مصنوعی داشتید، به جمع یادگیرندگان و توسعهدهندگان باتجربه در بحثهای MCP بپیوندید. این یک جامعه حمایتگر است که در آن سوالات خوشآمد گفته میشوند و دانش به صورت آزاد به اشتراک گذاشته میشود.
[](https://discord.gg/nTYy5BXMWG)
اگر بازخورد محصول یا خطا هنگام ساخت داشتید به موارد زیر مراجعه کنید:
اگر بازخورد محصول یا خطایی هنگام ساخت برنامه مشاهده کردید به اینجا مراجعه کنید:
[](https://aka.ms/foundry/forum)
- پس از هر درس دفترچهها را مرور کنید تا بهتر متوجه شوید.
- تمرین کنید الگوریتمها را خودتان پیادهسازی کنید.
- با استفاده از مفاهیم یادگرفته شده دادههای واقعی را کاوش کنید.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**توضیح مسئولیت**:
این سند با استفاده از سرویس ترجمه مبتنی بر هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی اشتباهات یا نابهدقتیهایی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، استفاده از ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچگونه سوءتفاهم یا برداشت نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل اشتباهات یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات مهم و حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئول هیچگونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.
اس سبق میں آپ نے ذمہ دار AI ٹول باکس کے بارے میں سیکھا، جو "ایک اوپن سورس، کمیونٹی پر مبنی منصوبہ ہے جو ڈیٹا سائنسدانوں کو AI سسٹمز کا تجزیہ کرنے اور انہیں بہتر بنانے میں مدد فراہم کرتا ہے۔" اس اسائنمنٹ کے لیے، RAI ٹول باکس کے ایک [نوٹ بک](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) کو دریافت کریں اور اپنے نتائج کو ایک مقالے یا پریزنٹیشن میں رپورٹ کریں۔
اس سبق میں آپ نے ذمہ دار AI ٹول باکس کے بارے میں سیکھا، جو "ایک اوپن سورس، کمیونٹی کے زیر انتظام پروجیکٹ ہے جو ڈیٹا سائنسدانوں کو AI سسٹمز کا تجزیہ کرنے اور بہتر بنانے میں مدد دیتا ہے۔" اس اسائنمنٹ کے لیے، RAI ٹول باکس کی ایک [نوٹ بک](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) کو دریافت کریں اور اپنی دریافتوں کی ایک مقالہ یا پریزنٹیشن میں رپورٹ کریں۔
| | ایک مقالہ یا پاورپوائنٹ پریزنٹیشن پیش کی گئی ہے جس میں Fairlearn کے سسٹمز، چلائی گئی نوٹ بک، اور اس کے نتائج پر بات کی گئی ہے۔ | ایک مقالہ پیش کیا گیا ہے لیکن نتائج شامل نہیں ہیں | کوئی مقالہ پیش نہیں کیا گیا |
| | ایک مقالہ یا پاورپوائنٹ پریزنٹیشن پیش کی جاتی ہے جو Fairlearn کے سسٹمز، چلائی گئی نوٹ بک، اور اسے چلانے سے اخذ کیے گئے نتائج پر بحث کرتی ہے | ایک مقالہ پیش کیا جاتا ہے بغیر نتائج کے | کوئی مقالہ پیش نہیں کیا جاتا |
---
**ڈسکلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**دوراہی نوٹ**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشاں ہیں، تاہم براہِ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں اغلاط یا غلط فہمیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی مستند ماخذ سمجھی جائے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا تشریح کے لیے ہم ذمہ دار نہیں ہیں۔
> انفوگرافک از [دسانی مادیپالی](https://twitter.com/dasani_decoded)
## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
## ابتدائی نوٹ
لینیئر ریگریشن اُس وقت استعمال کی جاتی ہے جب ہم **عددی قیمت** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔
یہ کام اس طرح کرتا ہے کہ وہ ایک سیدھی لائن تلاش کرتا ہے جو ان پٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کی بہترین نمائندگی کرتی ہو۔
اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیتے ہیں اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔

> انفراگرافک از [دسنی مدیپالی](https://twitter.com/dasani_decoded)
## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ml/)
> ### [یہ سبق R میں بھی دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [یہ سبق R میں دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### تعارف
اب تک آپ نے ریگریشن کے بارے میں جانا ہے، جس میں کدو کی قیمتوں کے ڈیٹا سیٹ سے نمونہ ڈیٹا استعمال کیا گیا ہے، جو ہم اس سبق میں استعمال کریں گے۔ آپ نے اسے میٹپلاٹ لِب کے ذریعے بصری طور پر بھی دیکھا ہے۔
اب تک آپ نے ریگریشن کیا ہے، اُس کا جائزہ لیا ہے اور اس مثال کے لیے کدو کی قیمتوں کا ڈیٹا استعمال کیا ہے جسے ہم اس سبق میں بار بار استعمال کریں گے۔ آپ نے اسے میٹ پلوٹ لائب کا استعمال کرتے ہوئے بھی دیکھا ہے۔
اب آپ مشین لرننگ کے لیے ریگریشن کو مزید گہرائی سے سمجھنے کے لیے تیار ہیں۔ جبکہ بصری تجزیہ ڈیٹا کو سمجھنے میں مدد دیتا ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_ میں ہے۔ ماڈلز تاریخی ڈیٹا پر تربیت یافتہ ہوتے ہیں تاکہ ڈیٹا کی وابستگی کو خودکار طور پر سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے نتائج کی پیش گوئی کرنے کی اجازت دیتے ہیں، جو ماڈل نے پہلے نہیں دیکھا ہوتا۔
اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی سے جا سکتے ہیں۔ جہاں تجزیاتی تصویر کشی (ویژولائزیشن) آپ کو ڈیٹا کو سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_ سے آتی ہے۔ ماڈلز تاریخی ڈیٹا پر تربیت دیے جاتے ہیں تاکہ خود بخود ڈیٹا کے باہمی تعلقات کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے نتائج کی پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔
اس سبق میں، آپ ریگریشن کی دو اقسام کے بارے میں مزید جانیں گے: _بنیادی لینیئر ریگریشن_ اور _پولینومیل ریگریشن_، اور ان تکنیکوں کے پیچھے کچھ ریاضی۔ یہ ماڈلز ہمیں مختلف ان پٹ ڈیٹا کے مطابق کدو کی قیمتوں کی پیش گوئی کرنے کی اجازت دیں گے۔
اس سبق میں، آپ دو اقسام کی ریگریشن کے بارے میں مزید سیکھیں گے: _بنیادی لینیئر ریگریشن_ اور _پولی نومیل ریگریشن_، ساتھ ہی ان تکنیکوں کے پیچھے کچھ ریاضی کے اصول بھی۔ یہ ماڈل ہمیں مختلف ان پٹ ڈیٹا کی بنیاد پر کدو کی قیمتیں پیش گوئی کرنے کی اجازت دیں گے۔
[](https://youtu.be/CRxFT8oTDMg "مشین لرننگ کے لیے ابتدائی - لینیئر ریگریشن کو سمجھنا")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لینیئر ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔
> 🎥 لینیئر ریگریشن کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
> اس نصاب میں، ہم ریاضی کے کم سے کم علم کو فرض کرتے ہیں اور طلباء کے لیے اسے قابل رسائی بنانے کی کوشش کرتے ہیں، جو دیگر شعبوں سے آتے ہیں۔ نوٹس، 🧮 کال آؤٹس، ڈایاگرامز، اور دیگر سیکھنے کے اوزار پر نظر رکھیں تاکہ سمجھنے میں مدد ملے۔
> اس نصاب میں، ہم حساب کی کم سے کم معلومات فرض کرتے ہیں اور اسے دوسرے شعبوں سے آنے والے طلباء کے لیے قابل رسائی بنانے کی کوشش کرتے ہیں، لہٰذا نوٹس، 🧮 حوالہ جات، خاکے، اور دیگر تعلیمی اوزار پر غور کریں جو سمجھنے میں مددگار ہوں۔
### پیشگی شرط
### پیشگی معلومات
اب تک آپ کو کدو کے ڈیٹا کی ساخت سے واقف ہونا چاہیے، جسے ہم جانچ رہے ہیں۔ آپ اسے اس سبق کے _notebook.ipynb_ فائل میں پہلے سے لوڈ اور صاف شدہ حالت میں دیکھ سکتے ہیں۔ اس فائل میں، کدو کی قیمت فی بوشل ایک نئے ڈیٹا فریم میں دکھائی گئی ہے۔ یقینی بنائیں کہ آپ ان نوٹ بکس کو ویژول اسٹوڈیو کوڈ کے کرنلز میں چلا سکتے ہیں۔
اب تک آپ کو کدو کے ڈیٹا کی ساخت کا اندازہ ہو چکا ہوگا جسے ہم دیکھ رہے ہیں۔ آپ اسے اس سبق کی _notebook.ipynb_ فائل میں قبل از وقت لوڈ اور صاف شدہ پا سکتے ہیں۔ اس فائل میں کدو کی قیمت بوشل کے حساب سے ایک نئے ڈیٹا فریم میں ظاہر کی گئی ہے۔ یقینی بنائیں کہ آپ یہ نوٹ بکس Visual Studio Code میں کرنلز پر چلا سکتے ہیں۔
### تیاری
یاد دہانی کے طور پر، آپ یہ ڈیٹا اس لیے لوڈ کر رہے ہیں تاکہ اس سے سوالات پوچھ سکیں۔
یاد دہانی کے طور پر، آپ یہ ڈیٹا اس لیے لوڈ کر رہے ہیں تاکہ اس سے سوالات کریں۔
- کدو خریدنے کا بہترین وقت کب ہے؟
- چھوٹے کدو کے کیس کی قیمت کیا ہو سکتی ہے؟
- کیا مجھے انہیں آدھے بوشل کے ٹوکریوں میں خریدنا چاہیے یا 1 1/9 بوشل کے ڈبے میں؟
- چھوٹے کدو کے کیس کی کتنی قیمت متوقع ہے؟
- کیا میں انہیں آدھے بوشل کی ٹوکریوں میں خریدوں یا 1 1/9 بوشل کے ڈبے میں؟
آئیے اس ڈیٹا میں مزید کھوج کریں۔
پچھلے سبق میں، آپ نے ایک پانڈاز ڈیٹا فریم بنایا اور اسے اصل ڈیٹا سیٹ کے ایک حصے سے بھرا، قیمتوں کو بوشل کے مطابق معیاری بنایا۔ ایسا کرنے سے، تاہم، آپ صرف تقریباً 400 ڈیٹا پوائنٹس جمع کر سکے اور وہ بھی صرف خزاں کے مہینوں کے لیے۔
پچھلے سبق میں، آپ نے پانڈاز ڈیٹا فریم بنایا اور اسے اصل ڈیٹا سیٹ کے ایک حصے سے بھر دیا، قیمتوں کو بوشل کے حساب سے معیاری بنایا۔ تاہم، اس طرح آپ کو صرف تقریباً 400 ڈیٹا پوائنٹس ملے اور وہ بھی صرف خزانی مہینوں کے لیے۔
اس سبق کے ساتھ آنے والے نوٹ بک میں پہلے سے لوڈ شدہ ڈیٹا پر ایک نظر ڈالیں۔ ڈیٹا پہلے سے لوڈ شدہ ہے اور ایک ابتدائی اسکیٹر پلاٹ چارٹ کیا گیا ہے تاکہ مہینے کے ڈیٹا کو دکھایا جا سکے۔ شاید ہم ڈیٹا کی نوعیت کے بارے میں مزید تفصیل حاصل کر سکیں اگر اسے مزید صاف کریں۔
اس سبق کے ساتھ پیش کیے گئے نوٹ بک میں بھی دیکھیں۔ ڈیٹا پہلے سے لوڈ اور ابتدائی اسکیٹرپلاٹ بنایا گیا ہے جو مہینے کا ڈیٹا دکھاتا ہے۔ ہو سکتا ہے ہم اسے مزید صاف کرکے ڈیٹا کی نوعیت کے بارے میں مزید تفصیل حاصل کر سکیں۔
## ایک لینیئر ریگریشن لائن
جیسا کہ آپ نے سبق 1 میں سیکھا، لینیئر ریگریشن کی مشق کا مقصد ایک لائن کو پلاٹ کرنا ہے تاکہ:
جیسے آپ نے سبق 1 میں سیکھا، لینیئر ریگریشن مشق کا مقصد ایک لائن کے گراف پر اظہار کرنا ہے تاکہ:
- **متغیرات کے تعلقات دکھائیں۔** متغیرات کے تعلق کو ظاہر کریں۔
- **پیش گوئیاں کریں۔** صحیح پیش گوئیاں کریں کہ نیا ڈیٹا پوائنٹ اس لائن کے ساتھ کس طرح تعلق رکھے گا۔
- **متغیرات کے تعلقات دکھائیں**۔ متغیرات کے درمیان تعلق دکھائیں
- **پیش گوئیاں کریں**۔ یہ پیش گوئی کریں کہ ایک نیا ڈیٹا پوائنٹ اس لائن کے تعلق میں کہاں آئے گا۔
یہ معمول ہے کہ **لیسٹ سکوائرز ریگریشن** ایسی لائن کھینچتی ہے۔ "لیسٹ سکوائرز" اصطلاح ہمارے ماڈل کی کل غلطی کو کم کرنے کے عمل کو بیان کرتی ہے۔ ہر ڈیٹا پوائنٹ کی عمودی فاصلہ (جسے بقایا کہا جاتا ہے) اصل پوائنٹ اور ہماری ریگریشن لائن کے درمیان ناپا جاتا ہے۔
یہ عام طور پر **لیسٹ-اسکوائرز ریگریشن** کے ذریعے اس قسم کی لائن کھینچنے کے لیے کیا جاتا ہے۔ 'لیسٹ-اسکوائرز' کا مطلب ہے کہ ریگریشن لائن کے ارد گرد کے تمام ڈیٹا پوائنٹس کو مربع کیا جاتا ہے اور پھر جمع کیا جاتا ہے۔ مثالی طور پر، وہ حتمی مجموعہ جتنا چھوٹا ہو، اتنا ہی بہتر ہے، کیونکہ ہم غلطیوں کی کم تعداد چاہتے ہیں، یا `لیسٹ-اسکوائرز`۔
ہم ان فاصلات کو دو اہم وجوہات کی بنا پر مربع کرتے ہیں:
ہم ایسا اس لیے کرتے ہیں کیونکہ ہم ایک ایسی لائن کا ماڈل بنانا چاہتے ہیں جس کا تمام ڈیٹا پوائنٹس سے کم سے کم مجموعی فاصلہ ہو۔ ہم ان شرائط کو مربع بھی کرتے ہیں کیونکہ ہم اس کی شدت کے بارے میں فکر مند ہیں، نہ کہ اس کی سمت کے بارے میں۔
1. **سمت کی بجائے مقدار:** ہم -5 کی غلطی کو +5 کی غلطی کے برابر سمجھنا چاہتے ہیں۔ مربع کرنے سے تمام قدریں مثبت ہو جاتی ہیں۔
2. **آؤٹ لائیرز کی سزا:** مربع کرنے سے بڑی غلطیوں کو زیادہ وزن ملتا ہے، جس سے لائن دور موجود نقاط کے قریب رہتی ہے۔
پھر ہم تمام مربع شدہ قدروں کو جمع کرتے ہیں۔ ہمارا مقصد وہ خاص لائن تلاش کرنا ہے جہاں یہ مجموعہ سب سے کم (انتہائی کم سے کم قیمت) ہو — اسی لیے اس کا نام "لیسٹ سکوائرز" ہے۔
> **🧮 مجھے ریاضی دکھائیں**
>
> اس لائن، جسے _بہترین فٹ کی لائن_ کہا جاتا ہے، کو [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) کے ذریعے ظاہر کیا جا سکتا ہے:
>
>
> یہ لائن، جسے _بہترین فٹ لائن_ کہا جاتا ہے، [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) کے ذریعے بیان کی جا سکتی ہے:
>
> ```
> Y = a + bX
> ```
>
> `X` 'وضاحتی متغیر' ہے۔ `Y` 'منحصر متغیر' ہے۔ لائن کی ڈھلوان `b` ہے اور `a` y-انٹرسپٹ ہے، جو اس وقت `Y` کی قدر کو ظاہر کرتا ہے جب `X = 0` ہو۔
> `X` 'وضاحتی متغیر' ہے۔ `Y` 'تابع متغیر' ہے۔ لائن کا ڈھلوان `b` ہے اور `a` y-انٹرسپٹ ہے، جو اس قیمت کی نمائندگی کرتا ہے جب `X = 0` ہو۔
>
>
>
>
> پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفوگرافک از [جین لوپر](https://twitter.com/jenlooper)
> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفراگرافک از [جن لوپر](https://twitter.com/jenlooper)
>
> دوسرے الفاظ میں، اور ہمارے کدو کے ڈیٹا کے اصل سوال کا حوالہ دیتے ہوئے: "مہینے کے لحاظ سے کدو کی قیمت فی بوشل کی پیش گوئی کریں"، `X` قیمت کو ظاہر کرے گا اور `Y` فروخت کے مہینے کو۔
> دوسرے الفاظ میں، اور ہمارے کدو ڈیٹا کے اصل سوال کی طرف اشارہ کرتے ہوئے: "مہینے کے حساب سے بوشل قیمت کی پیش گوئی کریں"، `X` قیمت کی نمائندگی کرے گا اور `Y` فروخت کے مہینے کی۔
> `Y` کی قدر کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو یہ اپریل ہونا چاہیے! انفوگرافک از [جین لوپر](https://twitter.com/jenlooper)
> Y کی قیمت کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو یہ لازمی طور پر اپریل ہے! انفراگرافک از [جن لوپر](https://twitter.com/jenlooper)
>
> لائن کا حساب لگانے والی ریاضی کو لائن کی ڈھلوان ظاہر کرنی چاہیے، جو انٹرسپٹ پر بھی منحصر ہے، یا جہاں `Y` واقع ہے جب `X = 0`۔
> لائن کا حساب لگانے والی ریاضی کو ڈھلوان کا مظاہرہ کرنا چاہیے، جو انٹرسپٹ پر بھی منحصر ہوتا ہے، یعنی جب `X = 0` ہو تو `Y` کہاں ہوتا ہے۔
>
> آپ ان اقدار کے حساب کے طریقے کو [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ویب سائٹ پر دیکھ سکتے ہیں۔ [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) پر بھی جائیں تاکہ دیکھ سکیں کہ نمبروں کی اقدار لائن پر کیسے اثر ڈالتی ہیں۔
> ان قدروں کے حساب کتاب کا طریقہ آپ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ویب سائٹ پر دیکھ سکتے ہیں۔ اس کے علاوہ [یہ لِیسٹ-سکوائرز کیلکولیٹر](https://www.mathsisfun.com/data/least-squares-calculator.html) ملاحظہ کریں تاکہ سمجھیں کہ اعداد کی قیمتیں لائن پر کیا اثر ڈالتی ہیں۔
## تعلق
## تعلق (Correlation)
ایک اور اصطلاح کو سمجھنا ضروری ہے، وہ ہے **تعلق کا گتانک** دیے گئے X اور Y متغیرات کے درمیان۔ اسکیٹر پلاٹ کا استعمال کرتے ہوئے، آپ اس گتانک کو جلدی سے بصری طور پر دیکھ سکتے ہیں۔ ایک پلاٹ جس میں ڈیٹا پوائنٹس ایک صاف لائن میں بکھرے ہوئے ہوں، اس کا تعلق زیادہ ہوتا ہے، لیکن ایک پلاٹ جس میں ڈیٹا پوائنٹس X اور Y کے درمیان ہر جگہ بکھرے ہوئے ہوں، اس کا تعلق کم ہوتا ہے۔
ایک اور اصطلاح جسے سمجھنا ضروری ہے وہ ہے X اور Y متغیرات کے درمیان **Correlation Coefficient**۔ اس کو اسکیٹرپلاٹ کی مدد سے جلدی سے دیکھا جا سکتا ہے۔ اسکیٹرپلاٹ جس میں ڈیٹا پوائنٹس یکساں لائن پر پھیلے ہوں، اس میں تعلق زیادہ ہوتا ہے، لیکن جہاں ڈیٹا پوائنٹس X اور Y میں منتشر ہوں، وہاں تعلق کم ہوتا ہے۔
ایک اچھا لینیئر ریگریشن ماڈل وہ ہوگا جس کا تعلق کا گتانک زیادہ ہو (1 کے قریب ہو، 0 کے مقابلے میں) لیسٹ-اسکوائرز ریگریشن طریقہ کے ساتھ ریگریشن لائن کے ذریعے۔
ایک اچھا لینیئر ریگریشن ماڈل ہوگا، جس کا تعلق کا کوفیشینٹ زیادہ ہو (0 کی بجائے 1 کے قریب)، اور لیسٹ سکوائرز ریگریشن طریقے سے لائن آف ریگریشن کی تشکیل کی گئی ہو۔
✅ اس سبق کے ساتھ آنے والے نوٹ بک کو چلائیں اور مہینے سے قیمت کے اسکیٹر پلاٹ کو دیکھیں۔ کیا کدو کی فروخت کے لیے مہینے سے قیمت کا ڈیٹا آپ کے بصری تجزیے کے مطابق زیادہ یا کم تعلق رکھتا ہے؟ کیا یہ تبدیل ہوتا ہے اگر آپ مہینے کے بجائے زیادہ باریک پیمائش استعمال کریں، جیسے *سال کا دن* (یعنی سال کے آغاز سے دنوں کی تعداد)؟
✅ اس سبق کی نوٹ بک چلائیں اور مہینے کے مقابلے قیمت کے اسکیٹرپلاٹ کو دیکھیں۔ کیا آپ کے بصری تجزیے کے مطابق کدو کی فروخت کے لیے مہینے سے قیمت کا تعلق زیادہ ہے یا کم؟ کیا یہ بدلتا ہے اگر آپ `Month` کے بجائے زیادہ باریک پیمانے جیسے *سال کا دن* (یعنی سال کے آغاز سے گزرے دن) استعمال کریں؟
نیچے دیے گئے کوڈ میں، ہم فرض کریں گے کہ ہم نے ڈیٹا صاف کر لیا ہے، اور ایک ڈیٹا فریم حاصل کیا ہے جسے `new_pumpkins` کہا جاتا ہے، جو درج ذیل کے مشابہ ہے:
ذیل میں کوڈ میں، ہم فرض کریں گے کہ ہم نے ڈیٹا صاف کر لیا ہے اور ہمیں ایک ڈیٹا فریم مل گیا ہے جس کا نام `new_pumpkins` ہے، جو درج ذیل جیسا ہے:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق میں کیے گئے وہی صاف کرنے کے اقدامات کیے ہیں، اور `DayOfYear` کالم کا حساب درج ذیل اظہار کے ذریعے لگایا ہے:
> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق کی طرح صفائی کے قدم پورے کیے ہیں اور `DayOfYear` کالم کا حساب مندرجہ ذیل اظہار سے کیا ہے:
اب جب کہ آپ لینیئر ریگریشن کے پیچھے ریاضی کو سمجھ چکے ہیں، آئیے ایک ریگریشن ماڈل بنائیں تاکہ دیکھ سکیں کہ ہم کدو کے پیکجز میں سے کون سا بہترین قیمتوں کے لیے منتخب کر سکتے ہیں۔ کوئی شخص جو چھٹی کے کدو کے باغ کے لیے کدو خرید رہا ہو، وہ یہ معلومات چاہے گا تاکہ باغ کے لیے کدو کے پیکجز کی خریداری کو بہتر بنا سکے۔
اب جب کہ آپ کو لینیئر ریگریشن کے پیچھے ریاضی کا علم ہے، آئیں ایک ریگریشن ماڈل بنائیں تاکہ دیکھیں کہ کیا ہم پیش گوئی کر سکتے ہیں کہ کس قسم کا پیکج کدو کی بہترین قیمت رکھے گا۔ کوئی جو چھٹی کے کدو کے پیچ کے لیے کدو خرید رہا ہے، وہ یہ معلومات اپنے خریداری کے انتخاب کو بہتر بنانے کے لیے چاہ سکتا ہے۔
## تعلق کی تلاش
[](https://youtu.be/uoRq-lW2eQo "مشین لرننگ کے لیے ابتدائی - تعلق کی تلاش: لینیئر ریگریشن کی کلید")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ تعلق کا مختصر ویڈیو جائزہ دیکھ سکیں۔
> 🎥 تعلق کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
پچھلے سبق سے آپ نے شاید دیکھا ہو کہ مختلف مہینوں کے لیے اوسط قیمت کچھ اس طرح نظر آتی ہے:
پچھلے سبق سے آپ نے شاید دیکھا ہوگا کہ مختلف مہینوں کی اوسط قیمت کچھ اس طرح نظر آتی ہے:
<imgalt="مہینے کے لحاظ سے اوسط قیمت" src="../../../../translated_images/ur/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Average price by month" src="../../../../translated_images/ur/barchart.a833ea9194346d76.webp"width="50%"/>
یہ ظاہر کرتا ہے کہ کچھ تعلق ہونا چاہیے، اور ہم `Month` اور `Price` کے درمیان یا `DayOfYear` اور `Price` کے درمیان تعلق کی پیش گوئی کرنے کے لیے لینیئر ریگریشن ماڈل کی تربیت کرنے کی کوشش کر سکتے ہیں۔ یہاں اسکیٹر پلاٹ ہے جو مؤخر الذکر تعلق کو دکھاتا ہے:
یہ ظاہر کرتا ہے کہ کچھ تعلق ہونا چاہیے، اور ہم کوشش کر سکتے ہیں کہ لینیئر ریگریشن ماڈل ٹرین کریں تاکہ تعلق کی پیش گوئی کریں، چاہے وہ `Month` اور `Price` کے درمیان ہو، یا `DayOfYear` اور `Price` کے درمیان۔ یہ اسکیٹر پلاٹ ہے جو بعد والے تعلق کو دکھاتا ہے:
<imgalt="قیمت بمقابلہ سال کے دن کا اسکیٹر پلاٹ" src="../../../../translated_images/ur/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ur/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
آئیے `corr` فنکشن کا استعمال کرتے ہوئے دیکھیں کہ کیا کوئی تعلق ہے:
آئیے `corr` فنکشن کا استعمال کرکے تعلق دیکھتے ہیں:
ایسا لگتا ہے کہ تعلق کافی کم ہے، `Month` کے لحاظ سے -0.15 اور `DayOfMonth` کے لحاظ سے -0.17، لیکن ایک اور اہم تعلق ہو سکتا ہے۔ ایسا لگتا ہے کہ مختلف کدو کی اقسام کے مطابق قیمتوں کے مختلف کلسٹرز ہیں۔ اس مفروضے کی تصدیق کے لیے، آئیے ہر کدو کی قسم کو مختلف رنگ کے ساتھ پلاٹ کریں۔ `scatter` پلاٹنگ فنکشن کو `ax` پیرامیٹر پاس کرکے ہم تمام پوائنٹس کو ایک ہی گراف پر پلاٹ کر سکتے ہیں:
دیکھنے میں آتا ہے کہ تعلق کافی کم ہے، `Month` کے لیے -0.15 اور `DayOfMonth` کے لیے -0.17، لیکن ممکن ہے کوئی اور اہم تعلق موجود ہو۔ مختلف کدو کی اقسام کے لیے مختلف قیمتوں کے کلسٹر یعنی گروہ دکھائی دیتے ہیں۔ اس مفروضے کی تصدیق کے لیے، ہر کدو کی قسم کو مختلف رنگ میں پلاٹ کریں۔ `scatter` پلاٹنگ فنکشن کو `ax` پیرامیٹر دے کر ہم تمام نقاط کو ایک ہی گراف پر دکھا سکتے ہیں:
```python
ax=None
@ -128,42 +144,47 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="قیمت بمقابلہ سال کے دن کا اسکیٹر پلاٹ"src="../../../../translated_images/ur/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
اگر ہم اب `corr` فنکشن کا استعمال کرتے ہوئے `Price` اور `DayOfYear` کے درمیان تعلق کا حساب لگائیں، تو ہمیں کچھ `-0.27` جیسا ملے گا - جس کا مطلب ہے کہ پیش گوئی کرنے والے ماڈل کی تربیت کرنا معنی رکھتا ہے۔
> لینیئر ریگریشن ماڈل کی تربیت سے پہلے، یہ یقینی بنانا ضروری ہے کہ ہمارا ڈیٹا صاف ہے۔ لینیئر ریگریشن خالی اقدار کے ساتھ اچھا کام نہیں کرتا، اس لیے خالی سیلز کو ختم کرنا سمجھ میں آتا ہے:
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/ur/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
اگر ہم اب `Price` اور `DayOfYear` کے درمیان تعلق `corr` فنکشن سے حساب کریں، تو ہمیں تقریباً `-0.27` ملے گا — جس کا مطلب ہے کہ پیشین گوئی والا ماڈل تیار کرنا معقول ہے۔
> لینیئر ریگریشن ماڈل کی تربیت سے پہلے، یہ ضروری ہے کہ ہمارا ڈیٹا صاف ہو۔ لینیئر ریگریشن خالی قدرات کے ساتھ اچھا کام نہیں کرتا، اس لیے سبھی خالی خانوں کو ہٹانا منطقی ہے:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
ایک اور طریقہ یہ ہوگا کہ ان خالی اقدار کو متعلقہ کالم سے اوسط اقدار کے ساتھ پُر کریں۔
ایک اور طریقہ یہ ہو سکتا ہے کہ خالی قدروں کو متعلقہ کالم کی اوسط قیمت سے بھر دیا جائے۔
## سادہ لینیئر ریگریشن
[](https://youtu.be/e4c_UP2fSjg "مشین لرننگ کے لیے ابتدائی - سکائٹ لرن کا استعمال کرتے ہوئے لینیئر اور پولینومیل ریگریشن")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لینیئر اور پولینومیل ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔
> 🎥 لینیئر اور پولی نومیل ریگریشن کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
اپنے لینیئر ریگریشن ماڈل کی تربیت کے لیے، ہم **سکائٹ لرن** لائبریری استعمال کریں گے۔
اپنا لینیئر ریگریشن ماڈل تیار کرنے کے لیے ہم **Scikit-learn** لائبریری کا استعمال کریں گے۔
```python
from sklearn.linear_model import LinearRegression
@ -171,31 +192,34 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
ہم ان پٹ اقدار (فیچرز) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy arrays میں تقسیم کرتے ہیں:
ہم ان پٹ ویلیوز (خصوصیات) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy arrays میں تقسیم کرنا شروع کرتے ہیں:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> نوٹ کریں کہ ہمیں ان پٹ ڈیٹا پر `reshape` انجام دینا پڑا تاکہ لینیئر ریگریشن پیکیج اسے صحیح طریقے سے سمجھ سکے۔ لینیئر ریگریشن ایک 2D-array کو ان پٹ کے طور پر توقع کرتا ہے، جہاں array کی ہر قطار ان پٹ فیچرز کے ویکٹر سے مطابقت رکھتی ہے۔ ہمارے معاملے میں، چونکہ ہمارے پاس صرف ایک ان پٹ ہے - ہمیں N×1 شکل کے ساتھ ایک array کی ضرورت ہے، جہاں N ڈیٹا سیٹ کا سائز ہے۔
پھر، ہمیں ڈیٹا کو ٹرین اور ٹیسٹ ڈیٹا سیٹس میں تقسیم کرنے کی ضرورت ہے، تاکہ ہم تربیت کے بعد اپنے ماڈل کی توثیق کر سکیں:
> نوٹ کریں کہ ہمیں ان پٹ ڈیٹا پر `reshape` کرنا پڑا تاکہ لینیئر ریگریشن پیکیج اسے صحیح طریقے سے سمجھ سکے۔ لینیئر ریگریشن کو 2D-array کی توقع ہوتی ہے، جس میں ہر صف میں ان پٹ خصوصیات کا ویکٹر ہوتا ہے۔ ہمارے معاملے میں چونکہ صرف ایک ان پٹ ہے، ہمیں N×1 کا array بنانا ہوتا ہے، جہاں N ڈیٹا سیٹ کا سائز ہے۔
اس کے بعد، ہمیں تربیتی اور امتحانی ڈیٹا کو تقسیم کرنا ہوگا تاکہ ماڈل کی تربیت کے بعد ہم اسے جانچ سکیں:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
آخر میں، اصل لینیئر ریگریشن ماڈل کی تربیت صرف دو لائنوں کے کوڈ میں ہوتی ہے۔ ہم `LinearRegression` آبجیکٹ کی وضاحت کرتے ہیں، اور اسے `fit` طریقہ استعمال کرتے ہوئے اپنے ڈیٹا پر فٹ کرتے ہیں:
آخر میں، اصل میں لینیئر ریگریشن ماڈل کی تربیت صرف دو لائنوں میں ہوتی ہے۔ ہم `LinearRegression` آبجیکٹ کی تعریف کرتے ہیں، اور `fit` میتھڈ کے استعمال سے اسے ہمارے ڈیٹا پر فٹ کرتے ہیں:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression` آبجیکٹ `fit`-نگ کے بعد ریگریشن کے تمام گتانک پر مشتمل ہوتا ہے، جن تک `.coef_` پراپرٹی کا استعمال کرتے ہوئے رسائی حاصل کی جا سکتی ہے۔ ہمارے معاملے میں، صرف ایک گتانک ہے، جو تقریباً `-0.017` ہونا چاہیے۔ اس کا مطلب ہے کہ وقت کے ساتھ قیمتیں تھوڑی کم ہوتی دکھائی دیتی ہیں، لیکن زیادہ نہیں، تقریباً 2 سینٹ فی دن۔ ہم ریگریشن کے Y-axis کے ساتھ انٹرسیکشن پوائنٹ تک بھی رسائی حاصل کر سکتے ہیں `lin_reg.intercept_` کا استعمال کرتے ہوئے - یہ ہمارے معاملے میں تقریباً `21` ہوگا، جو سال کے آغاز میں قیمت کو ظاہر کرتا ہے۔
`LinearRegression` آبجیکٹ `fit` کرنے کے بعد تمام ریگریشن کے کو ایفیشئنٹس پر مشتمل ہوتا ہے، جس تک `.coef_` پراپرٹی کے ذریعے رسائی حاصل کی جا سکتی ہے۔ ہمارے کیس میں، صرف ایک کو ایفیشئنٹ ہے، جو کہ تقریباً `-0.017` ہونا چاہیے۔ اس کا مطلب ہے کہ وقت کے ساتھ قیمتوں میں کچھ کمی آتی ہے، لیکن زیادہ نہیں، تقریباً روزانہ 2 سینٹ کے آس پاس۔ ہم ریگریشن کی Y-محور کے ساتھ انٹرسیکشن پوائنٹ تک `lin_reg.intercept_` کے ذریعے بھی رسائی حاصل کر سکتے ہیں - جو ہمارے کیس میں تقریباً `21` ہوگا، جو سال کی شروعات میں قیمت کی نشاندہی کرتا ہے۔
یہ دیکھنے کے لیے کہ ہمارا ماڈل کتنا درست ہے، ہم ٹیسٹ ڈیٹا سیٹ پر قیمتوں کی پیش گوئی کر سکتے ہیں، اور پھر یہ پیمائش کر سکتے ہیں کہ ہماری پیش گوئیاں متوقع اقدار کے کتنی قریب ہیں۔ یہ mean square error (MSE) میٹرکس کا استعمال کرتے ہوئے کیا جا سکتا ہے، جو متوقع اور پیش گوئی شدہ قدر کے درمیان تمام مربع فرق کا اوسط ہے۔
ہم دیکھ سکتے ہیں کہ ہمارا ماڈل کتنا درست ہے، ہم ایک ٹیسٹ ڈیٹا سیٹ پر قیمتوں کی پیش گوئی کر سکتے ہیں، اور پھر دیکھ سکتے ہیں کہ ہماری پیش گوئیاں متوقع قدروں کے کتنی قریب ہیں۔ یہ کام متوسط مربع غلطی (MSE) میٹرک کے ذریعے کیا جا سکتا ہے، جو متوقع اور پیش گوئی شدہ قیمت کے درمیان تمام مربع فرق کا اوسط ہے۔
```python
pred = lin_reg.predict(X_test)
@ -203,36 +227,38 @@ pred = lin_reg.predict(X_test)
ہماری غلطی تقریباً 2 پوائنٹس کے ارد گرد ہے، جو کہ ~17% ہے۔ یہ زیادہ اچھا نہیں ہے۔ ماڈل کے معیار کا ایک اور اشارہ **coefficient of determination** ہے، جسے اس طرح حاصل کیا جا سکتا ہے:
ہماری غلطی تقریباً 2 پوائنٹس کے آس پاس ہے، جو کہ ~17% ہے۔ زیادہ اچھا نہیں۔ ماڈل کے معیار کا ایک اور اشارہ **coefficient of determination** ہے، جو اس طرح حاصل کیا جا سکتا ہے:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
اگر قدر 0 ہو، تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا اور *بدترین لکیری پیش گو* کے طور پر کام کرتا ہے، جو صرف نتیجے کی اوسط قدر ہے۔ قدر 1 کا مطلب ہے کہ ہم تمام متوقع نتائج کو مکمل طور پر پیش گوئی کر سکتے ہیں۔ ہمارے معاملے میں، coefficient تقریباً 0.06 ہے، جو کہ کافی کم ہے۔
```
اگر یہ قدر 0 ہو تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا، اور *بدترین خطی پیش گو* کے طور پر کام کرتا ہے، جو کہ بس نتیجے کی اوسط قدر ہوتی ہے۔ اگر قدر 1 ہو تو مطلب ہے کہ ہم تمام متوقع نتائج کو بالکل درست پیش گوئی کر سکتے ہیں۔ ہمارے کیس میں، کو ایفیشئنٹ تقریباً 0.06 ہے، جو کہ کافی کم ہے۔
ہم ٹیسٹ ڈیٹا کو ریگریشن لائن کے ساتھ بھی پلاٹ کر سکتے ہیں تاکہ بہتر طور پر دیکھ سکیں کہ ہمارے معاملے میں ریگریشن کیسے کام کرتا ہے:
ہم ریگریشن لائن کے ساتھ ٹیسٹ ڈیٹا کو بھی پلاٹ کر سکتے ہیں تاکہ یہ بہتر طور پر دیکھا جا سکے کہ ہمارا ریگریشن کس طرح کام کر رہا ہے:
لکیری ریگریشن کی ایک اور قسم پولینومیل ریگریشن ہے۔ کبھی کبھار متغیرات کے درمیان لکیری تعلق ہوتا ہے - جیسے کدو کا حجم جتنا بڑا ہوگا، قیمت اتنی زیادہ ہوگی - لیکن کبھی کبھار ان تعلقات کو ایک سیدھی لائن یا سطح کے طور پر پلاٹ نہیں کیا جا سکتا۔
دوسری قسم کی خطی رجریشن پولینومیل ریگریشن ہے۔ کبھی کبھی متغیرات کے درمیان ایک خطی تعلق ہوتا ہے - جتنا بڑا کدو حجم میں، اتنی زیادہ قیمت - لیکن بعض اوقات یہ تعلقات ایک طیارہ یا سیدھی لائن کی صورت میں ظاہر نہیں ہو سکتے۔
✅ یہاں [کچھ مزید مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) ہیں جو پولینومیل ریگریشن استعمال کر سکتی ہیں۔
✅ یہاں [مزید چند مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) موجود ہیں جن میں پولینومیل ریگریشن استعمال ہو سکتی ہے۔
تاریخ اور قیمت کے تعلق پر دوبارہ نظر ڈالیں۔ کیا یہ scatterplot ایسا لگتا ہے کہ اسے لازمی طور پر ایک سیدھی لائن کے ذریعے تجزیہ کیا جانا چاہیے؟ کیا قیمتیں اتار چڑھاؤ نہیں کر سکتیں؟ اس صورت میں، آپ پولینومیل ریگریشن آزما سکتے ہیں۔
تاریخ اور قیمت کے تعلق پر دوبارہ نظر ڈالیں۔ کیا یہ اسکیٹر پلاٹ واقعی ایک سیدھی لائن کے ذریعے تجزیہ کرنا ضروری ہے؟ کیا قیمتیں اتار چڑھاؤ نہیں کر سکتی؟ اس صورت میں، آپ پولینومیل ریگریشن آزما سکتے ہیں۔
✅ پولینومیلز ریاضیاتی اظہار ہیں جو ایک یا زیادہ متغیرات اور coefficients پر مشتمل ہو سکتے ہیں۔
✅ پولینومیل ریگریشن ریاضیاتی اظہار ہوتے ہیں جو ایک یا زیادہ متغیرات اور کو ایفیشئنٹس پر مشتمل ہو سکتے ہیں۔
پولینومیل ریگریشن ایک خمیدہ لائن بناتا ہے تاکہ غیر لکیری ڈیٹا کو بہتر طور پر فٹ کیا جا سکے۔ ہمارے معاملے میں، اگر ہم ان پٹ ڈیٹا میں `DayOfYear` متغیر کو مربع کریں، تو ہم اپنے ڈیٹا کو ایک parabolic curve کے ساتھ فٹ کر سکتے ہیں، جس کا ایک کم از کم نقطہ سال کے اندر ہوگا۔
پولینومیل ریگریشن ایک خم دار لائن تخلیق کرتی ہے تاکہ غیر خطی ڈیٹا کے لیے بہتر فٹ ہو سکے۔ ہمارے کیس میں، اگر ہم ان پٹ ڈیٹا میں ایک مربع `DayOfYear` متغیر شامل کریں، تو ہم اپنے ڈیٹا کو ایک یوریک نما منحنی کے ساتھ فٹ کر سکیں گے، جس کا ایک مخصوص مقام پر سال کے دوران کم سے کم ہوتا ہے۔
Scikit-learn ایک مفید [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) شامل کرتا ہے تاکہ ڈیٹا پروسیسنگ کے مختلف مراحل کو ایک ساتھ جوڑا جا سکے۔ **پائپ لائن** **estimators** کی ایک زنجیر ہے۔ ہمارے معاملے میں، ہم ایک پائپ لائن بنائیں گے جو پہلے ہمارے ماڈل میں پولینومیل فیچرز شامل کرے گی، اور پھر ریگریشن کو تربیت دے گی:
Scikit-learn ایک مددگار [پائپ لائن API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) فراہم کرتا ہے تاکہ ڈیٹا پراسیسنگ کے مختلف مراحل کو ملایا جا سکے۔ ایک **پائپ لائن** **اسٹی میٹرز** کی ایک زنجیر ہے۔ ہمارے کیس میں، ہم ایک پائپ لائن بنائیں گے جو پہلے پولینومیل خصوصیات ماڈل میں شامل کرے گا، اور پھر ریگریشن کو ٹرین کرے گا:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,43 +267,43 @@ from sklearn.pipeline import make_pipeline
`PolynomialFeatures(2)` استعمال کرنے کا مطلب ہے کہ ہم ان پٹ ڈیٹا سے تمام دوسرے درجے کے پولینومیلز شامل کریں گے۔ ہمارے معاملے میں، یہ صرف `DayOfYear`<sup>2</sup> ہوگا، لیکن دو ان پٹ متغیرات X اور Y دیے گئے، یہ X<sup>2</sup>, XY اور Y<sup>2</sup> شامل کرے گا۔ اگر ہم چاہیں تو ہم اعلی درجے کے پولینومیلز بھی استعمال کر سکتے ہیں۔
```
`PolynomialFeatures(2)`کا استعمال مطلب ہے کہ ہم ان پٹ ڈیٹا سے تمام دوسرے درجے کے پولینومیلز شامل کریں گے۔ ہمارے کیس میں یہ صرف `DayOfYear`<sup>2</sup> ہوگا، لیکن اگر دو ان پٹ متغیرات X اور Y ہوں، تو یہ X<sup>2</sup>، XY، اور Y<sup>2</sup> شامل کرے گا۔ ہم چاہیں تو بلند درجے کے پولینومیلز بھی استعمال کر سکتے ہیں۔
پائپ لائنز کو اسی طرح استعمال کیا جا سکتا ہے جیسے اصل `LinearRegression` آبجیکٹ، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر `predict` استعمال کر کے پیش گوئی کے نتائج حاصل کر سکتے ہیں۔ یہاں گراف ہے جو ٹیسٹ ڈیٹا اور approximation curve دکھاتا ہے:
پائپ لائنز کو اصل `LinearRegression` آبجیکٹ کی طرح استعمال کیا جا سکتا ہے، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر پیش گوئیاں حاصل کرنے کے لیے `predict` استعمال کر سکتے ہیں۔ یہاں گراف ہے جو ٹیسٹ ڈیٹا اور اپروکسی میشن منحنی کو دکھاتا ہے:
پولینومیل ریگریشن استعمال کرتے ہوئے، ہم قدرے کم MSE اور زیادہ determination حاصل کر سکتے ہیں، لیکن زیادہ نہیں۔ ہمیں دیگر فیچرز کو مدنظر رکھنا ہوگا!
پولینومیل ریگریشن کا استعمال کرتے ہوئے، ہم تھوڑی کم MSE اور زیادہ کو ایفیشئنٹ آف ڈیٹرمنیشن حاصل کر سکتے ہیں، لیکن بہت زیادہ فرق نہیں۔ ہمیں دیگر خصوصیات کو بھی مدنظر رکھنا ہوگا!
> آپ دیکھ سکتے ہیں کہ کدو کی کم از کم قیمتیں کہیں ہالووین کے ارد گرد دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
> آپ دیکھ سکتے ہیں کہ سب سے کم کدو کی قیمتیں تقریباً ہالووین کے ارد گرد دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
🎃 مبارک ہو، آپ نے ایک ماڈل بنایا ہے جو پائی کدو کی قیمت کی پیش گوئی کرنے میں مدد کر سکتا ہے۔ آپ شاید تمام کدو کی اقسام کے لیے یہی طریقہ کار دہرا سکتے ہیں، لیکن یہ تھکا دینے والا ہوگا۔ آئیے اب سیکھتے ہیں کہ اپنے ماڈل میں کدو کی قسم کو کیسے مدنظر رکھا جائے!
🎃 مبارک ہو، آپ نے ایک ایسا ماڈل بنایا ہے جو پای کدو کی قیمت کی پیش گوئی میں مدد کر سکتا ہے۔ آپ شاید یہ عمل تمام قسم کے کدو کے لیے دہرائیں، لیکن یہ تھکا دینے والا ہوگا۔ اب سیکھیں کہ ہم اپنے ماڈل میں کدو کی قسم کو کیسے شامل کریں!
## کیٹیگوریکل فیچرز
## زمرہ جاتی خصوصیات (Categorical Features)
ایک مثالی دنیا میں، ہم مختلف کدو کی اقسام کے لیے قیمتوں کی پیش گوئی کرنے کے قابل ہونا چاہتے ہیں، ایک ہی ماڈل استعمال کرتے ہوئے۔ تاہم، `Variety` کالم `Month` جیسے کالمز سے کچھ مختلف ہے، کیونکہ اس میں غیر عددی اقدار شامل ہیں۔ ایسے کالمز کو **categorical** کہا جاتا ہے۔
ایک مثالی دنیا میں، ہم چاہتے ہیں کہ ہم مختلف کدو کی اقسام کے لیے قیمتیں ایک ہی ماڈل سے پیش گوئی کر سکیں۔ تاہم، `Variety` کالم دیگر کالموں جیسے `Month` سے کچھ مختلف ہے کیونکہ اس میں غیر عددی (non-numeric) اقدار ہوتی ہیں۔ ایسے کالمز کو **زمرہ جاتی** کہتے ہیں۔
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ کیٹیگوریکل فیچرز کے استعمال پر ایک مختصر ویڈیو دیکھ سکیں۔
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ زمرہ جاتی خصوصیات کے استعمال کا مختصر ویڈیو جائزہ دیکھا جا سکے۔
یہاں آپ دیکھ سکتے ہیں کہ اوسط قیمت قسم پر کیسے منحصر ہے:
یہاں آپ دیکھ سکتے ہیں کہ اوسط قیمت کس طرح قسم پر منحصر ہے:
<imgalt="Average price by variety"src="../../../../translated_images/ur/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
قسم کو مدنظر رکھنے کے لیے، ہمیں پہلے اسے عددی شکل میں تبدیل کرنا ہوگا، یا **encode** کرنا ہوگا۔ ہم اسے کرنے کے کئی طریقے ہیں:
قسم کو مدنظر رکھنے کے لیے، ہمیں پہلے اسے عددی صورت میں تبدیل کرنا یا **انکوڈ** کرنا ہوگا۔ اس کے لیے چند طریقے ہیں:
* سادہ **numeric encoding** مختلف اقسام کی ایک جدول بنائے گا، اور پھر قسم کے نام کو اس جدول میں ایک انڈیکس سے بدل دے گا۔ یہ لکیری ریگریشن کے لیے بہترین خیال نہیں ہے، کیونکہ لکیری ریگریشن انڈیکس کی اصل عددی قدر کو لیتا ہے، اور اسے نتیجے میں شامل کرتا ہے، کسی coefficient سے ضرب دے کر۔ ہمارے معاملے میں، انڈیکس نمبر اور قیمت کے درمیان تعلق واضح طور پر غیر لکیری ہے، چاہے ہم یہ یقینی بنائیں کہ انڈیکسز کسی مخصوص ترتیب میں ہیں۔
* **One-hot encoding**`Variety` کالم کو 4 مختلف کالمز سے بدل دے گا، ہر قسم کے لیے ایک۔ ہر کالم میں `1` ہوگا اگر متعلقہ قطار دی گئی قسم کی ہو، اور `0` ورنہ۔ اس کا مطلب ہے کہ لکیری ریگریشن میں چار coefficients ہوں گے، ہر کدو کی قسم کے لیے ایک، جو اس مخصوص قسم کے لیے "ابتدائی قیمت" (یا "اضافی قیمت") کے لیے ذمہ دار ہوگا۔
* سادہ **عددی انکوڈنگ** میں مختلف اقسام کی ایک جدول بنائی جاتی ہے، اور پھر قسم کے نام کی جگہ اس جدول میں اس کا انڈیکس لے لیتا ہے۔ یہ خطی ریگریشن کے لیے بہترین خیال نہیں ہے، کیونکہ خطی ریگریشن انڈیکس کی اصل عددی قدر لیتا ہے اور کسی کو ایفیشئنٹ سے ضرب دے کر نتیجہ میں شامل کر دیتا ہے۔ ہمارے کیس میں انڈیکس نمبر اور قیمت کے درمیان تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو کسی مخصوص ترتیب میں رکھیں۔
* **ون ہاٹ انکوڈنگ** `Variety` کالم کو 4 مختلف کالموں میں تبدیل کر دے گی، ہر قسم کے لیے ایک۔ ہر کالم میں `1` ہوگا اگر متعلقہ قطار مخصوص قسم کی ہو، ورنہ `0` ہوگا۔ اس کا مطلب ہے کہ خطی ریگریشن میں چار کو ایفیشئنٹس ہوں گے، ہر کدو کی قسم کے لیے ایک، جو اس خاص قسم کی "نکڑ قیمت" (یا اضافی قیمت) کے لیے ذمہ دار ہوگا۔
نیچے دیا گیا کوڈ دکھاتا ہے کہ ہم قسم کو one-hot encode کیسے کر سکتے ہیں:
ذیل میں کوڈ دکھاتا ہے کہ ہم قسم کو ون ہاٹ انکوڈ کیسے کر سکتے ہیں:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
one-hot encoded قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے لکیری ریگریشن کو تربیت دینے کے لیے، ہمیں صرف `X` اور `y` ڈیٹا کو صحیح طریقے سے initialize کرنے کی ضرورت ہے:
ون ہاٹ انکوڈ شدہ قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے خطی ریگریشن کو ٹرین کرنے کے لیے، ہمیں صرف `X` اور `y` ڈیٹا درست طریقے سے initialize کرنا ہوگا:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
باقی کوڈ وہی ہے جو ہم نے اوپر لکیری ریگریشن کو تربیت دینے کے لیے استعمال کیا۔ اگر آپ اسے آزمائیں، تو آپ دیکھیں گے کہ mean squared error تقریباً وہی ہے، لیکن ہمیں بہت زیادہ coefficient of determination (~77%) ملتا ہے۔ مزید درست پیش گوئی حاصل کرنے کے لیے، ہم مزید کیٹیگوریکل فیچرز کو مدنظر رکھ سکتے ہیں، اور عددی فیچرز جیسے `Month` یا `DayOfYear` کو بھی۔ ایک بڑے فیچرز کے array کو حاصل کرنے کے لیے، ہم `join` استعمال کر سکتے ہیں:
```
باقی کوڈ وہی ہے جو ہم نے پہلے خطی ریگریشن تربیت کے لیے استعمال کیا تھا۔ اگر آپ آزمائیں، تو دیکھیں گے کہ متوسط مربع غلطی تقریباً برابر ہے، لیکن ہمیں کو ایفیشئنٹ آف ڈیٹرمنیشن زیادہ ملتا ہے (~77%)۔ مزید درست پیش گوئی کے لیے، ہم مزید زمرہ جاتی خصوصیات اور عددی خصوصیات جیسے `Month` یا `DayOfYear` کو مدنظر لے سکتے ہیں۔ بڑی خصوصیات کے ایک مجموعے کو حاصل کرنے کے لیے ہم `join` استعمال کر سکتے ہیں:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,68 +330,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
یہاں ہم `City` اور `Package`قسم کو بھی مدنظر رکھتے ہیں، جو ہمیں MSE 2.84 (10%) اور determination 0.94 دیتا ہے!
```
یہاں ہم `City` اور `Package`کی قسم کو بھی مدنظر لیتے ہیں، جس سے ہمیں MSE 2.84 (10%) اور کو ایفیشئنٹ آف ڈیٹرمنیشن 0.94 ملتا ہے!
## سب کچھ ایک ساتھ رکھنا
## سب کچھ ملانا
بہترین ماڈل بنانے کے لیے، ہم اوپر دی گئی مثال سے مشترکہ (one-hot encoded کیٹیگوریکل + عددی) ڈیٹا کو پولینومیل ریگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے یہاں مکمل کوڈ ہے:
بہترین ماڈل بنانے کے لیے، ہم مشترکہ (ون ہاٹ انکوڈ کی گئی زمرہ جاتی + عددی) ڈیٹا کو پولینومیل ریگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے مکمل کوڈ یہ ہے:
```python
# set up training data
# تربیتی ڈیٹا مرتب کریں
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# تربیت اور ٹیسٹ کے لیے تقسیم کریں
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
یہ ہمیں تقریباً 97% کا بہترین determination coefficient اور MSE=2.23 (~8% پیش گوئی کی غلطی) دے گا۔
```
یہ تقریباً 97% تک بہترین کو ایفیشئنٹ آف ڈیٹرمنیشن اور MSE=2.23 (~8% پیش گوئی غلطی) دے گا۔
| ماڈل | MSE | Determination |
| ماڈل | MSE | کو ایفیشئنٹ آف ڈیٹرمنیشن |
|-------|-----|---------------|
| `DayOfYear`Linear | 2.77 (17.2%) | 0.07 |
| `DayOfYear`Polynomial | 2.73 (17.0%) | 0.08 |
| `Variety`Linear | 5.24 (19.7%) | 0.77 |
| All features Linear | 2.84 (10.5%) | 0.94 |
| All features Polynomial | 2.23 (8.25%) | 0.97 |
| `DayOfYear`خطی | 2.77 (17.2%) | 0.07 |
| `DayOfYear`پولینومیل | 2.73 (17.0%) | 0.08 |
| `Variety`خطی | 5.24 (19.7%) | 0.77 |
| تمام خصوصیات خطی | 2.84 (10.5%) | 0.94 |
| تمام خصوصیات پولینومیل | 2.23 (8.25%) | 0.97 |
🏆 شاباش! آپ نے ایک سبق میں چار ریگریشن ماڈلز بنائے، اور ماڈل کے معیار کو 97% تک بہتر کیا۔ ریگریشن کے آخری حصے میں، آپ سیکھیں گے کہ زمرے کا تعین کرنے کے لیے Logistic Regression کیسے استعمال کریں۔
🏆 عمدہ! آپ نے ایک ہی سبق میں چار ریگریشن ماڈلز بنائے، اور ماڈل کا معیار 97% تک بہتر بنایا۔ ریگریشن کے آخری حصے میں آپ لاجسٹک ریگریشن کے بارے میں جانیں گے تاکہ زمرہ جات کی تعیین کی جا سکے۔
---
## 🚀چیلنج
---
## 🚀چیلنج
اس نوٹ بک میں مختلف متغیرات کو آزمائیں تاکہ دیکھ سکیں کہ correlation ماڈل کی درستگی سے کیسے مطابقت رکھتا ہے۔
اس نوٹ بک میں مختلف متغیرات کو آزما کر دیکھیں کہ کوریلیشن ماڈل کی درستگی کے ساتھ کیسے متوازی ہے۔
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
## جائزہ اور خود مطالعہ
## جائزہ اور خود مطالعہ
اس سبق میں ہم نے لکیری ریگریشن کے بارے میں سیکھا۔ ریگریشن کی دیگر اہم اقسام بھی ہیں۔ Stepwise, Ridge, Lasso اور Elasticnet تکنیک کے بارے میں پڑھیں۔ مزید سیکھنے کے لیے ایک اچھا کورس [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ہے۔
اس سبق میں ہم نے خطی ریگریشن کے بارے میں سیکھا۔ دیگر اہم اقسام کی ریگریشن بھی موجود ہیں۔ Stepwise، Ridge، Lasso اور Elasticnet تکنیکوں کے بارے میں پڑھیں۔ مزید سیکھنے کے لیے ایک اچھا کورس [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ہے۔
## اسائنمنٹ
## اسائنمنٹ
[ماڈل بنائیں](assignment.md)
[ایک ماڈل بنائیں](assignment.md)
---
**ڈسکلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ڈسکلیمر**:
اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا غلط فہمیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں مستند ذریعہ سمجھا جائے گا۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمہ کے استعمال سے پیدا ہونے والے کسی بھی غلط فہمی یا غلط تعبیر کی ذمہ داری ہم پر نہیں ہوگی۔
اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بندی کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بندی کنندہ کو دوسرے پر منتخب کرنے کے کیا اثرات ہو سکتے ہیں۔
اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بند کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بند کرنے والے کو دوسرے پر منتخب کرنے کے نتائج کیا ہوتے ہیں۔
## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے پاس `data` فولڈر میں ایک صاف شدہ ڈیٹاسیٹ موجود ہے جس کا نام _cleaned_cuisines.csv_ ہے، جو اس 4-سبق والے فولڈر کے روٹ میں موجود ہے۔
ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے `data` فولڈر میں ایک صاف شدہ ڈیٹاسیٹ ہے جس کا نام _cleaned_cuisines.csv_ ہے جو اس چار اسباق کے فولڈر کی جڑ میں موجود ہے۔
### تیاری
ہم نے آپ کے _notebook.ipynb_ فائل کو صاف شدہ ڈیٹاسیٹ کے ساتھ لوڈ کیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کیا ہے، جو ماڈل بنانے کے عمل کے لیے تیار ہیں۔
ہم نے آپ کی _notebook.ipynb_ فائل میں صاف شدہ ڈیٹاسیٹ لوڈ کر لیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کر دیا ہے، تاکہ ماڈل بنانے کے عمل کے لیے تیار ہو۔
## ایک درجہ بندی کا نقشہ
پہلے، آپ نے مائیکروسافٹ کے چیٹ شیٹ کا استعمال کرتے ہوئے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات کے بارے میں سیکھا۔ Scikit-learn ایک مشابہ لیکن زیادہ تفصیلی چیٹ شیٹ پیش کرتا ہے جو آپ کے تخمینے (درجہ بندی کنندگان کے لیے ایک اور اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:
پہلے آپ نے سیکھا کہ مائیکروسافٹ کے چیٹ شیٹ کی مدد سے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات ہوتے ہیں۔ سکائکیٹ-لرن ایک مماثل، لیکن مزید مفصل چیٹ شیٹ پیش کرتا ہے جو آپ کو اپنے ایسٹی میٹرز (درجہ بندی کرنے والوں کے لیے دوسرا اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:

> ٹپ: [اس نقشے کو آن لائن دیکھیں](https://scikit-learn.org/stable/tutorial/machine_learning_map/) اور راستے پر کلک کر کے دستاویزات پڑھیں۔

> Tip: [اس نقشے کو آن لائن ملاحظہ کریں](https://scikit-learn.org/stable/tutorial/machine_learning_map/) اور راہ پر کلک کر کے دستاویزات پڑھیں۔
### منصوبہ
یہ نقشہ اس وقت بہت مددگار ہوتا ہے جب آپ کو اپنے ڈیٹا کی واضح سمجھ ہو، کیونکہ آپ اس کے راستوں پر چل کر فیصلہ کر سکتے ہیں:
یہ نقشہ بہت مددگار ہے جب آپ اپنے ڈیٹا کو اچھی طرح سمجھ چکے ہوں، کیونکہ آپ اس کے راستوں پر 'چل' کر فیصلہ کر سکتے ہیں:
- ہمارے پاس >50 نمونے ہیں
- ہم ایک زمرہ کی پیش گوئی کرنا چاہتے ہیں
- ہمارے پاس لیبل شدہ ڈیٹا ہے
- ہمارے پاس 100K سے کم نمونے ہیں
- ✨ ہم ایک Linear SVC منتخب کر سکتے ہیں
- اگر یہ کام نہ کرے، چونکہ ہمارے پاس عددی ڈیٹا ہے
- ہم ✨ KNeighbors Classifier آزما سکتے ہیں
- اگر یہ کام نہ کرے، تو ✨ SVC اور ✨ Ensemble Classifiers آزمائیں
- ہمارے پاس >50 نمونے ہیں
- ہم ایک زمرہ پیش گوئی کرنا چاہتے ہیں
- ہمارے پاس لیبل شدہ ڈیٹا موجود ہے
- ہمارے پاس 100K سے کم نمونے ہیں
- ✨ ہم ایک لینیئر SVC منتخب کر سکتے ہیں
- اگر یہ کام نہیں کرتا، چونکہ ہمارے پاس عددی ڈیٹا ہے
- ہم ✨ KNeighbors Classifier آزما سکتے ہیں
- اگر یہ بھی کام نہ کرے، تو ✨ SVC اور ✨ Ensemble Classifiers آزمائیں
یہ ایک بہت مددگار راستہ ہے جس پر عمل کیا جا سکتا ہے۔
یہ ایک بہت مددگار راستہ ہے جس پر عمل کرنا چاہیے۔
## مشق - ڈیٹا کو تقسیم کریں
اس راستے پر عمل کرتے ہوئے، ہمیں کچھ لائبریریاں درآمد کرنی چاہئیں۔
اس راستے کی پیروی کرتے ہوئے، ہمیں شروع میں کچھ لائبریریاں امپورٹ کرنی چاہئیں۔
1. مطلوبہ لائبریریاں درآمد کریں:
1. ضروری لائبریریاں امپورٹ کریں:
```python
from sklearn.neighbors import KNeighborsClassifier
Support-Vector Clustering (SVC) مشین لرننگ تکنیکوں کے Support-Vector مشینز خاندان کا حصہ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ لیبلز کو کلسٹر کرنے کے لیے ایک 'kernel' منتخب کر سکتے ہیں۔ 'C' پیرامیٹر 'regularization' کو ظاہر کرتا ہے جو پیرامیٹرز کے اثر کو منظم کرتا ہے۔ kernel [کئی](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) میں سے ایک ہو سکتا ہے؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ Linear SVC کا فائدہ اٹھایا جا سکے۔ Probability ڈیفالٹ میں 'false' ہوتی ہے؛ یہاں ہم اسے 'true' پر سیٹ کرتے ہیں تاکہ probability estimates حاصل کر سکیں۔ ہم random state کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو شفل کر کے probabilities حاصل کی جا سکیں۔
سپورٹ ویکٹر کلسٹرنگ (SVC) مشین لرننگ کی سپورٹ ویکٹر مشینوں کے خاندان کی ایک شاخ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ 'کرنل' منتخب کر سکتے ہیں جو لیبلز کو کلسٹر کرنے کا طریقہ فیصلہ کرتا ہے۔ 'C' پیرامیٹر سے مراد 'ریگولرائزیشن' ہے جو پیرامیٹرز کے اثر کو کنٹرول کرتا ہے۔ کرنل متعدد میں سے ایک ہو سکتا ہے [کئی](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ لینیئر SVC کا فائدہ اٹھایا جا سکے۔ probability کی ڈیفالٹ قدر 'false' ہے؛ یہاں ہم اسے 'true' کرتے ہیں تاکہ احتمال کے تخمینے حاصل کیے جا سکیں۔ ہم رینڈم اسٹیٹ کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو ترتیب دے کر احتمال حاصل کیے جا سکیں۔
### مشق - Linear SVC کا اطلاق کریں
### مشق - لینیئر SVC اپلائی کریں
ایک درجہ بندی کنندگان کی صف بنائیں۔ آپ اس صف میں بتدریج اضافہ کریں گے جب ہم ٹیسٹ کریں گے۔
کلاسفیئرز کی ایک اری بنائیں۔ جیسے جیسے ہم تجربہ کریں گے، آپ اس اری میں مزید شامل کریں گے۔
K-Neighbors مشین لرننگ کے "پڑوسیوں" خاندان کا حصہ ہے، جو سپروائزڈ اور ان سپروائزڈ لرننگ دونوں کے لیے استعمال کیا جا سکتا ہے۔ اس طریقے میں، ایک پہلے سے طے شدہ تعداد میں پوائنٹس بنائے جاتے ہیں اور ڈیٹا ان پوائنٹس کے ارد گرد جمع کیا جاتا ہے تاکہ ڈیٹا کے لیے عمومی لیبلز کی پیش گوئی کی جا سکے۔
K-Neighbors مشین لرننگ کے "نیبرز" خاندان کا حصہ ہے، جو نگرانی شدہ اور غیر نگرانی شدہ دونوں طرح کی تعلیم کے لیے استعمال ہو سکتا ہے۔ اس طریقے میں، ایک پری ڈیفائن کردہ تعداد میں پوائنٹس بنائے جاتے ہیں اور ڈیٹا ان پوائنٹس کے گرد اکٹھا کیا جاتا ہے تاکہ متعلقہ لیبلز کی پیش گوئی ہو سکے۔
### مشق - K-Neighbors درجہ بندی کنندہ کا اطلاق کریں
### مشق - K-Neighbors درجہ بند کرنے والا اپلائی کریں
پچھلا درجہ بندی کنندہ اچھا تھا اور ڈیٹا کے ساتھ اچھا کام کیا، لیکن شاید ہم بہتر درستگی حاصل کر سکیں۔ K-Neighbors درجہ بندی کنندہ آزمائیں۔
پچھلا درجہ بند کرنے والا اچھا تھا اور ڈیٹا کے ساتھ اچھی طرح کام کرتا تھا، لیکن شاید ہم بہتر درستگی حاصل کر سکیں۔ K-Neighbors درجہ بند کرنے والا آزمانے کی کوشش کریں۔
1. اپنے درجہ بندی کنندگان کی صف میں ایک لائن شامل کریں (Linear SVC آئٹم کے بعد ایک کاما شامل کریں):
1. اپنے کلاسفیئرز کی اری میں ایک لائن شامل کریں (Linear SVC آئٹم کے بعد کاما ڈالیں):
```python
'KNN classifier': KNeighborsClassifier(C),
```
نتیجہ تھوڑا خراب ہے:
نتیجہ تھوڑا کم ہے:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -138,21 +138,21 @@ K-Neighbors مشین لرننگ کے "پڑوسیوں" خاندان کا حصہ
✅ [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) کے بارے میں جانیں
## Support Vector درجہ بندی کنندہ
## سپورٹ ویکٹر کلاسفیئر
Support-Vector درجہ بندی کنندگان مشین لرننگ کے [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) خاندان کا حصہ ہیں جو درجہ بندی اور ریگریشن کے کاموں کے لیے استعمال ہوتے ہیں۔ SVMs "تربیتی مثالوں کو خلا میں پوائنٹس پر نقشہ بناتے ہیں" تاکہ دو زمروں کے درمیان فاصلہ زیادہ سے زیادہ ہو۔ بعد میں ڈیٹا کو اس خلا میں نقشہ بنایا جاتا ہے تاکہ ان کے زمرے کی پیش گوئی کی جا سکے۔
سپورٹ ویکٹر کلاسفیئر مشین لرننگ کے [سپورٹ ویکٹر مشین](https://wikipedia.org/wiki/Support-vector_machine) خاندان کا حصہ ہیں جو درجہ بندی اور ریگریشن کے کاموں کے لیے استعمال ہوتے ہیں۔ SVM "ٹریننگ مثالوں کو خلا میں نقاط پر نقشہ کرتے ہیں" تاکہ دو زمروں کے درمیان فاصلے کو زیادہ سے زیادہ کیا جا سکے۔ بعد کا ڈیٹا اس خلاء میں نقشہ کیا جاتا ہے تاکہ اس کی کٹیگری کی پیش گوئی کی جا سکے۔
### مشق - Support Vector درجہ بندی کنندہ کا اطلاق کریں
### مشق - سپورٹ ویکٹر کلاسفیئر اپلائی کریں
Support Vector درجہ بندی کنندہ کے ساتھ تھوڑی بہتر درستگی حاصل کرنے کی کوشش کریں۔
چلیں سپورٹ ویکٹر کلاسفیئر کے ساتھ بہتر درستگی کی کوشش کرتے ہیں۔
1. K-Neighbors آئٹم کے بعد ایک کاما شامل کریں، اور پھر یہ لائن شامل کریں:
1. K-Neighbors آئٹم کے بعد کاما لگائیں، پھر یہ لائن شامل کریں:
```python
'SVC': SVC(),
```
نتیجہ کافی اچھا ہے!
نتیجہ بہت اچھا ہے!
```output
Accuracy (train) for SVC: 83.2%
@ -171,9 +171,9 @@ Support Vector درجہ بندی کنندہ کے ساتھ تھوڑی بہتر د
✅ [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm) کے بارے میں جانیں
## Ensemble درجہ بندی کنندگان
## Ensemble Classifiers
چاہے پچھلا ٹیسٹ کافی اچھا تھا، آئیے راستے کے آخر تک چلتے ہیں۔ آئیے کچھ 'Ensemble Classifiers' آزمائیں، خاص طور پر Random Forest اور AdaBoost:
چلیں اس راستے کو آخری حد تک آزماتے ہیں، اگرچہ پچھلا ٹیسٹ کافی اچھا تھا۔ آئیے کچھ 'Ensemble Classifiers' آزماتے ہیں، خاص طور پر Random Forest اور AdaBoost:
✅ [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html) کے بارے میں جانیں
مشین لرننگ کا یہ طریقہ "کئی بنیادی تخمینے کے پیش گوئیوں کو یکجا کرتا ہے" تاکہ ماڈل کے معیار کو بہتر بنایا جا سکے۔ ہمارے مثال میں، ہم نے Random Trees اور AdaBoost کا استعمال کیا۔
مشین لرننگ کا یہ طریقہ "کئی بنیادی ایسٹی میٹرز کی پیش گوئیوں کو جوڑتا ہے" تاکہ ماڈل کے معیار کو بہتر بنایا جا سکے۔ ہمارے مثال میں، ہم نے Random Trees اور AdaBoost استعمال کیے۔
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، ایک اوسطی طریقہ، 'فیصلہ درختوں' کا ایک 'جنگل' بناتا ہے جس میں بے ترتیب پن شامل ہوتا ہے تاکہ اوورفٹنگ سے بچا جا سکے۔ n_estimators پیرامیٹر درختوں کی تعداد پر سیٹ کیا جاتا ہے۔
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، ایک اوسط نکالنے کا طریقہ، 'فیصلہ کن درختوں' کا ایک 'جنگل' بناتا ہے جو بے ترتیبی سے بھرپور ہوتا ہے تاکہ اوورفٹنگ سے بچا جا سکے۔ n_estimators پیرامیٹر کو درختوں کی تعداد پر سیٹ کیا جاتا ہے۔
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ایک ڈیٹاسیٹ پر درجہ بندی کنندہ کو فٹ کرتا ہے اور پھر اسی ڈیٹاسیٹ پر اس درجہ بندی کنندہ کی کاپیاں فٹ کرتا ہے۔ یہ غلط طور پر درجہ بند اشیاء کے وزن پر توجہ مرکوز کرتا ہے اور اگلے درجہ بندی کنندہ کے لیے فٹ کو ایڈجسٹ کرتا ہے تاکہ درستگی ہو۔
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) ایک کلاسفیئر کو ڈیٹاسیٹ پر فٹ کرتا ہے اور پھر اسی ڈیٹاسیٹ پر اس کلاسفیئر کی کاپیاں فٹ کرتا ہے۔ یہ غلط درجہ بند کردہ اشیاء کے وزن پر توجہ دیتا ہے اور اگلے کلاسفیئر کی فٹنگ کو درست کرنے کے لیے ایڈجسٹ کرتا ہے۔
---
## 🚀چیلنج
ان میں سے ہر تکنیک کے پاس بہت سے پیرامیٹرز ہیں جنہیں آپ ایڈجسٹ کر سکتے ہیں۔ ہر ایک کے ڈیفالٹ پیرامیٹرز پر تحقیق کریں اور سوچیں کہ ان پیرامیٹرز کو ایڈجسٹ کرنے کا ماڈل کے معیار پر کیا اثر پڑے گا۔
ان تمام تکنیکوں کے بہت سے پیرامیٹرز ہوتے ہیں جنہیں آپ ایڈجسٹ کر سکتے ہیں۔ ہر ایک کے ڈیفالٹ پیرامیٹرز پر تحقیق کریں اور غور کریں کہ ان پیرامیٹرز کی تبدیلی ماڈل کے معیار کو کیسے متاثر کرے گی۔
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
ان اسباق میں بہت زیادہ اصطلاحات ہیں، اس لیے ایک لمحہ نکال کر [اس فہرست](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) کا جائزہ لیں جو مفید اصطلاحات پر مشتمل ہے!
ان اسباق میں بہت سی اصطلاحات ہوتی ہیں، لہذا ایک منٹ نکال کر [اس فہرست](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) کا جائزہ لیں جس میں مفید اصطلاحات ہیں!
## اسائنمنٹ
[پیرامیٹر پلے](assignment.md)
[Parameter play](assignment.md)
---
**ڈسکلیمر**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**دستخطی دستبرداری**:
اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا نقائص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر نہیں ہوگی۔
"\n---\n\n**ڈسکلیمر**: \nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی اصل زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ڈس کلیمر**:\nاس دستاویز کا ترجمہ مصنوعی ذہانت کی ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجموں میں غلطیاں یا بے قاعدگیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی مادری زبان میں بطور مستند ماخذ سمجھنا چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**ڈسکلیمر**: \nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ذمہ داری سے معذرت**:\nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجموں میں غلطیاں یا عدم وضاحت ہو سکتی ہے۔ اصل دستاویز اپنی مادری زبان میں معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
ہمارے پاس AI کے ساتھ سیکھنے کی ایک سلسلہ جاری ہے، مزید جاننے اور شامل ہونے کے لئے [Learn with AI Series](https://aka.ms/learnwithai/discord) پر آئیں، تاریخ 18 - 30 ستمبر، 2025۔ آپ کو GitHub Copilot کے ذریعہ ڈیٹا سائنس کے استعمال کے ٹپس اور ٹرکس ملیں گے۔
ہم نے ایک Discord لرن وِد اے آئی سیریز شروع کی ہے، مزید جانیں اور شامل ہوں [Learn with AI Series](https://aka.ms/learnwithai/discord) پر 18 - 30 ستمبر، 2025. آپ کو GitHub کوپائلٹ کے ڈیٹا سائنس میں استعمال کے ٹپس اور ٹرکس ملیں گے۔

# نو آموزوں کے لئے مشین لرننگ - ایک نصاب
# نیا سیکھنے والوں کے لیے مشین لرننگ - نصاب
> 🌍 دنیا کی ثقافتوں کے ذریعے مشین لرننگ کو دریافت کرتے ہوئے دنیا کے چکر لگائیں 🌍
> 🌍 دنیا کے ثقافتوں کے ذریعے مشین لرننگ کا سفر 🌍
Microsoft کے کلاؤڈ ایڈووکیٹس مشین لرننگ کے بارے میں 12 ہفتوں، 26 اسباق کا ایک نصاب پیش کرتے ہیں۔ اس نصاب میں آپ اس تکنیک کو سیکھیں گے جسے کبھی کبھار **کلاسیکی مشین لرننگ** کہا جاتا ہے، جو بنیادی طور پر Scikit-learn لائبریری کا استعمال کرتی ہے اور ڈیپ لرننگ سے گریز کرتی ہے، جس کا احاطہ ہمارے [AI for Beginners' نصاب](https://aka.ms/ai4beginners) میں کیا گیا ہے۔ ان اسباق کو ہمارے ['Data Science for Beginners' نصاب](https://aka.ms/ds4beginners) کے ساتھ جوڑا جا سکتا ہے۔
مائیکروسافٹ میں کلاؤڈ ایڈووکیٹس خوشی سے پیش کرتے ہیں 12 ہفتوں کا، 26 سبقوں پر مشتمل نصاب جو مکمل طور پر **مشین لرننگ** کے بارے میں ہے۔ اس نصاب میں آپ وہ سیکھیں گے جسے بعض اوقات **کلاسیکی مشین لرننگ** کہا جاتا ہے، جس میں بنیادی طور پر Scikit-learn لائبریری استعمال ہوتی ہے اور ڈیپ لرننگ سے گریز کیا جاتا ہے، جو ہمارے [AI for Beginners' نصاب](https://aka.ms/ai4beginners) میں شامل ہے۔ ساتھ ہی آپ ان اسباق کو ہمارے ['Data Science for Beginners' نصاب](https://aka.ms/ds4beginners) کے ساتھ جوڑ سکتے ہیں۔
ہمارے ساتھ دنیا کے مختلف حصوں کے ڈیٹا پر یہ کلاسیکی تکنیکز نافذ کرنے کا سفر کریں۔ ہر سبق میں پہلے اور بعد میں کوئزز شامل ہیں، اسباق مکمل کرنے کے لئے تحریری ہدایات، حل، اسائنمنٹ اور بہت کچھ۔ ہمارا پروجیکٹ-بنیاد طریقہ آپ کو سیکھتے ہوئے بنانے کی اجازت دیتا ہے، جو نئی مہارتوں کو یاد رکھنے کا مؤثر طریقہ ہے۔
ہمارے ساتھ دنیا کے مختلف حصوں سے ڈیٹا پر یہ کلاسیکی تکنیکیں اپنائیں۔ ہر سبق میں پری اور پوسٹ لکچر کوئزز، تحریری ہدایات، حل، اسائنمنٹ اور مزید شامل ہیں۔ ہمارا پروجیکٹ پر مبنی تعلیماتی انداز آپ کو بنانے کے دوران سیکھنے کا موقع دیتا ہے، جو نئے ہنر کو مضبوط کرنے کا موثر طریقہ ہے۔
**✍️ ہماری مصنفین کا دلی شکریہ** جن لوپر، اسٹیفن ہاؤل، فرانسسکا لازیری، تومومی ایمورا، کیسی بریویو، دمتری سوشنکوف، کرس نورنگ، انربن مکھرجی، اورنیلا آلتیونین، روتھ یاکوبو اور ایمی بوئڈ
**🎨 شکریہ ہمارے مصورین کا** تومومی ایمورا، داسانی مادپالی، اور جن لوپر
**🎨 ہمارے مصوروں کا بھی شکریہ** تومومی امورا، دسانی مادپلّی، اور جین لوپر
**🙏 خاص شکریہ ہمارے Microsoft اسٹوڈنٹ ایمبیسیڈر مصنفین، جائزہ کار اور مواد فراہم کرنے والوں کو**، خصوصاً رشت دگلی، محمد ساکب خان اینان، روہان راج، الیگزنڈرو پیٹریسکو، ابھیشیک جیسوال، نویرن تبسم، یوان سامیولا، اور سگڈھا اگروال
**🙏 خاص شکریہ 🙏 ہمارے Microsoft Student Ambassador مصنفین، جائزہ نگاروں اور مواد کے شریک عملداروں کے لیے** خاص طور پر رِشِت دگلی، محمد ثاقب خان اینان، روہن راج، الیگزینڈرو پیٹریسکو، ابھیشیک جیسوال، نوئرین طبعسم، ایوان سیمویلا، اور سنگدھا اگروال
**🤩 اضافی شکریہ Microsoft اسٹوڈنٹ ایمبیسیڈرز ایرک وانجاؤ، جزلین سندھی اور ویدوشی گپتا کو ہمارے R اسباق کے لئے!**
**🤩 اضافی شکر گزاری Microsoft Student Ambassadors ایرک وانجاو، جیسلین سون دھی، اور ودوشی گپتا کو ہماری R اسباق کے لیے!**
# شروع کریں
# شروعات کیسے کریں
مندرجہ ذیل اقدامات کریں:
1. **ریزپوزٹری کو فورک کریں**: اس صفحہ کے اوپر دائیں جانب "Fork" بٹن پر کلک کریں۔
2. **ریزپوزٹری کو کلون کریں**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
یہ اقدامات کریں:
1. **ریپوزیٹری کو فورک کریں**: صفحے کے اوپر دائیں جانب "Fork" بٹن پر کلک کریں۔
> [اس کورس کے تمام اضافی وسائل ہمارے Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [اس کورس کے تمام اضافی وسائل ہمارے Microsoft Learn مجموعے میں موجود ہیں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **مدد چاہیے؟** ہمارے [ٹربل شوٹنگ گائیڈ](TROUBLESHOOTING.md) کو چیک کریں جو انسٹالیشن، سیٹ اپ، اور اسباق چلانے کے عام مسائل کے حل فراہم کرتا ہے۔
> 🔧 **مدد چاہیے؟** عام مسائل اور ان کے حل کے لیے ہمارا [Troubleshooting Guide](TROUBLESHOOTING.md) دیکھیں۔
**[طلباء](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لئے، پورے رپوزٹری کو اپنے GitHub اکاؤنٹ پر فورک کریں اور مشقیں خود سے یا گروپ کے ساتھ مکمل کریں:
**[طلبہ](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لیے پوری ریپو کو اپنے GitHub اکاؤنٹ پر فورک کریں اور مشقیں خود یا گروپ کے ساتھ مکمل کریں:
- پری لیکچر کوئز سے شروع کریں۔
- لیکچر پڑھیں اور سرگرمیاں مکمل کریں، ہر علمی چیک پر رک کر غور کریں۔
- پروجیکٹس بنانے کی کوشش کریں اسباق کو سمجھ کر بجائے حل کے کوڈ کو چلانے کے؛ البتہ یہ کوڈ ہر پروجیکٹ پر مبنی سبق میں`/solution` فولڈر میں دستیاب ہے۔
- پوسٹ لیکچر کوئز حل کریں۔
- لیکچر پڑھیں اور سرگرمیاں مکمل کریں، ہر علم کی جانچ میں توقف کریں اور غور کریں۔
- کوشش کریں کہ پروجیکٹس خود سمجھ کر بنائیں بجائے حل کوڈ کو چلانے کے؛ تاہم یہ کوڈ ہر پروجیکٹ-مرکوز سبق کے`/solution` فولڈر میں دستیاب ہے۔
- پوسٹ لیکچر کوئز لیں۔
- چیلنج مکمل کریں۔
- اسائنمنٹ مکمل کریں۔
- ایک سبق کے گروپ مکمل کرنے کے بعد، [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) پر جائیں اور مناسب PAT روبریک بھر کر "آواز بلند کریں"۔ 'PAT' ایک Progress Assessment Tool ہے جو آپ کی سیکھنے میں مدد دیتا ہے۔ آپ دوسرے PATs پر ردعمل بھی دے سکتے ہیں تاکہ ہم سب مل کر سیکھ سکیں۔
- کسی سبق گروپ کو مکمل کرنے کے بعد، [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) پر جائیں اور متعلقہ PAT روبریک بھر کر سیکھنے کا اظہار کریں۔ PAT ایک پروگریس اسیسمنٹ ٹول ہے جسے آپ اپنے سیکھنے کے لیے بھرتے ہیں۔ آپ دوسرے PATs پر ردعمل بھی دے سکتے ہیں تاکہ ہم سب مل کر سیکھ سکیں۔
> مزید مطالعات کے لئے، ہم آپ کو یہ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ماڈیولز اور سیکھنے کے راستے اپنانے کی سفارش کرتے ہیں۔
> مزید مطالعہ کے لیے، ہم درج ذیل [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) ماڈیولز اور سیکھنے کے راستے اپنانے کی تجویز کرتے ہیں۔
**اساتذہ**، ہم نے [کچھ تجاویز شامل کی ہیں](for-teachers.md) کہ اس نصاب کو کیسے استعمال کیا جائے۔
**اساتذہ کے لیے، ہم نے [کچھ تجاویز شامل کی ہیں](for-teachers.md) کہ اس نصاب کو کس طرح استعمال کیا جا سکتا ہے۔**
---
## ویڈیو واک تھروز
کچھ اسباق مختصر ویڈیو کے طور پر دستیاب ہیں۔ آپ انہیں سبھی اسباق میں لائن میں یا [Microsoft Developer YouTube چینل پر ML for Beginners کی پلے لسٹ](https://aka.ms/ml-beginners-videos) پر نیچے دی گئی تصویر پر کلک کرکے دیکھ سکتے ہیں۔
کچھ اسباق مختصر ویڈیو کی شکل میں دستیاب ہیں۔ آپ یہ ویڈیوز اسباق میں ان لائن یا [ML for Beginners کی پلے لسٹ مائیکروسافٹ ڈویلپر یوٹیوب چینل پر](https://aka.ms/ml-beginners-videos) تصویر پر کلک کرکے دیکھ سکتے ہیں۔
[](https://aka.ms/ml-beginners-videos)
> 🎥 پروجیکٹ اور اس کے بانیوں کے بارے میں ویڈیو کے لئے اوپر تصویر پر کلک کریں!
> 🎥 پروجیکٹ اور اسے بنانے والوں کے بارے میں ویڈیو کے لیے اوپر تصویر پر کلک کریں!
---
## تدریسی طریقہ کار
ہم نے اس نصاب کی تعمیر میں دو تعلیمی اصول منتخب کیے ہیں: یہ یقینی بنانا کہ یہ ہاتھوں سے کام کرنے والا **پروجیکٹ-بنیاد** ہو اور اس میں **بار بار کوئزز** شامل ہوں۔ اس کے علاوہ، یہ نصاب ایک مشترکہ **موضوع** رکھتا ہے تاکہ اس میں ہم آہنگی پیدا ہو۔
ہم نے اس نصاب کو تیار کرتے ہوئے دو تدریسی اصول منتخب کیے ہیں: اسے عملی، **پروجیکٹ پر مبنی** بنانا اور **بار بار کوئزز** شامل کرنا۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **تھیم** بھی ہے جو اسے مربوط بناتا ہے۔
اس بات کو یقینی بنا کر کہ مواد پروجیکٹس کے ساتھ ہم آہنگ ہے، طلباء کے لیے عمل زیادہ دلچسپ بنایا جاتا ہے اور تصورات کی یادداشت میں اضافہ ہوتا ہے۔ اس کے علاوہ، کلاس سے پہلے ہونے والا کم داؤ والا کوئز طالبعلم کے ارادے کو کسی موضوع کے سیکھنے کی طرف متوجہ کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور دلچسپ بنانے کے لئے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس چھوٹے شروع ہوتے ہیں اور 12 ہفتوں کے دورانیے کے آخر تک بڑھتے جاتے ہیں۔ اس نصاب میں ML کے حقیقی دنیا میں اطلاقات پر پوسٹ اسکرپٹ بھی شامل ہے، جسے اضافی کریڈٹ یا مباحثے کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔
مواد کا پروجیکٹس سے ہم آہنگ ہونا طلبہ کے لیے دلچسپی بڑھاتا ہے اور تصورات کے یاد رکھنے میں مدد دیتا ہے۔ کلاس سے پہلے ایک کم داؤ کا کوئز طلبہ کو سیکھنے کے لیے راغب کرتا ہے، اور کلاس کے بعد دوسرا کوئز یادداشت کو مزید مضبوط کرتا ہے۔ یہ نصاب لچکدار اور دلچسپ ہے اور مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس چھوٹے شروع ہوتے ہیں اور 12 ہفتوں کے آخر تک پیچیدہ ہو جاتے ہیں۔ ساتھ ہی اس نصاب میں ML کی اصلی دنیا میں ایپلیکیشنز پر پوسٹ اسکرپٹ شامل ہے جو اضافی کریڈٹ یا بحث کے لیے استعمال ہو سکتا ہے۔
> ہمارا [کوڈ آف کنڈکٹ](CODE_OF_CONDUCT.md)، [کنٹریبیوٹنگ](CONTRIBUTING.md)، [ترجمہ](TRANSLATIONS.md)، اور [ٹربل شوٹنگ](TROUBLESHOOTING.md) رہنما خطوط دیکھیں۔ ہم آپ کی تعمیری رائے کے خیرمقدم کرتے ہیں!
> ہمارا [Code of Conduct](CODE_OF_CONDUCT.md)، [Contributing](CONTRIBUTING.md)، [Translation](TRANSLATIONS.md)، اور [Troubleshooting](TROUBLESHOOTING.md) گائیڈ لائنز دیکھیں۔ ہم آپ کی تعمیری رائے کا خیرمقدم کرتے ہیں!
> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر Python میں لکھے گئے ہیں، لیکن بہت سے R میں بھی دستیاب ہیں۔ R سبق مکمل کرنے کے لیے `/solution` فولڈر میں جائیں اور R اسباق تلاش کریں۔ ان میں .rmd توسیع شامل ہوتی ہے جو کہ **R Markdown** فائل کی نمائندگی کرتی ہے، جسے آسانی سے اس طرح بیان کیا جا سکتا ہے کہ یہ `code chunks` (R یا دیگر زبانوں کے) اور `YAML header` (جو آؤٹ پٹ جیسے PDF کی فارمیٹنگ کو ہدایت دیتا ہے) کو ایک `Markdown document` میں شامل کرتا ہے۔ اس طرح یہ ڈیٹا سائنس کے لیے ایک نمونہ مصنف فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو اپنے کوڈ، اس کا آؤٹ پٹ، اور اپنے خیالات کو Markdown میں لکھ کر یکجا کرنے کی اجازت دیتا ہے۔ مزید برآں، R Markdown دستاویزات PDF، HTML، یا Word جیسے آؤٹ پٹ فارمیٹس میں تبدیل کی جا سکتی ہیں۔
> **کوئز کے بارے میں ایک نوٹ**: تمام کوئز [کوئز ایپ فولڈر](../../quiz-app) میں شامل ہیں، جن کی تعداد 52 ہے ہر ایک میں تین سوالات ہیں۔ یہ اسباق کے اندر سے لنک کی گئی ہیں لیکن کوئز ایپ کو مقامی طور پر چلایا جا سکتا ہے؛ `quiz-app` فولڈر میں دی گئی ہدایات پر عمل کریں تاکہ مقامی طور پر ہوسٹ کریں یا Azure پر تعینات کریں۔
| سبق نمبر | موضوع | سبق کی جماعت | تعلیمی مقاصد | لنک شدہ سبق | مصنف |
| 01 | مشین لرننگ کا تعارف | [تعارف](1-Introduction/README.md) | مشین لرننگ کے بنیادی تصورات سیکھیں | [سبق](1-Introduction/1-intro-to-ML/README.md)| محمد |
| 02 | مشین لرننگ کی تاریخ | [تعارف](1-Introduction/README.md) | اس میدان کی تاریخی معلومات حاصل کریں | [سبق](1-Introduction/2-history-of-ML/README.md) |جین اور ایمی |
| 03 | مشین لرننگ میں نزاکت اور عدل | [تعارف](1-Introduction/README.md) | اہم فلسفیانہ مسائل جو طلباء کو مشین لرننگ ماڈلز بنانے اور لاگو کرنے میں مدنظر رکھنے چاہئیں | [سبق](1-Introduction/3-fairness/README.md) |ٹومومی |
| 04 | مشین لرننگ کی تکنیکیں | [تعارف](1-Introduction/README.md) | مشین لرننگ محققین کن تکنیکوں کا استعمال کرتے ہیں؟ | [سبق](1-Introduction/4-techniques-of-ML/README.md) |کرس اور جین |
| 05 | ریگریشن کا تعارف | [ریگریشن](2-Regression/README.md) | ریگریشن ماڈلز کے لیے Python اور Scikit-learn کے ساتھ شروع کریں | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جین • ایرک وانجا |
| 06 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | مشین لرننگ کی تیاری کے لیے ڈیٹا کو دیکھیں اور صاف کریں | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جین • ایرک وانجا |
| 07 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | خطی اور کثیر رکنی ریگریشن ماڈلز بنائیں | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جین اور دمتری • ایرک وانجا |
| 08 | شمالی امریکہ کے کدو کی قیمتیں 🎃 | [ریگریشن](2-Regression/README.md) | لاجسٹک ریگریشن ماڈل بنائیں | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جین • ایرک وانجا |
| 09 | ویب ایپ 🔌 | [ویب ایپ](3-Web-App/README.md) | تربیت یافتہ ماڈل کے استعمال کے لئے ویب ایپ بنائیں | [Python](3-Web-App/1-Web-App/README.md) | جین |
| 10 | درجہ بندی کا تعارف | [درجہ بندی](4-Classification/README.md) | اپنا ڈیٹا صاف، تیار اور دیکھیں؛ درجہ بندی کا تعارف | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جین اور کیسی • ایرک وانجا |
| 11 | مزیدار ایشیائی اور ہندوستانی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | کلاسفائرز کا تعارف | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جین اور کیسی • ایرک وانجا |
| 13 | مزیدار ایشیائی اور ہندوستانی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | اپنے ماڈل کی مدد سے ری کومینڈر ویب ایپ بنائیں |[Python](4-Classification/4-Applied/README.md) |جین |
| 14 | کلسٹرنگ کا تعارف | [کلسٹرنگ](5-Clustering/README.md) | اپنا ڈیٹا صاف، تیار اور دیکھیں؛ کلسٹرنگ کا تعارف | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جین • ایرک وانجا |
| 15 | نائیجیریائی موسیقی کے ذوق کی دریافت 🎧 | [کلسٹرنگ](5-Clustering/README.md) | K-Means کلسٹرنگ کا طریقہ دریافت کریں | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جین • ایرک وانجا |
| 16 | قدرتی زبان کی پروسیسنگ کا تعارف ☕️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | سادہ بوٹ بنا کر NLP کے بنیادی اصول سیکھیں | [Python](6-NLP/1-Introduction-to-NLP/README.md)|اسٹیفن |
| 17 | عام NLP کے کام ☕️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | زبان کی ساختوں سے نمٹنے کے دوران ضرورت پڑنے والے عام کاموں کو سمجھ کر NLP کا علم بڑھائیں | [Python](6-NLP/2-Tasks/README.md) |اسٹیفن |
| 18 | ترجمہ اور جذباتی تجزیہ ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | جین آستن کے ساتھ ترجمہ اور جذباتی تجزیہ | [Python](6-NLP/3-Translation-Sentiment/README.md)|اسٹیفن |
| 19 | یورپ کے رومانٹک ہوٹل ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md)|اسٹیفن |
| 20 | یورپ کے رومانٹک ہوٹل ♥️ | [قدرتی زبان کی پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md)|اسٹیفن |
| 21 | ٹائم سیریز پیش گوئی کا تعارف | [ٹائم سیریز](7-TimeSeries/README.md) | ٹائم سیریز پیش گوئی کا تعارف | [Python](7-TimeSeries/1-Introduction/README.md) |فرانسسکا |
| 22 | ⚡️ عالمی بجلی استعمال ⚡️ - ARIMA کے ساتھ ٹائم سیریز پیش گوئی | [ٹائم سیریز](7-TimeSeries/README.md) | ARIMA کے ساتھ ٹائم سیریز پیش گوئی | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسسکا |
| 23 | ⚡️ عالمی بجلی استعمال ⚡️ - SVR کے ساتھ ٹائم سیریز پیش گوئی | [ٹائم سیریز](7-TimeSeries/README.md) | سپورٹ ویکٹر ریگریسر کے ساتھ ٹائم سیریز پیش گوئی | [Python](7-TimeSeries/3-SVR/README.md) |انربن |
| 24 | ری انفورسمنٹ لرننگ کا تعارف | [ری انفورسمنٹ لرننگ](8-Reinforcement/README.md) | Q-لرننگ کے ساتھ ری انفورسمنٹ لرننگ کا تعارف | [Python](8-Reinforcement/1-QLearning/README.md) |دمتری |
| اختتامیہ | حقیقی دنیا میں ML کی مثالیں اور اطلاقات | [حقیقی دنیا میں ML](9-Real-World/README.md) | کلاسیکل مشین لرننگ کی دلچسپ اور معلوماتی حقیقی دنیا کی اطلاقات | [سبق](9-Real-World/1-Applications/README.md) |ٹیم |
| اختتامیہ | RAI ڈیش بورڈ کے ذریعے ML میں ماڈل کی جانچ | [حقیقی دنیا میں ML](9-Real-World/README.md) | ذمہ دار AI ڈیش بورڈ کمپونینٹس کا استعمال کرتے ہوئے مشین لرننگ میں ماڈل کی جانچ | [سبق](9-Real-World/2-Debugging-ML-Models/README.md) |روت یاکوبو |
> [اس کورس کے تمام اضافی وسائل ہماری Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر Python میں لکھے گئے ہیں، لیکن بہت سے R میں بھی دستیاب ہیں۔ R کا سبق مکمل کرنے کے لیے، `/solution` فولڈر میں جائیں اور R اسباق تلاش کریں۔ ان میں .rmd ایکسٹینشن شامل ہوتا ہے جو ایک **R مارک ڈاؤن** فائل کی نمائندگی کرتا ہے جسے آسانی سے `code chunks` (R یا دوسری زبانوں کے) اور ایک `YAML header` (جو آؤٹ پٹس جیسے PDF کی فارمیٹنگ کی رہنمائی کرتا ہے) کو `Markdown document` میں شامل کرنے کے طور پر بیان کیا جا سکتا ہے۔ اس طرح، یہ ڈیٹا سائنس کے لیے ایک مثالی تحریری فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو اپنا کوڈ، اس کا آؤٹ پٹ، اور اپنے خیالات کو مارک ڈاؤن میں لکھ کر یکجا کرنے کی اجازت دیتا ہے۔ مزید برآں، R مارک ڈاؤن دستاویزات کو PDF، HTML، یا Word جیسے آؤٹ پٹ فارمیٹس میں رینڈر کیا جا سکتا ہے۔
> **کوئزز کے بارے میں ایک نوٹ**: تمام کوئزز [Quiz App folder](../../quiz-app) میں موجود ہیں، کل 52 کوئزز جن میں ہر ایک میں تین سوالات ہوتے ہیں۔ یہ اسباق کے اندر سے لنک کیے گئے ہیں لیکن کوئز ایپ کو لوکل طور پر چلایا جا سکتا ہے؛ `quiz-app` فولڈر میں ہدایات پر عمل کریں تاکہ مقامی طور پر ہوسٹ کریں یا Azure پر تعینات کریں۔
| سبق نمبر | موضوع | سبق کی تقسیم | سیکھنے کے مقاصد | منسلک سبق | مصنف |
| 01 | مشین لرننگ کا تعارف | [Introduction](1-Introduction/README.md) | مشین لرننگ کے بنیادی تصورات کو سیکھیں | [Lesson](1-Introduction/1-intro-to-ML/README.md) | محمد |
| 02 | مشین لرننگ کی تاریخ | [Introduction](1-Introduction/README.md) | اس میدان کی تاریخ جانیں | [Lesson](1-Introduction/2-history-of-ML/README.md) | جین اور ایمی |
| 03 | مشین لرننگ اور انصاف | [Introduction](1-Introduction/README.md) | وہ اہم فلسفیانہ مسائل جو طلباء کو ML ماڈلز بناتے اور استعمال کرتے وقت انصاف کے بارے میں غور کرنا چاہیے؟ | [Lesson](1-Introduction/3-fairness/README.md) | ٹومی |
| 04 | مشین لرننگ کی تکنیکس | [Introduction](1-Introduction/README.md) | مشین لرننگ کے ماہرین کون سی تکنیک استعمال کرتے ہیں ML ماڈلز بنانے کے لیے؟ | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | کرس اور جین |
| 05 | ریگریشن کا تعارف | [Regression](2-Regression/README.md) | Python اور Scikit-learn کے ساتھ ریگریشن ماڈلز کی شروعات کریں | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جین • ایرک ونجاؤ |
| 06 | شمالی امریکہ کے کدو کے نرخ 🎃 | [Regression](2-Regression/README.md) | مشین لرننگ کی تیاری کے لیے ڈیٹا کو بصری شکل میں لائیں اور صاف کریں | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جین • ایرک ونجاؤ |
| 07 | شمالی امریکہ کے کدو کے نرخ 🎃 | [Regression](2-Regression/README.md) | خطی اور کثیر رکنی ریگریشن ماڈلز بنائیں | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جین، دمتری اور ایرک ونجاؤ |
| 08 | شمالی امریکہ کے کدو کے نرخ 🎃 | [Regression](2-Regression/README.md) | لاجسٹک ریگریشن ماڈل بنائیں | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جین • ایرک ونجاؤ |
| 09 | ایک ویب ایپ 🔌 | [Web App](3-Web-App/README.md) | اپنی تربیت شدہ ماڈل استعمال کرنے کے لیے ایک ویب ایپ بنائیں | [Python](3-Web-App/1-Web-App/README.md) | جین |
| 10 | درجہ بندی کا تعارف | [Classification](4-Classification/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں اور بصری شکل میں لائیں؛ درجہ بندی کا تعارف | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جین، کیسی اور ایرک ونجاؤ |
| 11 | مزیدار ایشیائی اور ہندی کھانے 🍜 | [Classification](4-Classification/README.md) | درجہ بند کرنے والوں کا تعارف | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جین، کیسی اور ایرک ونجاؤ |
| 12 | مزیدار ایشیائی اور ہندی کھانے 🍜 | [Classification](4-Classification/README.md) | مزید درجہ بند کرنے والے | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جین، کیسی اور ایرک ونجاؤ |
| 13 | مزیدار ایشیائی اور ہندی کھانے 🍜 | [Classification](4-Classification/README.md) | اپنی ماڈل استعمال کرتے ہوئے ایک سفارش کنندہ ویب ایپ بنائیں | [Python](4-Classification/4-Applied/README.md) | جین |
| 14 | کلسٹرنگ کا تعارف | [Clustering](5-Clustering/README.md) | اپنے ڈیٹا کو صاف کریں، تیار کریں اور بصری شکل میں لائیں؛ کلسٹرنگ کا تعارف | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جین • ایرک ونجاؤ |
| 15 | نائیجیریا کے موسیقی کے ذوق کی تلاش 🎧 | [Clustering](5-Clustering/README.md) | K-Means کلسٹرنگ طریقہ کار کو دریافت کریں | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جین • ایرک ونجاؤ |
| 16 | قدرتی زبان کی پراسیسنگ کا تعارف ☕️ | [Natural language processing](6-NLP/README.md) | ایک سادہ بوٹ بنا کر NLP کے بنیادی اصول سیکھیں | [Python](6-NLP/1-Introduction-to-NLP/README.md) | اسٹیفن |
| 17 | عمومی NLP کے کام ☕️ | [Natural language processing](6-NLP/README.md) | زبان کے ڈھانچوں کے ساتھ کام کرنے میں درکار عام کاموں کو سمجھ کر اپنے NLP کا علم گہرا کریں | [Python](6-NLP/2-Tasks/README.md) | اسٹیفن |
| 18 | ترجمہ اور جذباتی تجزیہ ♥️ | [Natural language processing](6-NLP/README.md) | جین آسٹن کے ساتھ ترجمہ اور جذباتی تجزیہ | [Python](6-NLP/3-Translation-Sentiment/README.md) | اسٹیفن |
| 19 | یورپ کے رومانٹک ہوٹلز ♥️ | [Natural language processing](6-NLP/README.md) | ہوٹل جائزوں کے ساتھ جذباتی تجزیہ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | اسٹیفن |
| 20 | یورپ کے رومانٹک ہوٹلز ♥️ | [Natural language processing](6-NLP/README.md) | ہوٹل جائزوں کے ساتھ جذباتی تجزیہ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | اسٹیفن |
| 21 | ٹائم سیریز پیشن گوئی کا تعارف | [Time series](7-TimeSeries/README.md) | ٹائم سیریز پیش گوئی کا تعارف | [Python](7-TimeSeries/1-Introduction/README.md) | فرانسسکا |
| 22 | ⚡️ عالمی توانائی کا استعمال ⚡️ - ARIMA کے ساتھ پیش گوئی | [Time series](7-TimeSeries/README.md) | ARIMA کے ساتھ ٹائم سیریز کی پیش گوئی | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسسکا |
| 23 | ⚡️ عالمی توانائی کا استعمال ⚡️ - SVR کے ساتھ پیش گوئی | [Time series](7-TimeSeries/README.md) | Support Vector Regressor کے ساتھ ٹائم سیریز پیش گوئی | [Python](7-TimeSeries/3-SVR/README.md) | انربن |
| 24 | reinforcement learning کا تعارف | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning کے ساتھ reinforcement learning کا تعارف | [Python](8-Reinforcement/1-QLearning/README.md) | دمتری |
| 25 | پیٹر کو بھیڑیے سے بچائیں! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym| [Python](8-Reinforcement/2-Gym/README.md) | دمتری |
| پوسٹ اسکرپٹ | کلاسیکی ML کی حقیقی دنیا کی مثالیں | [ML in the Wild](9-Real-World/README.md) | کلاسیکی مشین لرننگ کی دلچسپ اور واضح حقیقی دنیا کی ایپلی کیشنز | [Lesson](9-Real-World/1-Applications/README.md) | ٹیم |
| پوسٹ اسکرپٹ | RAI ڈیش بورڈ کے ذریعے ML میں ماڈل کی خرابی کی جانچ | [ML in the Wild](9-Real-World/README.md) | Responsible AI ڈیش بورڈ کے اجزاء کے ذریعے مشین لرننگ میں ماڈل کی خرابی کی جانچ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | روت یاکوبو |
> [اس کورس کے لیے تمام اضافی وسائل ہماری Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## آف لائن رسائی
آپ اس دستاویز کو آف لائن [Docsify](https://docsify.js.org/#/) استعمال کرکے چلا سکتے ہیں۔ اس ریپو کو فورک کریں، اپنے مقامی کمپیوٹر پر [Docsify انسٹال کریں](https://docsify.js.org/#/quickstart)، اور پھر اس ریپو کے روٹ فولڈر میں `docsify serve`لکھیں۔ ویب سائٹ آپ کے لوکل ہوسٹ پر پورٹ 3000 پر چلائے گی: `localhost:3000`.
آپ اس دستاویز کو آف لائن [Docsify](https://docsify.js.org/#/) استعمال کرکے چلا سکتے ہیں۔ اس ریپو کو فورک کریں، اپنے لوکل میشن پر [Docsify انسٹال کریں](https://docsify.js.org/#/quickstart)، پھر اس ریپو کے روٹ فولڈر میں `docsify serve`ٹائپ کریں۔ ویب سائٹ آپ کے localhost پر پورٹ 3000 پر دستیاب ہوگی: `localhost:3000`۔
## پی ڈی ایفز
## پی ڈی ایف
نصاب کا پی ڈی ایف ورژن لنکس کے ساتھ یہاں حاصل کریں: [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
نصاب کا پی ڈی ایف مختلف اقسام کے لنکس کے ساتھ [یہاں](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) دستیاب ہے۔
## 🎒 دیگر کورسز
ہماری ٹیم دیگر کورسز بھی تیار کرتی ہے! دیکھیں:
ہماری ٹیم دیگر کورسز بھی بناتی ہے! دیکھیں:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -173,49 +183,54 @@ Microsoft کے کلاؤڈ ایڈووکیٹس مشین لرننگ کے بارے
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generative AI Series
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### جنریٹیو AI سیریز
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### بنیادی تعلیم
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### کوپائلٹ سیریز
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
اگر آپ پھنس گئے ہیں یا AI ایپس بنانے کے بارے میں کوئی سوالات ہیں۔ MCP کے بارے میں بات چیت میں شامل ہوں جہاں ساتھی سیکھنے والے اور تجربہ کار ڈویلپرز ہیں۔ یہ ایک مددگار کمیونٹی ہے جہاں سوالات کا خیرمقدم کیا جاتا ہے اور علم آزادانہ طور پر شیئر کیا جاتا ہے۔
اگر آپ پھنس جائیں یا AI ایپس بنانے کے بارے میں کوئی سوال ہو۔ MCP کے بارے میں بحث میں دوسروں سیکھنے والوں اور تجربہ کار ڈویلپرز میں شامل ہوں۔ یہ ایک مددگار کمیونٹی ہے جہاں سوالات خوش آمدید ہیں اور علم آزادانہ طور پر شئیر کیا جاتا ہے۔
- بہتر سمجھ کے لیے ہر سبق کے بعد نوٹ بکس کا جائزہ لیں۔
- الگورتھمز کو خود سے نافذ کرنے کی مشق کریں۔
- سیکھی گئی تصورات کا استعمال کرتے ہوئے حقیقی دنیا کے ڈیٹا سیٹس کو دریافت کریں۔
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ڈسکلیمر**:
اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہِ کرم ذہن میں رکھیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ایک معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ورانہ انسانی ترجمہ تجویز کیا جاتا ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تعبیر کی ذمہ داری ہم پر نہیں ہوگی۔
**دستخطی اعلامیہ**:
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لئے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا نواقص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ایک مستند ماخذ کے طور پر سمجھی جانی چاہیے۔ اہم معلومات کے لئے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔
在本课中,您了解了负责任的 AI 工具箱,这是一个“开源的、社区驱动的项目,旨在帮助数据科学家分析和改进 AI 系统”。对于此作业,请探索 RAI 工具箱的一个[笔记本](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb),并在论文或演示文稿中报告您的发现。
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 点击上方图片观看关于线性和多项式回归的简短视频概述。
> 🎥 点击上方图片观看线性回归与多项式回归介绍短视频。
为了训练我们的线性回归模型,我们将使用**Scikit-learn**库。
训练线性回归模型时,我们将使用**Scikit-learn**库。
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
我们首先将输入值(特征)和预期输出(标签)分离到单独的 numpy 数组中:
首先把输入值(特征)和预期输出(标签)分成两个 numpy 数组:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 注意,我们必须对输入数据使用 `reshape`,让线性回归模块能正确理解输入。线性回归期望输入是一个二维数组,数组的每一行是一个特征向量。我们这里只有一个输入,所以需要一个形状为 N×1 的数组,其中 N 是数据集大小。
> 请注意,我们必须对输入数据执行 `reshape`,以便线性回归包能够正确理解它。线性回归需要一个二维数组作为输入,其中数组的每一行对应于输入特征的向量。在我们的例子中,由于我们只有一个输入——我们需要一个形状为 N×1 的数组,其中 N 是数据集的大小。
然后,我们需要将数据分为训练集和测试集,以便在训练后验证我们的模型:
接着需要将数据拆分成训练集和测试集,以便训练后验证模型:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
- 完成课程组后,访问[讨论区](https://github.com/microsoft/ML-For-Beginners/discussions),通过填写适当的 PAT 评分量表“大胆表达学习感受”。“PAT”是一个进度评估工具,填写它有助于加深学习。你也可以对其他人的 PAT 进行回应,大家共同学习。
- 完成一组课程后,访问[讨论板](https://github.com/microsoft/ML-For-Beginners/discussions),通过填写相应的 PAT 评分表“边学边分享”。“PAT”是进度评估工具,填写后能促进您的学习。您还可以对其他人的 PAT 进行反应,与大家共同学习。
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot 系列
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)