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

> اینفوگرافیک توسط [Dasani Madipalli](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)
### مقدمه
تا کنون شما بررسی کردهاید که رگرسیون چیست با دادههای نمونه جمعآوری شده از مجموعه داده قیمت کدو حلوایی که در طول این درس استفاده خواهیم کرد. همچنین آن را با استفاده از 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. **قدر بیش از جهت:** میخواهیم خطای -5 به اندازه خطای +5 حساب شود. مربع گرفتن همه مقادیر را مثبت میکند.
2. **جریمه دادن به نقاط پرت:** مربع کردن وزن بیشتری به خطاهای بزرگ میدهد و خط را مجبور میکند نزدیکتر به نقاط دور شود.
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-intercept) است که به مقدار `Y` هنگامی که `X = 0` اشاره دارد.
> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> به عبارت دیگر، و با اشاره به سوال اصلی دادههای کدو حلوایی ما: «پیشبینی قیمت کدو حلوایی به ازای هر بوشل با توجه به ماه»، `X` اشاره به قیمت دارد و `Y` به ماه فروش اشارهمیکند.
>
>
>
> مقدار Y را محاسبه کنید. اگر حدود ۴ دلار پرداخت میکنید، حتماً ماه آوریل است! اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> ریاضیات محاسبه خط باید شیب خط را که به مقدار عرض از مبدأ نیز وابسته است نشان دهد، یعنی جایی که مقدار `Y` وقتی `X = 0` قرار دارد.
>
> روش محاسبه این مقادیر را میتوانید در وبسایت [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) مشاهده کنید. همچنین با استفاده از [این ماشین حساب حداقل مربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) ببینید که چگونه مقدار اعداد بر خط تاثیر میگذارد.
>
> `X` متغیر توضیحی است. `Y` متغیر وابسته است. شیب خط `b` است و `a`عرض از مبدأ در محور y است، که مقدار `Y` را وقتی `X = 0` است نشان میدهد.
> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper)
>
> به عبارت دیگر، و با اشاره به سوال اصلی داده کدو تنبل ما: "پیشبینی قیمت کدو تنبل به ازای هر بوشل بر اساس ماه"، `X` اشاره به قیمت دارد و `Y` به ماه فروش.
> مقدار Y را محاسبه کنید. اگر حدود 4 دلار پرداخت میکنید، باید آوریل باشد! اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper)
>
> ریاضی که خط را محاسبه میکند باید شیب خط را نشان دهد، که همچنین به عرض از مبدأ یا جایی که `Y` وقتی `X = 0` است بستگی دارد.
>
> میتوانید روش محاسبه این مقادیر را در سایت [ریاضیات سرگرمکننده](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) با استفاده از روش کمترین مربعات و خط رگرسیون داشته باشد.
✅ دفترچه همراه این درس را اجرا کنید و نمودار پراکندگی ماه به قیمت را نگاه کنید. آیا دادههای ارتباط ماه به قیمت کدو فروش همبستگی بالا یا پایین دارند، طبق تفسیر بصری شما از نمودار پراکندگی؟ آیا این تغییر میکند اگر به جای `ماه` از معیار دقیقتری مثل *روز سال* (یعنی تعداد روزهای گذشته از اول سال) استفاده کنید؟
✅ نوتبوک همراه این درس را اجرا کنید و نمودار پراکندگی ماه به قیمت را نگاه کنید. آیا داده همبستگی بالایی یا پایینی بین ماه و قیمت فروش کدو تنبل دارد بر اساس تفسیر بصری خود از نمودار پراکندگی؟ آیا اگر به جای `Month` از معیار دقیقتری مثل *روز سال* (یعنی تعداد روزها از آغاز سال) استفاده کنید، تغییر میکند؟
در کد زیر فرض میکنیم دادهها را پاکسازی کردهایم و یک فریم داده به نام `new_pumpkins` داریم، شبیه به موارد زیر:
در کد زیر فرض میکنیم داده را پاکسازی کردهایم و داده فریمی به نام `new_pumpkins` بدست آوردیم، مشابه این:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> کد پاکسازی داده در [`notebook.ipynb`](notebook.ipynb) موجود است. ما همان مراحل پاکسازی درس قبلی را انجام دادهایم و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کردهایم:
> کد پاکسازی داده در [`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` وجود دارد:
به نظر میرسد همبستگی نسبتاً کوچک است، -۰.۱۵ برای `ماه` و -۰.۱۷ برای `روز سال`، اما ممکن است ارتباط مهم دیگری وجود داشته باشد. به نظر میرسد خوشههای مختلف قیمت با انواع مختلف کدو متناسب است. برای تأیید این فرض، بیایید هر دسته کدو را با رنگ متفاوت ترسیم کنیم. با ارسال پارامتر `ax` به تابع نمودار پراکندگی، میتوانیم همه نقاط را روی یک نمودار ترسیم کنیم:
به نظر میرسد همبستگی نسبتاً کوچک است، -0.15 نسبت به `ماه` و -0.17 نسبت به `روز ماه`، اما ممکن است رابطه مهم دیگری وجود داشته باشد. به نظر میرسد خوشههای مختلف قیمت مرتبط با انواع مختلف کدو وجود دارد. برای تایید این فرض، اجازه دهید هر دسته کدو را با رنگ متفاوت رسم کنیم. با ارسال آرگومان `ax` به تابع نمودار پراکندگی میتوانیم تمام نقاط را روی یک گراف نشان دهیم:
```python
ax=None
@ -140,41 +138,42 @@ 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** استفاده خواهیم کرد.
@ -183,50 +182,49 @@ 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)
```
در نهایت، آموزش مدل واقعی رگرسیون خطی تنها دو خط کد طول میکشد. ما یک شیء `LinearRegression` تعریف میکنیم و آن را با استفاده از متد `fit` روی دادهها آموزش میدهیم:
در نهایت، آموزش مدل رگرسیون خطی واقعی تنها دو خط کد نیاز دارد. شیء `LinearRegression` را تعریف میکنیم و با استفاده از متد `fit` آن را روی دادههای خود تطبیق میدهیم:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
شیء `LinearRegression` پس از انجام `fit` شامل تمامی ضرایب رگرسیون است که میتوان به آنها با استفاده از خاصیت `.coef_` دسترسی داشت. در مورد ما، فقط یک ضریب وجود دارد که باید حدود `-0.017` باشد. این یعنی قیمتها کمی با گذر زمان کاهش مییابد، اما نه خیلی زیاد، حدود ۲ سنت در روز. همچنین میتوانیم نقطه تقاطع رگرسیون با محور Y را با استفاده از `lin_reg.intercept_` مشاهده کنیم - که در مورد ما حدود `21` است و نشاندهنده قیمت در ابتدای سال است.
شیء `LinearRegression` پس از اجرای `fit` شامل تمام ضرایب رگرسیون است که میتوان به آنها از طریق خاصیت `.coef_` دسترسی داشت. در مورد ما، فقط یک ضریب وجود دارد که باید حدود `-0.017` باشد. این یعنی قیمتها به نظر میرسد که با گذر زمان کمی کاهش مییابند، اما نه خیلی زیاد، حدود ۲ سنت در روز. همچنین میتوانیم نقطه تلاقی رگرسیون با محور Y را با استفاده از `lin_reg.intercept_` بدست آوریم — که در مورد ما حدود `21` خواهد بود و نشاندهنده قیمت در ابتدای سال است.
برای دیدن اینکه مدل ما چقدر دقیق است، میتوانیم قیمتها را روی دادههای تست پیشبینی کنیم و سپس میزان نزدیکی پیشبینیها به مقادیر انتظار رفته را بسنجیم. این کار میتواند با استفاده از معیار میانگین مربعات خطا (MSE) انجام شود، که میانگین تمام تفاوتهای مجذور شده بین مقدار انتظار رفته و پیشبینی شده است.
برای دیدن دقت مدل، میتوانیم قیمتها را روی دادههای تست پیشبینی کنیم، و سپس بسنجیم چقدر پیشبینیهایمان به مقادیر مورد انتظار نزدیک هستند. این کار را میتوان با استفاده از معیار خطای میانگین مربعات جذر (RMSE) انجام داد، که جذر میانگین تمام اختلافهای مربعی بین مقدار پیشبینی شده و مورد انتظار است.
خطای ما به نظر میرسد حدود ۲ واحد است که حدود ۱۷٪ میشود. چندان خوب نیست. شاخص دیگری برای کیفیت مدل، **ضریب تعیین** است که میتوان آن را به صورت زیر به دست آورد:
خطای ما حدود ۲ واحد است که تقریباً ~۱۷٪ است، نه چندان خوب. یک شاخص دیگر از کیفیت مدل، **ضریب تعیین** است که میتوان آن را به این صورت به دست آورد:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
اگر مقدار برابر ۰ باشد، یعنی مدل دادههای ورودی را در نظر نمیگیرد و مانند *بدترین پیشبینیکننده خطی* عمل میکند، که به سادگی مقدار میانگین خروجیها است. مقدار ۱ یعنی میتوانیم دقیقاً همه خروجیهای مورد انتظار را پیشبینی کنیم. در مورد ما، ضریب حدود ۰.۰۶ است که نسبتاً پایین است.
اگر مقدار ۰ باشد، به این معناست که مدل ورودیها را در نظر نمیگیرد و به عنوان *بدترین پیشبینیکننده خطی* عمل میکند که صرفاً مقدار میانگین نتیجه است. مقدار ۱ نشان میدهد که میتوانیم بهطور کامل همه خروجیهای انتظار رفته را پیشبینی کنیم. در مورد ما، ضریب حدود ۰.۰۶ است که بسیار پایین است.
همچنین میتوانیم دادههای تست را به همراه خط رگرسیونی رسم کنیم تا بهتر ببینیم رگرسیون در مورد ما چگونه عمل میکند:
همچنین میتوانیم دادههای تست را همراه با خط رگرسیون رسم کنیم تا بهتر ببینیم رگرسیون در مورد ما چگونه عمل میکند:
```python
plt.scatter(X_test,y_test)
@ -237,17 +235,17 @@ plt.plot(X_test,pred)
## رگرسیون چندجملهای
نوع دیگری از رگرسیون خطی، رگرسیون چندجملهای است. در حالی که گاهی رابطه خطی بین متغیرها وجود دارد - مثلاً هرچه حجم کدو تنبل بزرگتر باشد، قیمت بالاتر است - گاهی این روابط قابل ترسیم به صورت یک صفحه یا خط راست نیستند.
نوع دیگری از رگرسیون خطی، رگرسیون چندجملهای است. در حالی که گاهی بین متغیرها رابطه خطی وجود دارد - هر چه حجم کدو تنبل بیشتر باشد، قیمت بالاتر است - گاهی این روابط قابل ترسیم با یک صفحه یا خط مستقیم نیستند.
✅ اینجا [چند مثال بیشتر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از دادههایی وجود دارد که میتوانند از رگرسیون چندجملهای استفاده کنند
✅ اینجا [چند مثال دیگر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از دادههایی است که میتوانند از رگرسیون چندجملهای استفاده کنند.
یک بار دیگر رابطه بین تاریخ و قیمت را بررسی کنید. آیا این نمودار پراکندگی حتما باید توسط یک خط راست تحلیل شود؟ آیا نمیتوان قیمتها را متغیر و نوسانکننده در نظر گرفت؟ در این حالت، میتوانید رگرسیون چندجملهای را امتحان کنید.
دوباره به رابطه بین تاریخ و قیمت نگاه کنید. آیا این نمودار پراکندگی به نظر میرسد که حتما باید با یک خط مستقیم تحلیل شود؟ آیا قیمتها نمیتوانند نوسان کنند؟ در این حالت، میتوانید رگرسیون چندجملهای را امتحان کنید.
✅ چندجملهایها عبارات ریاضی هستند که ممکن است از یک یا چند متغیر و ضرایب تشکیل شوند.
✅ چندجملهایها عبارتهای ریاضی هستند که ممکن است شامل یک یا چند متغیر و ضرایب باشند.
رگرسیون چندجملهای یک خط منحنی ایجاد میکند تا بهتر دادههای غیرخطی را برازش کند. در مورد ما، اگر متغیر مربعی`DayOfYear` را به دادههای ورودی اضافه کنیم، باید بتوانیم دادهها را با یک منحنی سهمی شکل تناسب دهیم که حداقل آن در نقطهای مشخص در طول سال واقع شده باشد.
رگرسیون چندجملهای یک منحنی ایجاد میکند تا دادههای غیرخطی را بهتر تطبیق دهد. در مورد ما، اگر متغیر مربعشده`DayOfYear` را به دادههای ورودی اضافه کنیم، باید بتوانیم دادهها را با یک منحنی سهمی شکل تطبیق دهیم که حداقل آن در نقطهای از سال باشد.
Scikit-learn یک [رابط خط لوله](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفید ارائه میدهد که مراحل مختلف پردازش داده را با هم ترکیب میکند. یک **خط لوله** زنجیرهای از **برآوردگرها** است. در مورد ما، یک خط لوله میسازیم که ابتدا ویژگیهای چندجملهای را به مدل اضافه میکند و سپس رگرسیون را آموزش میدهد:
کتابخانه Scikit-learn شامل یک [رابط برنامهنویسی خط لوله (pipeline 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
استفاده از `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 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 روی تصویر بالا کلیک کنید تا یک ویدیوی کوتاه درباره استفاده از ویژگیهای دستهای ببینید.
> 🎥 برای دیدن یک ویدیوی کوتاه درباره استفاده از ویژگیهای دستهای، روی تصویر بالا کلیک کنید.
در اینجا میبینید که قیمت متوسط چگونه بسته به نوع کدو تنبل تغییر میکند:
در اینجا میبینید که قیمت متوسط چگونه به نوع کدو بستگی دارد:
<imgalt="Average price by variety"src="../../../../translated_images/fa/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
برای در نظر گرفتن تنوع، ابتدا باید آن را به فرم عددی تبدیل کنیم، یا به اصطلاح آن را **کدگذاری** کنیم. چند روش وجود دارد:
برای لحاظ کردن نوع کدو، ابتدا باید آن را به شکل عددی تبدیل کنیم، یا **رمزگذاری** کنیم. چند روش برای این کار وجود دارد:
* کدگذاری عددی ساده جدولی از گونههای مختلف میسازد و سپس نام گونه را با یک شماره شاخص در آن جدول جایگزین میکند. این روش برای رگرسیون خطی ایدهآل نیست، چون رگرسیون خطی مقدار عددی شاخص را وارد محاسبات میکند و در نتیجه رابطه بین شماره شاخص و قیمت به طور مشهود غیرخطی است، حتی اگر مطمئن شویم که شاخصها به ترتیب خاصی هستند.
* **کدگذاری یکگرمی** ستون `Variety` را با ۴ ستون مختلف جایگزین میکند، یکی برای هر نوع. هر ستون مقدار `1` دارد اگر سطر مربوط به آن نوع باشد، و `0` در غیر این صورت. این یعنی برای رگرسیون خطی چهار ضریب داریم، یکی برای هر نوع کدو تنبل، که مسئول قیمت اولیه (یا بهتر است بگوییم قیمت اضافی) برای آن نوع مشخص است.
* رمزگذاری ساده عددی یک جدول از انواع مختلف ایجاد میکند، و سپس نام نوع را با اندیس آن در آن جدول جایگزین میکند. این ایده بهترین گزینه برای رگرسیون خطی نیست، چون رگرسیون خطی مقدار عددی اندیس را گرفته و با ضریب خاصی ضرب کرده و به نتیجه اضافه میکند. در مورد ما، رابطه بین شماره اندیس و قیمت به وضوح غیرخطی است، حتی اگر مطمئن شویم که اندیسها به ترتیب خاصی مرتب شدهاند.
* **رمزگذاری تکگرمی (one-hot encoding)** ستون `Variety` را با ۴ ستون مختلف جایگزین میکند، یکی برای هر نوع کدو. هر ستون شامل `1` است اگر ردیف مربوطه از آن نوع باشد و `0` در غیر این صورت. این یعنی در رگرسیون خطی چهار ضریب وجود دارد، یکی برای هر نوع کدو، که مسئول "قیمت شروع" (یا به عبارت دقیقتر "قیمت اضافی") برای آن نوع خاص است.
کد زیر نشان میدهد چگونه میتوانیم یکگرمی کدگذاری را انجام دهیم:
کد زیر نشان میدهد چگونه میتوان یک نوع کدو را با روش one-hot کدگذاری کرد:
برای آموزش رگرسیون خطی با استفاده از تنوع کدگذاری شده به صورت یکگرمی به عنوان ورودی، فقط کافی است دادههای`X` و `y` را به درستی مقداردهی اولیه کنیم:
برای آموزش رگرسیون خطی با استفاده از نوع کدو one-hot، فقط کافی است`X` و `y` را به درستی مقداردهی اولیه کنیم:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
باقی کد همان است که قبلاً برای آموزش رگرسیون خطی استفاده کردیم. اگر امتحان کنید، خواهید دید که میانگین مربعات خطا تقریباً همان است، اما ضریب تعیین بسیار بالاتری (~۷۷٪) به دست میآوریم. برای پیشبینیهای دقیقتر، میتوانیم ویژگیهای دستهای بیشتری و همچنین ویژگیهای عددی مانند `Month` یا `DayOfYear` را در نظر بگیریم. برای داشتن یک آرایه بزرگ از ویژگیها، میتوانیم از `join` استفاده کنیم:
باقیمانده کد همان است که قبلاً برای آموزش رگرسیون خطی استفاده کردیم. اگر آن را اجرا کنید، خواهید دید که میانگین مربعات خطا مشابه است اما ضریب تعیین خیلی بالاتری (~۷۷٪) بدست میآید. برای دریافت پیشبینیهای حتی دقیقتر، میتوانیم ویژگیهای دستهای بیشتری را به همراه ویژگیهای عددی مانند `Month` یا `DayOfYear` لحاظ کنیم. برای داشتن یک آرایه بزرگ از ویژگیها، میتوانیم از تابع`join` استفاده کنیم:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -321,11 +319,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
در اینجا همچنین `City` و نوع `Package` را در نظر میگیریم که به ما MSE 2.84 (۱۰٪) و ضریب تعیین ۰.۹۴ میدهد!
در اینجا ما همچنین `City` و نوع `Package` را نیز در نظر میگیریم، که MSE برابر 2.84 (۱۰٪) و ضریب تعیین 0.94 به ما میدهد!
## جمعبندی همه چیز
## همه چیز را کنار هم بگذاریم
برای ساخت بهترین مدل، میتوانیم دادههای ترکیبی (ویژگیهای کدگذاری شده یکگرمی و عددی) از مثال بالا را همراه با رگرسیون چندجملهای استفاده کنیم. در اینجا کد کامل برای راحتی شما آمده است:
برای ساخت بهترین مدل، میتوانیم دادههای ترکیبی (دستهای کدگذاری شده به صورت one-hot + عددی) از مثال بالا را همراه با رگرسیون چندجملهای استفاده کنیم. در اینجا کد کامل برای راحتی شما آمده است:
```python
# تنظیم دادههای آموزشی
@ -335,17 +333,17 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# تقسیم دادهها به مجموعه آموزش و تست
# تقسیمبندی آموزش و آزمون
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
این باید بهترین ضریب تعیین یعنی تقریباً ۹۷٪ و MSE=2.23 (حدود ۸٪ خطای پیشبینی) را به ما بدهد.
این باید بهترین ضریب تعیین حدود ۹۷٪ و 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 |
| `DayOfYear` خطی | 2.77 (۱۷.۲٪) | 0.07 |
| `DayOfYear` چندجملهای | 2.73 (۱۷.۰٪) | 0.08 |
| `Variety` خطی | 5.24 (۱۹.۷٪) | 0.77 |
| تمام ویژگیها خطی | 2.84 (۱۰.۵٪) | 0.94 |
| تمام ویژگیها چندجملهای | 2.23 (۸.۲۵٪) | 0.97 |
🏆 آفرین! شما در یک درس چهار مدل رگرسیون ساختید و کیفیت مدل را تا ۹۷٪ بهبود دادید. در بخش نهایی درباره رگرسیون، درباره رگرسیون لجستیک برای تعیین دستهها خواهید آموخت.
🏆 عالی! شما چهار مدل رگرسیون را در یک درس ساختید و کیفیت مدل را تا ۹۷٪ بهبود دادید. در بخش نهایی درباره رگرسیون، با رگرسیون لجستیک برای تعیین دستهها آشنا خواهید شد.
---
## 🚀چالش
## 🚀چالش
متغیرهای مختلف را در این دفترچه تست کنید تا ببینید چگونه همبستگی با دقت مدل رابطه دارد.
تعدادی متغیر مختلف را در این دفترچه تست کنید تا ببینید همبستگی چگونه با دقت مدل مربوط میشود.
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## [کوییز پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## مرور و خودآموزی
در این درس درباره رگرسیون خطی آموختیم. انواع مهم دیگری از رگرسیون نیز وجود دارد. درباره تکنیکهای مرحلهای، Ridge، Lasso و Elasticnet مطالعه کنید. دوره خوبی برای یادگیری بیشتر دوره [یادگیری آماری استنفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) است.
در این درس درباره رگرسیون خطی یاد گرفتیم. انواع مهم دیگری از رگرسیون وجود دارد. درباره روشهای Stepwise، 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/)
فرض بر این است که شما [درس 1](../1-Introduction/README.md) را کامل کردهاید، مطمئن شوید که فایل _cleaned_cuisines.csv_ در پوشه اصلی`/data` برای این چهار درس وجود دارد.
فرض کنید درس [درس ۱](../1-Introduction/README.md) را کامل کردهاید، اطمینان حاصل کنید که یک فایل _cleaned_cuisines.csv_ در پوشه ریشه`/data` برای این چهار درس وجود دارد.
## تمرین - پیشبینی یک آشپزی ملی
1. در پوشه _notebook.ipynb_ این درس، آن فایل را به همراه کتابخانه Pandas وارد کنید:
۱. در پوشه این درس با نام _notebook.ipynb_، آن فایل را همراه با کتابخانه Pandas وارد کنید:
حالا که دادههای شما پاک و آماده آموزش هستند، باید تصمیم بگیرید که از کدام الگوریتم برای این کار استفاده کنید.
اکنون که دادههای شما تمیز و آماده آموزش هستند، باید تصمیم بگیرید کدام الگوریتم را برای این کار استفاده کنید.
Scikit-learn طبقهبندی را تحت یادگیری نظارتشده گروهبندی میکند و در این دستهبندی روشهای زیادی برای طبقهبندی وجود دارد. [تنوع](https://scikit-learn.org/stable/supervised_learning.html) در ابتدا ممکن است گیجکننده به نظر برسد. روشهای زیر شامل تکنیکهای طبقهبندی هستند:
Scikit-learn طبقهبندی را در زیر مجموعه یادگیری نظارتشده دستهبندی میکند، و در آن دسته چندین روش برای طبقهبندی خواهید یافت. [تنوع](https://scikit-learn.org/stable/supervised_learning.html) در نگاه اول بسیار گیجکننده است. روشهای زیر همه شامل تکنیکهای طبقهبندی هستند:
- مدلهای خطی
- ماشینهای بردار پشتیبان
- نزول گرادیان تصادفی
- نزدیکترین همسایهها
- فرآیندهای گوسی
- درختهای تصمیمگیری
- روشهای ترکیبی (طبقهبندیکننده رأیگیری)
- الگوریتمهای چندکلاسه و چندخروجی (طبقهبندی چندکلاسه و چندبرچسبی، طبقهبندی چندکلاسه-چندخروجی)
- فرآیندهای گاوسی
- درختهای تصمیم
- روشهای مجموعهای (voting Classifier)
- الگوریتمهای چندکلاسه و چندخروجی (طبقهبندی چندکلاسه و چندبرچسبه، طبقهبندی چندکلاسه-چندخروجی)
> شما همچنین میتوانید از [شبکههای عصبی برای طبقهبندی دادهها](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) استفاده کنید، اما این موضوع خارج از محدوده این درس است.
> همچنین میتوانید از [شبکههای عصبی برای طبقهبندی دادهها استفاده کنید](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)، اما این خارج از محدوده این درس است.
### کدام طبقهبندیکننده را انتخاب کنیم؟
### کدام طبقهبند را انتخاب کنیم؟
پس، کدام طبقهبندیکننده را باید انتخاب کنید؟ اغلب، اجرای چندین طبقهبندیکننده و جستجوی نتیجه خوب راهی برای آزمایش است. Scikit-learn یک [مقایسه کنار هم](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) روی یک مجموعه داده ایجاد شده ارائه میدهد که KNeighbors، SVC به دو روش، GaussianProcessClassifier، DecisionTreeClassifier، RandomForestClassifier، MLPClassifier، AdaBoostClassifier، GaussianNB و QuadraticDiscrinationAnalysis را مقایسه میکند و نتایج را به صورت تصویری نشان میدهد:
پس، کدام طبقهبند را باید انتخاب کنید؟ اغلب، اجرای چند تا و جستجو برای نتیجه خوب روش خوبی برای آزمایش است. Scikit-learn یک [مقایسه کنار هم](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) روی یک مجموعه داده ایجاد شده ارائه میدهد که KNeighbors، دو روش SVC، GaussianProcessClassifier، DecisionTreeClassifier، RandomForestClassifier، MLPClassifier، AdaBoostClassifier، GaussianNB و QuadraticDiscrinationAnalysis را مقایسه کرده و نتایج را بهصورت تصویری نشان میدهد:
> AutoML این مشکل را به خوبی حل میکند و این مقایسهها را در فضای ابری اجرا میکند و به شما اجازه میدهد بهترین الگوریتم را برای دادههای خود انتخاب کنید. آن را [اینجا امتحان کنید](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML این مشکل را به خوبی با اجرای این مقایسهها در فضای ابری حل میکند، که به شما امکان میدهد بهترین الگوریتم را برای دادههای خود انتخاب کنید. آن را [اینجا](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) امتحان کنید.
### یک رویکرد بهتر
### رویکردی بهتر
یک روش بهتر از حدس زدن بیهدف، دنبال کردن ایدههای موجود در این [برگه تقلب یادگیری ماشین](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) قابل دانلود است. در اینجا، متوجه میشویم که برای مشکل چندکلاسه ما، چند گزینه داریم:
یک روش بهتر از حدس زدن کورکورانه، پیروی از ایدههای این [برگه تقلب یادگیری ماشین](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) قابل دانلود است. در اینجا، کشف میکنیم که برای مسئله چندکلاسه خود، چند انتخاب داریم:

> بخشی از برگه تقلب الگوریتم مایکروسافت، گزینههای طبقهبندی چندکلاسه را نشان میدهد

> بخشی از برگه تقلب الگوریتم مایکروسافت، جزئیات گزینههای طبقهبندی چندکلاسه
✅ این برگه تقلب را دانلود کنید، چاپ کنید و روی دیوار خود آویزان کنید!
✅ این برگه تقلب را دانلود، چاپ کنید و روی دیوار خود آویزان کنید!
### استدلال
بیایید ببینیم آیا میتوانیم با توجه به محدودیتهایی که داریم، راهحلهای مختلف را بررسی کنیم:
بیایید ببینیم آیا میتوانیم رویکردهای مختلف را با توجه به محدودیتهایی که داریم استدلال کنیم:
- **شبکههای عصبی سنگین هستند**. با توجه به مجموعه داده پاک اما حداقلی ما و این واقعیت که آموزش را به صورت محلی از طریق نوتبوکها اجرا میکنیم، شبکههای عصبی برای این وظیفه سنگین هستند.
- **طبقهبندیکننده دوکلاسه مناسب نیست**. ما از طبقهبندیکننده دوکلاسه استفاده نمیکنیم، بنابراین گزینه one-vs-all حذف میشود.
- **درخت تصمیمگیری یا رگرسیون لجستیک ممکن است کار کند**. یک درخت تصمیمگیری ممکن است کار کند، یا رگرسیون لجستیک برای دادههای چندکلاسه.
- **درختهای تصمیمگیری تقویتشده چندکلاسه مشکل دیگری را حل میکنند**. درخت تصمیمگیری تقویتشده چندکلاسه بیشتر برای وظایف غیرپارامتری مناسب است، مانند وظایفی که برای ایجاد رتبهبندی طراحی شدهاند، بنابراین برای ما مفید نیست.
- **شبکههای عصبی خیلی سنگین هستند**. با توجه به مجموعه داده تمیز اما کوچک ما و اینکه آموزش به صورت محلی از طریق نوتبوکها انجام میشود، شبکههای عصبی برای این کار سنگین است.
- **طبقهبند دوکلاسه نداریم**. ما از طبقهبند دوکلاسه استفاده نمیکنیم، پس روش یکدرمیان را کنار میگذاریم.
- **درخت تصمیم یا رگرسیون لجستیک میتواند کار کند**. درخت تصمیم ممکن است موثر باشد، یا رگرسیون لجستیک برای دادههای چندکلاسه.
- **درخت تصمیم تقویتشده چندکلاسه مسئله متفاوتی را حل میکند**. درخت تصمیم تقویتشده چندکلاسه بیشتر برای کارهای غیرپارامتریک مناسب است، مثلاً وظایف طراحیشده برای ساخت رتبهبندی، پس برای ما مفید نیست.
### استفاده از Scikit-learn
### استفاده از Scikit-learn
ما از Scikit-learn برای تحلیل دادههای خود استفاده خواهیم کرد. با این حال، روشهای زیادی برای استفاده از رگرسیون لجستیک در Scikit-learn وجود دارد. به [پارامترهایی که باید تنظیم شوند](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) نگاهی بیندازید.
ما از Scikit-learn برای تحلیل دادههای خود استفاده خواهیم کرد. اما راههای زیادی برای استفاده از رگرسیون لجستیک در Scikit-learn وجود دارد. نگاهی به [پارامترهایی که باید ارسال کنید](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) بیندازید.
به طور کلی دو پارامتر مهم وجود دارد - `multi_class` و `solver` - که باید مشخص شوند، زمانی که از Scikit-learn میخواهیم رگرسیون لجستیک انجام دهد. مقدار `multi_class`رفتار خاصی را اعمال میکند. مقدار solver مشخص میکند که از کدام الگوریتم استفاده شود. همه solverها نمیتوانند با همه مقادیر `multi_class` جفت شوند.
اساساً دو پارامتر مهم - `multi_class` و `solver` - وجود دارد که باید مشخص کنیم وقتی از Scikit-learn میخواهیم رگرسیون لجستیک انجام دهد. مقدار `multi_class`نوع خاصی از رفتار را اعمال میکند. مقدار solver الگوریتم مورد استفاده است. همه حلکنندهها نمیتوانند با همه `multi_class`ها جفت شوند.
طبق مستندات، در حالت چندکلاسه، الگوریتم آموزش:
- **از طرح one-vs-rest (OvR) استفاده میکند**، اگر گزینه `multi_class` روی `ovr` تنظیم شده باشد.
- **از ضرر آنتروپی متقاطع استفاده میکند**، اگر گزینه `multi_class` روی `multinomial` تنظیم شده باشد. (در حال حاضر گزینه `multinomial` فقط توسط solverهای ‘lbfgs’, ‘sag’, ‘saga’ و ‘newton-cg’ پشتیبانی میشود.)
- **از طرح یکدرمیان (OvR) استفاده میکند**، اگر گزینه `multi_class` روی `ovr` تنظیم شود
- **از تابع هزینه آنتروپی متقاطع استفاده میکند**، اگر گزینه `multi_class` روی `multinomial` تنظیم شود. (فعلاً گزینه `multinomial` فقط توسط حلکنندههای ‘lbfgs’, ‘sag’, ‘saga’ و ‘newton-cg’ پشتیبانی میشود.)"
> 🎓 'طرح' در اینجا میتواند 'ovr' (one-vs-rest) یا 'multinomial' باشد. از آنجا که رگرسیون لجستیک واقعاً برای پشتیبانی از طبقهبندی دودویی طراحی شده است، این طرحها به آن اجازه میدهند وظایف طبقهبندی چندکلاسه را بهتر مدیریت کند. [منبع](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 این 'طرح' اینجا میتواند 'ovr' (یکدرمیان) یا 'multinomial' باشد. از آنجا که رگرسیون لجستیک در اصل برای طبقهبندی دودویی طراحی شده است، این طرحها به آن کمک میکنند تا بهتر وظایف طبقهبندی چندکلاسه را مدیریت کند. [منبع](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'solver' به عنوان "الگوریتمی که در مسئله بهینهسازی استفاده میشود" تعریف شده است. [منبع](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'حلکننده' به عنوان "الگوریتمی که در مسئله بهینهسازی استفاده میشود" تعریف شده است. [منبع](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
Scikit-learn این جدول را ارائه میدهد تا توضیح دهد چگونه solverها چالشهای مختلفی که توسط ساختارهای مختلف داده ارائه میشوند را مدیریت میکنند:
Scikit-learn این جدول را برای توضیح چگونگی برخورد حلکنندهها با چالشهای مختلف ناشی از ساختارهای مختلف داده ارائه میدهد:
از آنجا که شما از حالت چندکلاسه استفاده میکنید، باید انتخاب کنید که از کدام _طرح_ استفاده کنید و کدام _solver_ را تنظیم کنید. از LogisticRegression با تنظیم multi_class روی `ovr` و solver روی `liblinear` برای آموزش استفاده کنید.
از آنجا که شما از حالت چندکلاسه استفاده میکنید، باید انتخاب کنید چه _طرحی_ استفاده شود و چه _حلکنندهای_ تنظیم شود. از LogisticRegression با تنظیمات چندکلاسه و حلکننده **liblinear** برای آموزش استفاده کنید.
1. یک رگرسیون لجستیک با تنظیم multi_class روی `ovr` و solver روی `liblinear` ایجاد کنید:
۱. یک رگرسیون لجستیک با `multi_class` برابر `ovr` و حلکننده برابر `liblinear` بسازید:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ یک solver متفاوت مانند `lbfgs` را امتحان کنید که اغلب به صورت پیشفرض تنظیم میشود.
توجه داشته باشید، از تابع [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) در Pandas برای مسطح کردن دادههای خود در صورت نیاز استفاده کنید.
دقت این مدل بیش از **۸۰٪** است!
✅ یک حلکننده دیگر مثل `lbfgs` که معمولا به صورت پیشفرض تنظیم میشود را امتحان کنید
۱. میتوانید عملکرد این مدل را با آزمایش یک سطر داده (#۵۰) مشاهده کنید:
> توجه کنید، از تابع [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) پانداها برای صاف کردن دادهها در صورت نیاز استفاده کنید.
دقت بالای **۸۰٪** خوبی دارد!
۱. میتوانید این مدل را با تست یک سطر داده (#50) در عمل ببینید:
در این درس، از دادههای پاکسازیشده خود برای ساخت یک مدل یادگیری ماشین استفاده کردید که میتواند یک غذای ملی را بر اساس مجموعهای از مواد اولیه پیشبینی کند. زمانی را صرف کنید تا گزینههای مختلفی که Scikit-learn برای طبقهبندی دادهها ارائه میدهد بررسی کنید. مفهوم 'solver' را عمیقتر بررسی کنید تا بفهمید پشت صحنه چه اتفاقی میافتد.
در این درس، با استفاده از دادههای تمیز شده خود، مدلی برای یادگیری ماشین ساختید که میتواند غذاهای ملی را بر اساس مجموعهای از مواد تشکیل دهنده پیشبینی کند. زمانی را صرف خواندن گزینههای بسیاری کنید که Scikit-learn برای طبقهبندی دادهها ارائه میدهد. عمیقتر به مفهوم «حلکننده» (solver) بپردازید تا بفهمید پشت صحنه چه میگذرد.
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
## مرور و مطالعه شخصی
## بازبینی و مطالعه خودآموز
ریاضیات پشت رگرسیون لجستیک را در [این درس](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) بیشتر بررسی کنید.
کمی بیشتر در ریاضیات پشت رگرسیون لجستیک در [این درس](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) عمیق شوید.
## تکلیف
## تکلیف
[مطالعه حلکنندهها](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) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نواقصی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات مهم، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که از استفاده از این ترجمه به وجود آید، نیستیم.
> این مخزن شامل بیش از ۵۰ ترجمه زبان است که به طور قابل توجهی اندازه دانلود را افزایش میدهد. برای کلون کردن بدون ترجمهها، از sparse checkout استفاده کنید:
> این مخزن شامل بیش از ۵۰ ترجمه زبانی است که حجم دانلود را به طور قابل توجهی افزایش میدهد. برای کلون بدون ترجمهها، از sparse checkout استفاده کنید:
ما یک سری یادگیری در دیسکورد درباره هوش مصنوعی در حال اجرا داریم، بیشتر بیاموزید و به ما بپیوندید در [سری یادگیری با هوش مصنوعی](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵.شما نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را خواهید گرفت.
ما مجموعهای از جلسات یادگیری با هوش مصنوعی در دیسکورد داریم، برای اطلاعات بیشتر و پیوستن به ما به [دوره یادگیری با هوش مصنوعی](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ مراجعه کنید. در این دوره نکات و ترفندهای استفاده از GitHub Copilot برای علوم داده دریافت خواهید کرد.


# آموزش ماشین یادگیری برای مبتدیان
# یادگیری ماشین برای مبتدیان - یک دوره آموزشی
> 🌍 سفر در سراسر جهان در حالی که با فرهنگهای مختلف جهان ماشین یادگیری را بررسی میکنیم 🌍
> 🌍 سفر به دور دنیا در حالی که یادگیری ماشین را از منظر فرهنگهای مختلف جهان بررسی میکنیم 🌍
حامیان ابر در مایکروسافت خوشحالند که یک برنامه درسی ۱۲ هفتهای با ۲۶ درس در مورد **ماشین یادگیری** ارائه دهند. در این برنامه درسی، درباره چیزی که گاهی اوقات به آن **ماشین یادگیری کلاسیک** گفته میشود، با استفاده عمدتاً از کتابخانه Scikit-learn و اجتناب از یادگیری عمیق که در [برنامه درسی AI برای مبتدیان](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" در گوشه بالا سمت راست صفحه کلیک کنید.
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)
> [برای دسترسی به تمام منابع اضافی این دوره از مجموعه Microsoft Learn ما دیدن کنید](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **نیاز به کمک دارید؟** برای حل مشکلات رایج مربوط به نصب، راهاندازی و اجرای دروس، راهنمای [عیبیابی](TROUBLESHOOTING.md) ما را بررسی کنید.
> 🔧 **نیاز به کمک دارید؟** راهنمای [عیبیابی](TROUBLESHOOTING.md) ما را برای حل مشکلات متداول نصب، راهاندازی و اجرای دروس بررسی کنید.
**[دانشآموزان](https://aka.ms/student-page)**، برای استفاده از این برنامه درسی، کل مخزن را به حساب GitHub خود فورک کرده و تمرینها را به تنهایی یا با گروه انجام دهید:
**[دانشآموزان](https://aka.ms/student-page)**، برای استفاده از این دوره، کل مخزن را در حساب GitHub خود فورک کنید و تمرینها را به تنهایی یا به صورت گروهی انجام دهید:
- با پرسشنامه پیشدرس شروع کنید.
- درس را بخوانید و فعالیتها را کامل کنید، در هر مرحله از بررسی دانش توقف کرده و تأمل کنید.
- سعی کنید پروژهها را با درک دروس ایجاد کنید تا فقط اجرای کد راه حل؛ البته کد راه حل در پوشههای `/solution` در هر درس مبتنی بر پروژه موجود است.
- پرسشنامه پایان درس را انجام دهید.
- با آزمون پیشدرس شروع کنید.
- درس را مطالعه کرده و فعالیتها را انجام دهید، در هر بخش مکث کنید و تفکر کنید.
- سعی کنید پروژهها را با فهمیدن درسها ایجاد کنید نه با اجرای کد راهحل؛ البته آن کدها در پوشههای `/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) را دنبال کنید.
> برای مطالعه بیشتر، توصیه میکنیم این ماژولها و مسیرهای یادگیری [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) برای استفاده از این دوره ارائه دادهایم.
---
## ویدیوهای راهنمای مرحله به مرحله
## ویدیوهای آموزشی
برخی از دروس به صورت ویدیوهای کوتاه موجود هستند. میتوانید همه این ویدیوها را داخل درسها بیابید یا در [لیست پخش ML برای مبتدیان در کانال یوتیوب توسعهدهندگان مایکروسافت](https://aka.ms/ml-beginners-videos) با کلیک روی تصویر زیر مشاهده کنید.
برخی از دروس به صورت ویدیوی کوتاه در دسترس هستند. میتوانید همه این ویدیوها را درون خود درسها مشاهده کنید، یا در [فهرست پخش ML for Beginners در کانال یوتیوب مایکروسافت دولوپر](https://aka.ms/ml-beginners-videos) با کلیک روی تصویر زیر ببینید.
[](https://aka.ms/ml-beginners-videos)
> 🎥 برای دیدن ویدیویی درباره پروژه و افراد سازنده آن روی تصویر بالا کلیک کنید!
> 🎥 برای مشاهده ویدیویی درباره پروژه و تیم سازنده آن روی تصویر بالا کلیک کنید!
---
## روش آموزشی
## روش تدریس
ما در ساخت این برنامه درسی دو اصل آموزشی را انتخاب کردهایم: اطمینان از اینکه برنامه آموزشی **مبتنی بر پروژه و عملی** است و اینکه شامل **پرسشنامههای مکرر** باشد. علاوه بر این، این برنامه درسی یک **موضوع مشترک** دارد تا انسجام پیدا کند.
در طراحی این دوره، دو اصل آموزشی را انتخاب کردهایم: اطمینان از آنکه دوره به صورت عملی و **مبتنی بر پروژه** باشد و اینکه شامل **آزمونهای مکرر** باشد. علاوه بر این، این دوره یک **تم مشترک** دارد تا انسجام ایجاد کند.
تضمین تطابق محتوا با پروژهها باعث جذابتر شدن فرایند برای دانشآموزان شده و حفظ مفاهیم را افزایش میدهد. همچنین، پرسشنامه کماهمیت قبل از کلاس قصد دانشآموز برای یادگیری موضوع را میسازد، در حالی که پرسشنامه دوم پس از کلاس ماندگاری بیشتری را تضمین میکند. این برنامه درسی طوری طراحی شده است که انعطافپذیر و سرگرمکننده باشد و میتوان آن را به طور کامل یا جزئی دنبال کرد. پروژهها از کوچک شروع شده و تا پایان چرخه ۱۲ هفتهای به صورت افزایشی پیچیده میشوند. این برنامه درسی همچنین شامل پینوشت درباره کاربردهای دنیای واقعی ماشین یادگیری است که میتواند به عنوان اعتبار اضافی یا مبنایی برای بحث استفاده شود.
با تضمین تطابق محتوا با پروژهها، فرآیند برای دانشآموزان جذابتر شده و حفظ مفاهیم افزایش مییابد. علاوه بر این، یک آزمون ساده پیش از کلاس، نیت دانشآموز را به سمت یادگیری قرار میدهد، و آزمون دوم پس از کلاس به حفظ بیشتر کمک میکند. این دوره به گونهای طراحی شده که انعطافپذیر و سرگرمکننده بوده و میتوان آن را کامل یا بخشی از آن را دنبال کرد. پروژهها از ابتدایی شروع شده و در پایان چرخه ۱۲ هفتهای پیچیدهتر میشوند. این دوره همچنین پینوشتهایی درباره کاربردهای واقعی یادگیری ماشین دارد که میتوانند به عنوان اعتبار اضافی یا مبنای بحث استفاده شوند.
> ما [کد رفتار](CODE_OF_CONDUCT.md)، [راهنمای مشارکت](CONTRIBUTING.md)، [ترجمهها](..)، و [عیبیابی](TROUBLESHOOTING.md) را در اختیار داریم. بازخورد سازنده شما را خوشآمد میگوییم!
> راهنمای [رفتار حرفهای](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md)، [ترجمهها](..) و [عیبیابی](TROUBLESHOOTING.md) ما را بیابید. ما بازخورد سازندهی شما را خوشآمد میگوییم!
- [آزمون گرمکننده پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
- درس مکتوب
- در دروس مبتنی بر پروژه، راهنمای گام به گام ساخت پروژه
- بررسی دانش
- برای دروس مبتنی بر پروژه، راهنمای گامبهگام ساخت پروژه
- بررسیهای دانش
- یک چالش
- خواندن مکمل
- تکلیف
- مطالعه تکمیلی
- تمرین
- [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
> **یادداشتی درباره زبانها**: این درسها عمدتاً به زبان پایتون نوشته شدهاند، اما بسیاری از آنها به زبان R نیز در دسترس هستند. برای تکمیل یک درس R، به پوشه `/solution` بروید و به دنبال درسهای R بگردید. آنها دارای پسوند .rmd هستند که نمایانگر یک فایل **R Markdown** است که میتوان آن را به سادگی به صورت جاسازی `بخشهای کد` (از R یا زبانهای دیگر) و یک `هدر YAML` (که راهنمایی میکند چگونه خروجیها مانند PDF قالببندی شوند) در یک سند `Markdown` تعریف کرد. بنابراین، این یک چارچوب نمونه برای نگارش در علوم داده است زیرا به شما اجازه میدهد کد خود، خروجی آن و افکارتان را با نوشتن آنها در مارکداون، ترکیب کنید. همچنین، اسناد R Markdown میتوانند به فرمتهای خروجی مانند PDF، HTML یا Word تبدیل شوند.
> **یادداشتی درباره آزمونها**: همه آزمونها در [پوشه برنامه آزمون](../../quiz-app) قرار دارند، در مجموع ۵۲ آزمون با سه سوال هر کدام. آنها از داخل درسها لینک شدهاند اما برنامه آزمون را میتوان به صورت محلی هم اجرا کرد؛ دستورالعمل را در پوشه `quiz-app` دنبال کنید تا به صورت محلی میزبانی کنید یا در Azure مستقر کنید.
| شماره درس | موضوع | گروهبندی درس | اهداف یادگیری | درس مرتبط | نویسنده |
| ۰۱ | مقدمهای بر یادگیری ماشین | [Introduction](1-Introduction/README.md) | مفاهیم پایه یادگیری ماشین را یاد بگیرید | [درس](1-Introduction/1-intro-to-ML/README.md) | محمد |
| ۰۲ | تاریخچه یادگیری ماشین | [Introduction](1-Introduction/README.md) | تاریخچه زمینه یادگیری ماشین را بیاموزید | [درس](1-Introduction/2-history-of-ML/README.md) | جن و امی |
| ۰۳ | عدالت و یادگیری ماشین | [Introduction](1-Introduction/README.md) | مسائل فلسفی مهم عدالت که دانشآموزان باید هنگام ساخت و بکارگیری مدلهای یادگیری ماشین در نظر بگیرند چیست؟ | [درس](1-Introduction/3-fairness/README.md) | تومومی |
| ۰۴ | تکنیکهای یادگیری ماشین | [Introduction](1-Introduction/README.md) | پژوهشگران یادگیری ماشین از چه تکنیکهایی برای ساخت مدلهای یادگیری ماشین استفاده میکنند؟ | [درس](1-Introduction/4-techniques-of-ML/README.md) | کریس و جن |
| ۰۵ | مقدمهای بر رگرسیون | [Regression](2-Regression/README.md) | شروع به کار با پایتون و Scikit-learn برای مدلهای رگرسیون | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • اریک وانجائو |
| ۰۶ | قیمتهای کدو شمال آمریکا 🎃 | [Regression](2-Regression/README.md) | دادهها را برای یادگیری ماشین، تمیز و مصورسازی کنید | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • اریک وانجائو |
| ۰۷ | قیمتهای کدو شمال آمریکا 🎃 | [Regression](2-Regression/README.md) | مدلهای رگرسیون خطی و چندجملهای بسازید | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن و دیمیتری • اریک وانجائو |
| ۰۸ | قیمتهای کدو شمال آمریکا 🎃 | [Regression](2-Regression/README.md) | مدل رگرسیون لجستیک بسازید | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • اریک وانجائو |
| ۰۹ | برنامه وب 🔌 | [Web App](3-Web-App/README.md) | ساخت یک برنامه وب برای استفاده از مدل آموزش دیده شما | [Python](3-Web-App/1-Web-App/README.md) | جن |
| ۱۰ | مقدمهای بر طبقهبندی | [Classification](4-Classification/README.md) | دادههای خود را تمیز، آماده و مصور کنید؛ مقدمهای بر طبقهبندی | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن و کاسی • اریک وانجائو |
| ۱۱ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | مقدمهای بر طبقهبندها | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن و کاسی • اریک وانجائو |
| ۱۲ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | طبقهبندهای بیشتر | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن و کاسی • اریک وانجائو |
| ۱۳ | غذاهای خوشمزه آسیایی و هندی 🍜 | [Classification](4-Classification/README.md) | ساخت یک برنامه وب توصیهگر با استفاده از مدل خود | [Python](4-Classification/4-Applied/README.md) | جن |
| ۱۴ | مقدمهای بر خوشهبندی | [Clustering](5-Clustering/README.md) | دادهها را تمیز، آماده و مصور کنید؛ مقدمهای بر خوشهبندی | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • اریک وانجائو |
| ۱۵ | اکتشاف سلیقههای موسیقی نیجریهای 🎧 | [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) | جن • اریک وانجائو |
| ۱۶ | مقدمهای بر پردازش زبان طبیعی ☕️ | [Natural language processing](6-NLP/README.md) | مبانی پردازش زبان طبیعی را با ساخت یک ربات ساده یاد بگیرید | [Python](6-NLP/1-Introduction-to-NLP/README.md) | استفان |
| ۱۷ | وظایف متداول NLP ☕️ | [Natural language processing](6-NLP/README.md) | دانش خود را درباره وظایف معمول پردازش زبان طبیعی که هنگام برخورد با ساختارهای زبانی انتظار میرود، عمیقتر کنید | [Python](6-NLP/2-Tasks/README.md) | استفان |
| ۱۸ | ترجمه و تحلیل احساسات ♥️ | [Natural language processing](6-NLP/README.md) | ترجمه و تحلیل احساسات با جین آستن | [Python](6-NLP/3-Translation-Sentiment/README.md) | استفان |
| ۱۹ | هتلهای عاشقانه اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسیهای هتل ۱ | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | استفان |
| ۲۰ | هتلهای عاشقانه اروپا ♥️ | [Natural language processing](6-NLP/README.md) | تحلیل احساسات با بررسیهای هتل ۲ | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | استفان |
| ۲۱ | مقدمهای بر پیشبینی دادههای سری زمانی | [Time series](7-TimeSeries/README.md) | مقدمهای بر پیشبینی سریهای زمانی | [Python](7-TimeSeries/1-Introduction/README.md) | فرانچسکا |
| ۲۲ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با ARIMA | [Time series](7-TimeSeries/README.md) | پیشبینی سری زمانی با ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانچسکا |
| ۲۳ | ⚡️ مصرف برق جهان ⚡️ - پیشبینی سری زمانی با SVR | [Time series](7-TimeSeries/README.md) | پیشبینی سری زمانی با رگرسیون بردار پشتیبان | [Python](7-TimeSeries/3-SVR/README.md) | آنربان |
| ۲۴ | مقدمهای بر یادگیری تقویتی | [Reinforcement learning](8-Reinforcement/README.md) | مقدمهای بر یادگیری تقویتی با Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | دیمیتری |
| ۲۵ | کمک به پیتر برای فرار از گرگ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Gym یادگیری تقویتی | [Python](8-Reinforcement/2-Gym/README.md) | دیمیتری |
| پایاننامه | سناریوها و کاربردهای یادگیری ماشین در دنیای واقعی | [ML in the Wild](9-Real-World/README.md) | کاربردهای جالب و روشنگرانه یادگیری ماشین کلاسیک در دنیای واقعی | [درس](9-Real-World/1-Applications/README.md) | تیم |
| پایاننامه | اشکالزدایی مدل در یادگیری ماشین با داشبورد RAI | [ML in the Wild](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)
> **یک یادداشت درباره زبانها**: این درسها عمدتاً به زبان پایتون نوشته شدهاند، اما بسیاری نیز به زبان R در دسترس هستند. برای تکمیل یک درس R، به پوشهی`/solution` بروید و به دنبال درسهای R بگردید. اینها شامل پسوند .rmd هستند که نشاندهنده یک فایل **R Markdown** است که به سادگی میتوان آن را به عنوان جاسازی `کد چانکها` (از R یا زبانهای دیگر) و یک `هدر YAML` (که راهنمای فرمتبندی خروجیها مانند PDF است) در یک `سند Markdown` تعریف کرد. بنابراین، این یک چارچوب نمونه برای نگارش در علوم داده است چون به شما امکان میدهد کد خود، خروجی آن و افکارتان را با نوشتن به فرمت Markdown ترکیب کنید. علاوه بر این، اسناد R Markdown میتوانند به فرمتهای خروجی مانند PDF، HTML یا Word تبدیل شوند.
> **یک یادداشت درباره آزمونها**: تمام آزمونها در [پوشه برنامه Quiz](../../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) | مسائل فلسفی مهم پیرامون عدالت که دانشآموزان باید هنگام ساخت و بکارگیری مدلهای ML مدنظر داشته باشند؟ | [درس](1-Introduction/3-fairness/README.md) | تومومی |
| ۰۴ | تکنیکهای یادگیری ماشین | [معرفی](1-Introduction/README.md) | پژوهشگران ML از چه تکنیکهایی برای ساخت مدلهای یادگیری ماشین استفاده میکنند؟| [درس](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) | تحلیل احساسات با نظرات هتل 1 | [پایتون](6-NLP/4-Hotel-Reviews-1/README.md) | استفن |
| ۲۰ | هتلهای عاشقانه اروپا ♥️ | [پردازش زبان طبیعی](6-NLP/README.md) | تحلیل احساسات با نظرات هتل 2 | [پایتون](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 | [یادگیری ماشین در جهان واقعی](9-Real-World/README.md) | کاربردهای جالب و آشکار یادگیری ماشین کلاسیک در دنیای واقعی | [درس](9-Real-World/1-Applications/README.md) | تیم |
| پستاسکریپت | اشکالزدایی مدل در ML با استفاده از داشبورد RAI | [یادگیری ماشین در جهان واقعی](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` را تایپ کنید. وبسایت روی پورت 3000 روی لوکالهاست شما سرو خواهد شد: `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)
---
### سری هوش مصنوعی مولد
[](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)
[-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://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?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 بپیوندید. این یک جامعه حمایتی است که سوالات در آن پذیرفته میشود و دانش به طور آزاد به اشتراک گذاشته میشود.
اگر در یادگیری یادگیری ماشین یا ساخت برنامههای هوش مصنوعی به مشکل برخوردید یا سوالی داشتید، نگران نباشید — کمک در دسترس است.
میتوانید در بحثها با دیگر یادگیرندگان و توسعهدهندگان شرکت کنید، سوالات خود را بپرسید و ایدههایتان را با جامعه به اشتراک بگذارید.
- به جامعه بپیوندید تا سوالات خود را مطرح کنید و همراه با دیگران یاد بگیرید
- درباره مفاهیم یادگیری ماشین و ایدههای پروژه بحث کنید
- از توسعهدهندگان باتجربه راهنمایی بگیرید
یک جامعه حمایتگرانه راهی عالی برای رشد مهارتها و حل سریعتر مشکلات است.
[](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) ترجمه شده است. در حالی که ما برای دقت تلاش میکنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نواقص باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوءتفاهم یا تفسیر نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
# سکائیکیٹ-لرن کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن کے چار طریقے
# Scikit-learn کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن کے چار طریقے
## ابتدائی نوٹ
لینیئر ریگریشن اُس وقت استعمال کی جاتی ہے جب ہم **عددی قیمت** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔
یہ کام اس طرح کرتا ہے کہ وہ ایک سیدھی لائن تلاش کرتا ہے جو ان پٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کی بہترین نمائندگی کرتی ہو۔
لکیری ریگریشن اس وقت استعمال ہوتی ہے جب ہم ایک **عددی قدر** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔
یہ اس طرح کام کرتی ہے کہ ایک سیدھی لائن تلاش کی جاتی ہے جو انپٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کو بہترین انداز میں ظاہر کرے۔
اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیتے ہیں اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔

> انفراگرافک از [دسنی مدیپالی](https://twitter.com/dasani_decoded)
## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ml/)
> ### [یہ سبق R میں بھی دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیں گے اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔

> انفوگرافک بنائی گئی توسط [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 کے ذریعے تصویری شکل میں بھی دیکھا ہے۔
اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی سے جا سکتے ہیں۔ جہاں تجزیاتی تصویر کشی (ویژولائزیشن) آپ کو ڈیٹا کو سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_سے آتی ہے۔ ماڈلز تاریخی ڈیٹا پر تربیت دیے جاتے ہیں تاکہ خود بخود ڈیٹا کے باہمی تعلقات کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے نتائج کی پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔
اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی میں جانے کے لیے تیار ہیں۔ جب کہ بصری نمائندگی آپ کو ڈیٹا سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_میں ہے۔ ماڈلز ماضی کے ڈیٹا پر تربیت دیتے ہیں تاکہ خود بخود ڈیٹا کی انحصاریت کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔
اس سبق میں، آپ دو اقسام کی ریگریشن کے بارے میں مزید سیکھیں گے: _بنیادی لینیئر ریگریشن_ اور _پولی نومیل ریگریشن_، ساتھ ہی ان تکنیکوں کے پیچھے کچھ ریاضی کے اصول بھی۔ یہ ماڈل ہمیں مختلف ان پٹ ڈیٹا کی بنیاد پر کدو کی قیمتیں پیش گوئی کرنے کی اجازت دیں گے۔
اس سبق میں، آپ دو قسم کی ریگریشنز کے بارے میں مزید جانیں گے: _بنیادی لکیری ریگریشن_ اور _کثیر رکنی ریگریشن_، اور ان تکنیکوں کے پیچھے کچھ ریاضی بھی سیکھیں گے۔ یہ ماڈلز ہمیں مختلف انپٹ ڈیٹا کے مطابق کدو کی قیمت کی پیش گوئی کرنے کی اجازت دیں گے۔
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
[](https://youtu.be/CRxFT8oTDMg "مشین لرننگ مبتدیوں کے لیے - لکیری ریگریشن کو سمجھنا")
> 🎥 لینیئر ریگریشن کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لکیری ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔
> اس نصاب میں، ہم حساب کی کم سے کم معلومات فرض کرتے ہیں اور اسے دوسرے شعبوں سے آنے والے طلباء کے لیے قابل رسائی بنانے کی کوشش کرتے ہیں، لہٰذا نوٹس، 🧮 حوالہ جات، خاکے، اور دیگر تعلیمی اوزار پر غور کریں جو سمجھنے میں مددگار ہوں۔
> اس نصاب کے دوران، ہم فرض کرتے ہیں کہ ریاضی کی معلومات بہت کم ہیں، اور کوشش کرتے ہیں کہ اسے ان طلباء کے لیے قابل فہم بنایا جائے جو دوسرے شعبوں سے آ رہے ہیں، لہٰذا نوٹسز، 🧮 کال آؤٹس، خاکے، اور دیگر تعلیمی اوزار پر دھیان دیں جو سمجھنے میں مدد دیں۔
### پیشگی معلومات
### پیشگی شرائط
اب تک آپ کو کدو کے ڈیٹا کی ساخت کا اندازہ ہو چکا ہوگا جسے ہم دیکھ رہے ہیں۔ آپ اسے اس سبق کی _notebook.ipynb_ فائل میں قبل از وقت لوڈ اور صاف شدہ پا سکتے ہیں۔ اس فائل میں کدو کی قیمت بوشل کے حساب سے ایک نئے ڈیٹا فریم میں ظاہر کی گئی ہے۔ یقینی بنائیں کہ آپ یہ نوٹ بکس Visual Studio Code میں کرنلز پر چلا سکتے ہیں۔
آپ کو اب تک کدو کے ڈیٹا کے ڈھانچے سے واقف ہونا چاہیے جسے ہم جانچ رہے ہیں۔ آپ اسے اس سبق کی _notebook.ipynb_ فائل میں پری لوڈڈ اور پری کلین کیا ہوا پا سکتے ہیں۔ فائل میں، کدو کی قیمت فی بوشل نئے ڈیٹافریم میں دکھائی گئی ہے۔ اس بات کو یقینی بنائیں کہ آپ یہ نوٹ بکس Visual Studio Code کے کرنلز میں چلا سکیں۔
### تیاری
یاد دہانی کے طور پر، آپ یہ ڈیٹا اس لیے لوڈ کر رہے ہیں تاکہ اس سے سوالات کریں۔
یاد دہانی کے طور پر، آپ یہ ڈیٹا لوڈ کر رہے ہیں تاکہ اس سے سوالات پوچھ سکیں۔
- کدو خریدنے کا بہترین وقت کب ہے؟
- چھوٹے کدو کے کیس کی کتنی قیمت متوقع ہے؟
- کیا میں انہیں آدھے بوشل کی ٹوکریوں میں خریدوں یا 1 1/9 بوشل کے ڈبے میں؟
آئیے اس ڈیٹا میں مزید کھوج کریں۔
- کب کدو خریدنا سب سے بہتر وقت ہے؟
- ایک کیس کے منیچر کدو کی قیمت کیا ہوسکتی ہے؟
- کیا مجھے انہیں آدھے بوشل ٹوکریوں میں خریدنا چاہیے یا 1 1/9 بوشل باکس کے حساب سے؟
آئیے اس ڈیٹا میں مزید کھنگالیں۔
پچھلے سبق میں، آپ نے پانڈاز ڈیٹا فریم بنایا اور اسے اصل ڈیٹا سیٹ کے ایک حصے سے بھر دیا، قیمتوں کو بوشل کے حساب سے معیاری بنایا۔ تاہم، اس طرح آپ کو صرف تقریباً 400 ڈیٹا پوائنٹس ملے اور وہ بھی صرف خزانی مہینوں کے لیے۔
پچھلے سبق میں، آپ نے پانڈا ڈیٹافریم تخلیق کیا اور اصل ڈیٹا سیٹ کے ایک حصے کے ساتھ اسے بھر دیا، قیمتوں کو بوشل کے لحاظ سے یکساں بنایا۔ اس طرح کرنے سے آپ تقریباً 400 ڈیٹا پوائنٹس جمع کر سکے لیکن صرف خزاں کے مہینوں کے لیے۔
اس سبق کے ساتھ پیش کیے گئے نوٹ بک میں بھی دیکھیں۔ ڈیٹا پہلے سے لوڈ اور ابتدائی اسکیٹرپلاٹ بنایا گیا ہے جو مہینے کا ڈیٹا دکھاتا ہے۔ ہو سکتا ہے ہم اسے مزید صاف کرکے ڈیٹا کی نوعیت کے بارے میں مزید تفصیل حاصل کر سکیں۔
اس سبق کی ساتھ پیش آنے والی نوٹ بک میں ہم نے جو ڈیٹا پری لوڈ کیا ہے اسے دیکھیں۔ ڈیٹا پری لوڈ ہے اور مہینے کے ڈیٹا کو دکھانے کے لیے ابتدائی اسکیٹر پلاٹ بھی بنایا گیا ہے۔ شاید ہم ڈیٹا کی نوعیت کے بارے میں زیادہ تفصیل حاصل کر سکیں اگر ہم اسے مزید صاف کریں۔
## ایک لینیئر ریگریشن لائن
## لکیری ریگریشن لائن
جیسے آپ نے سبق 1 میں سیکھا، لینیئر ریگریشن مشق کا مقصد ایک لائن کے گراف پر اظہار کرنا ہے تاکہ:
جیسا کہ آپ نے سبق 1 میں سیکھا، لکیری ریگریشن کا مقصد یہ ہے کہ ایک لائن کھینچی جائے تاکہ:
- **متغیرات کے تعلقات دکھائیں۔** متغیرات کے تعلق کو ظاہر کریں۔
- **پیش گوئیاں کریں۔** صحیح پیش گوئیاں کریں کہ نیا ڈیٹا پوائنٹ اس لائن کے ساتھ کس طرح تعلق رکھے گا۔
- **متغیرات کے تعلقات دکھائے جائیں**۔ متغیرات کے درمیان تعلق دکھائیں
- **پیش گوئیاں کی جائیں**۔ نئی ڈیٹا پوائنٹ کہاں آ سکتی ہے اس کی ٹھیک پیش گوئی کریں۔
یہ معمول ہے کہ **لیسٹ سکوائرز ریگریشن** ایسی لائن کھینچتی ہے۔ "لیسٹ سکوائرز" اصطلاح ہمارے ماڈل کی کل غلطی کو کم کرنے کے عمل کو بیان کرتی ہے۔ ہر ڈیٹا پوائنٹ کی عمودی فاصلہ (جسے بقایا کہا جاتا ہے) اصل پوائنٹ اور ہماری ریگریشن لائن کے درمیان ناپا جاتا ہے۔
یہ عام طور پر **Least-Squares Regression** کا نامی عمل ہوتا ہے کہ اس قسم کی لائن کشید کی جائے۔ “Least-Squares” اصطلاح ماڈل کی کل غلطی کو کم سے کم کرنے کے عمل کی طرف اشارہ کرتی ہے۔ ہر ڈیٹا پوائنٹ کے لیے، ہم اصل نقطہ اور ریگریشن لائن کے درمیان عمودی فاصلہ ناپتے ہیں (جسے ریزیڈیول کہتے ہیں)۔
ہم ان فاصلات کو دو اہم وجوہات کی بنا پر مربع کرتے ہیں:
ہم ان فاصلات کو دو وجوہات کی بنا پر مربع کرتے ہیں:
1. **سمت کی بجائے مقدار:** ہم -5 کی غلطی کو +5 کی غلطی کے برابر سمجھنا چاہتے ہیں۔ مربع کرنے سے تمام قدریں مثبت ہو جاتی ہیں۔
1. **مقدار کی اہمیت سمت سے زیادہ:** ہم چاہتے ہیں کہ -5 کی غلطی کو +5 کی غلطی کی طرح سمجھا جائے۔ مربع کرنے سے تمام قدر مثبت ہوجاتی ہیں۔
2. **آؤٹ لائیرز کی سزا:** مربع کرنے سے بڑی غلطیوں کو زیادہ وزن ملتا ہے، جس سے لائن دور موجود نقاط کے قریب رہتی ہے۔
2. **آؤٹ لائرز کو سزا دینا:** مربع کرنے سے بڑی غلطیوں کو زیادہ وزن ملتا ہے، جو لائن کو ان نقاط کے قریب رکھنے پر مجبور کرتا ہے جو دور ہوتے ہیں۔
پھر ہم تمام مربع شدہ قدروں کو جمع کرتے ہیں۔ ہمارا مقصد وہ خاص لائن تلاش کرنا ہے جہاں یہ مجموعہ سب سے کم (انتہائی کم سے کم قیمت) ہو — اسی لیے اس کا نام "لیسٹ سکوائرز" ہے۔
ہم پھر ان تمام مربعوں کو جمع کرتے ہیں۔ ہمارا ہدف وہ مخصوص لائن تلاش کرنا ہے جہاں یہ مجموعہ کم سے کم ہو (سب سے چھوٹی ممکنہ قیمت)—یعنی "Least-Squares" کا مطلب۔
> **🧮 مجھے ریاضی دکھائیں**
> **🧮 مجھے ریاضی دکھائیں**
>
> یہ لائن، جسے _بہترین فٹ لائن_ کہا جاتا ہے، [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) کے ذریعے بیان کی جا سکتی ہے:
> اس لائن کو، جسے _بہترین فٹ لائن_ کہا جاتا ہے، [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) کے ذریعے ظاہر کیا جا سکتا ہے:
>
> ```
> Y = a + bX
> ```
>
> `X`'وضاحتی متغیر' ہے۔ `Y` 'تابع متغیر' ہے۔ لائن کا ڈھلوان `b` ہے اور `a` y-انٹرسپٹ ہے، جو اس قیمت کی نمائندگی کرتا ہے جب `X = 0` ہو۔
> `X`وضاحتی متغیر ہے۔ `Y` منحصر متغیر ہے۔ لائن کی ڈھلوان `b` ہے اور `a` y-قاطع ہے، جو اس قدر کی وضاحت کرتا ہے جب `X = 0` ہو۔
>
>
>
> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفراگرافک از [جن لوپر](https://twitter.com/jenlooper)
> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفوگرافک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> دوسرے الفاظ میں، اور ہمارے کدو ڈیٹا کے اصل سوال کی طرف اشارہ کرتے ہوئے: "مہینے کے حساب سے بوشل قیمت کی پیش گوئی کریں"، `X` قیمت کی نمائندگی کرے گا اور `Y` فروخت کے مہینے کی۔
> دوسرے الفاظ میں، اور ہمارے کدو کے ڈیٹا کے آغاز کے سوال کی طرف اشارہ کرتے ہوئے: "ہر ماہ فی بوشل کدو کی قیمت کی پیش گوئی کریں"، `X` قیمت کی طرف اشارہ کرے گا اور `Y` فروخت کے مہینے کی طرف۔
> Y کی قیمت کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو یہ لازمی طور پر اپریل ہے! انفراگرافک از [جن لوپر](https://twitter.com/jenlooper)
> Y کی قدر کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو ضرور اپریل ہوگا! انفوگرافک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> لائن کا حساب لگانے والی ریاضی کو ڈھلوان کا مظاہرہ کرنا چاہیے، جو انٹرسپٹ پر بھی منحصر ہوتا ہے، یعنی جب `X = 0` ہو تو `Y` کہاں ہوتا ہے۔
> وہ ریاضی جو لائن کا حساب لگاتی ہے، لائن کی ڈھلوان کو ظاہر کرتی ہے، جو اس قطعۂ حاصل ضرب پر بھی منحصر ہے، یا جہاں `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) ویب سائٹ پر بھی دیکھ سکتے ہیں۔ اس کے علاوہ، [یہ Least-squares کیلکولیٹر](https://www.mathsisfun.com/data/least-squares-calculator.html) ملاحظہ کریں تاکہ دیکھیں کہ اعداد کی قدر لائن کو کیسے متاثر کرتی ہے۔
## تعلق (Correlation)
## ربط
ایک اور اصطلاح جسے سمجھنا ضروری ہے وہ ہے X اور Y متغیرات کے درمیان **Correlation Coefficient**۔ اس کو اسکیٹرپلاٹ کی مدد سے جلدی سے دیکھا جا سکتا ہے۔ اسکیٹرپلاٹ جس میں ڈیٹا پوائنٹس یکساں لائن پر پھیلے ہوں، اس میں تعلق زیادہ ہوتا ہے، لیکن جہاں ڈیٹا پوائنٹس X اور Y میں منتشر ہوں، وہاں تعلق کم ہوتا ہے۔
ایک اور اصطلاح جو سمجھنی ضروری ہے وہ ہے **ربط کا گتانک** جو دیے گئے X اور Y متغیرات کے درمیان ہوتا ہے۔ اس کو اسکیٹر پلاٹ کے ذریعے جلدی سمجھا جا سکتا ہے۔ اگر نقاط قطار میں سیدھے ہوتے ہیں تو ربط زیادہ ہوگا، اور اگر نقاط ہر جگہ منتشر ہوں تو ربط کم ہوگا۔
ایک اچھا لینیئر ریگریشن ماڈل ہوگا، جس کا تعلق کا کوفیشینٹ زیادہ ہو (0 کی بجائے 1 کے قریب)، اور لیسٹ سکوائرز ریگریشن طریقے سے لائن آف ریگریشن کی تشکیل کی گئی ہو۔
ایک اچھا لکیری ریگریشن ماڈل وہی ہوگا جس کا ربط درصد (0 کے مقابلے میں 1 کے نزدیک) زیادہ ہو، اور جسے Least-Squares Regression طریقہ استعمال کرتے ہوئے ریگریشن لائن کے ساتھ بنایا گیا ہو۔
✅ اس سبق کی نوٹ بک چلائیں اور مہینے کے مقابلے قیمت کے اسکیٹرپلاٹ کو دیکھیں۔ کیا آپ کے بصری تجزیے کے مطابق کدو کی فروخت کے لیے مہینے سے قیمت کا تعلق زیادہ ہے یا کم؟ کیا یہ بدلتا ہے اگر آپ `Month` کے بجائے زیادہ باریک پیمانے جیسے *سال کا دن* (یعنی سال کے آغاز سے گزرے دن) استعمال کریں؟
✅ اس سبق کے ساتھ آنے والی نوٹ بک چلائیں اور Month to Price اسکیٹر پلاٹ دیکھیں۔ کیا آپ کے خیال میں مہینے اور کدو کی قیمت کے درمیان ربط زیادہ ہے یا کم، آپ کی بصری تعبیر کے مطابق؟ کیا یہ بدلتا ہے اگر آپ `Month` کی بجائے زیادہ باریک پیمائش استعمال کریں، مثلاً *سال کا دن* (یعنی سال کے آغاز سے دنوں کی تعداد)؟
ذیل میں کوڈ میں، ہم فرض کریں گے کہ ہم نے ڈیٹا صاف کر لیا ہے اور ہمیں ایک ڈیٹا فریم مل گیا ہے جس کا نام `new_pumpkins` ہے، جو درج ذیل جیسا ہے:
نیچے دیے گئے کوڈ میں، ہم فرض کریں گے کہ ہم نے ڈیٹا کو صاف کر لیا ہے، اور ایک ڈیٹافریم حاصل کیا ہے جسے `new_pumpkins` کہا گیا ہے، جیسا کہ درج ذیل:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](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` پیرامیٹر دے کر ہم تمام نقاط کو ایک ہی گراف پر دکھا سکتے ہیں:
ایسا لگتا ہے کہ ربط تھوڑا کم ہے، مہینے کے لیے -0.15 اور دنِ مہینے کے لیے -0.17، لیکن ایک اور اہم تعلق ممکن ہے۔ ایسا لگتا ہے کہ قیمتوں کے مختلف کلسٹرز مختلف کدو کی اقسام سے متعلق ہیں۔ اس مفروضے کی تصدیق کے لیے، آئیے ہر کدو کی قسم کو مختلف رنگ میں پلاٹ کریں۔ `scatter` فنکشن کو `ax` پیرامیٹر دینے سے ہم تمام نقاط ایک ہی گراف پر دکھا سکتے ہیں:
```python
ax=None
@ -144,47 +140,42 @@ 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 "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "مشین لرننگ مبتدیوں کے لیے - Scikit-learn استعمال کرتے ہوئے لکیری اور کثیر رکنی ریگریشن")
> 🎥 لینیئر اور پولی نومیل ریگریشن کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لکیری اور کثیر رکنی ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔
اپنا لینیئر ریگریشن ماڈل تیار کرنے کے لیے ہم **Scikit-learn** لائبریری کا استعمال کریں گے۔
ہم اپنے لکیری ریگریشن ماڈل کو تربیت دینے کے لیے **Scikit-learn** لائبریری استعمال کریں گے۔
```python
from sklearn.linear_model import LinearRegression
@ -192,52 +183,49 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
ہم ان پٹ ویلیوز (خصوصیات) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy arrays میں تقسیم کرنا شروع کرتے ہیں:
ہم انپٹ ویلیوز (خصوصیات) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy ارریوں میں تقسیم کرنا شروع کرتے ہیں:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> نوٹ کریں کہ ہمیں اپنے انپٹ ڈیٹا پر `reshape` کرنا پڑا تاکہ لکیری ریگریشن پیکیج اسے صحیح طور پر سمجھ سکے۔ لکیری ریگریشن 2D ارری کو بطور انپٹ توقع کرتا ہے، جہاں ارری کی ہر صف انپٹ خصوصیات کے ویکٹر کے برابر ہو۔ ہمارے کیس میں، چونکہ صرف ایک انپٹ ہے، ہمیں N×1 اشکال کی ارری چاہیے جہاں 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-محور کے ساتھ انٹرسیکشن پوائنٹ تک `lin_reg.intercept_` کے ذریعے بھی رسائی حاصل کر سکتے ہیں - جو ہمارے کیس میں تقریباً `21` ہوگا، جو سال کی شروعات میں قیمت کی نشاندہی کرتا ہے۔
`LinearRegression` آبجیکٹ `fit` کرنے کے بعد ریگریشن کے تمام کو efficient coefficients رکھتا ہے، جن تک `.coef_` پراپرٹی کے ذریعے رسائی حاصل کی جا سکتی ہے۔ ہمارے کیس میں صرف ایک coefficient ہے، جو تقریباً `-0.017` ہونا چاہیے۔ اس کا مطلب ہے کہ قیمتیں وقت کے ساتھ تھوڑی سی کم ہوتی نظر آتی ہیں، لیکن زیادہ نہیں، تقریباً دو سینٹ فی دن۔ ہم ریگریشن کے Y-محور سے انٹرسیکشن پوائنٹ بھی `lin_reg.intercept_` کے ذریعے حاصل کر سکتے ہیں - جو ہمارے کیس میں تقریباً `21` ہوگا، جو سال کے شروع کے وقت کی قیمت کی نشاندہی کرتا ہے۔
ہم دیکھ سکتے ہیں کہ ہمارا ماڈل کتنا درست ہے، ہم ایک ٹیسٹ ڈیٹا سیٹ پر قیمتوں کی پیش گوئی کر سکتے ہیں، اور پھر دیکھ سکتے ہیں کہ ہماری پیش گوئیاں متوقع قدروں کے کتنی قریب ہیں۔ یہ کام متوسط مربع غلطی (MSE) میٹرک کے ذریعے کیا جا سکتا ہے، جو متوقع اور پیش گوئی شدہ قیمت کے درمیان تمام مربع فرق کا اوسط ہے۔
یہ جاننے کے لیے کہ ہمارا ماڈل کتنا درست ہے، ہم ٹیسٹ ڈیٹاسیٹ پر قیمتوں کا اندازہ لگا سکتے ہیں، اور پھر دیکھ سکتے ہیں کہ ہماری پیشن گوئی متوقع قدروں سے کتنی قریب ہے۔ یہ rms (root mean square error) میٹرکس کے ذریعے کیا جا سکتا ہے، جو کہ تمام متوقع اور پیشن گوئی شدہ قدروں کے درمیان تمام مربع فرقوں کے وسط کی جذر ہے۔
ہماری غلطی تقریباً 2 پوائنٹس کے آس پاس ہے، جو کہ ~17% ہے۔ زیادہ اچھا نہیں۔ ماڈل کے معیار کا ایک اور اشارہ **coefficient of determination** ہے، جو اس طرح حاصل کیا جا سکتا ہے:
ہمارا error تقریباً 2 پوائنٹس کے آس پاس ہے، جو کہ ~17% ہے۔ زیادہ اچھا نہیں۔ ماڈل کے معیار کی ایک اور نشانی **coefficient of determination** ہے، جو اس طرح حاصل کی جا سکتی ہے:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
اگر یہ قدر 0 ہو تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا، اور *بدترین خطی پیشگو* کے طور پر کام کرتا ہے، جو کہ بس نتیجے کی اوسط قدر ہوتی ہے۔ اگر قدر 1 ہو تو مطلب ہے کہ ہم تمام متوقع نتائج کو بالکل درست پیش گوئی کر سکتے ہیں۔ ہمارے کیس میں، کو ایفیشئنٹ تقریباً 0.06 ہے، جو کہ کافی کم ہے۔
اگر قیمت 0 ہو، تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا، اور *بدترین خطی پیشگو* کے طور پر کام کرتا ہے، جو صرف نتیجہ کا اوسط ویلیو ہوتا ہے۔ قیمت 1 کا مطلب ہے کہ ہم تمام متوقع نتائج کو مکمل طور پر پیش گوئی کر سکتے ہیں۔ ہمارے کیس میں، coefficient تقریباً 0.06 ہے، جو کہ کافی کم ہے۔
ہم ریگریشن لائن کے ساتھ ٹیسٹ ڈیٹا کو بھی پلاٹ کر سکتے ہیں تاکہ یہ بہتر طور پر دیکھا جا سکے کہ ہمارا ریگریشن کس طرح کام کر رہا ہے:
ہم ٹیسٹ ڈیٹا کو ریگریشن لائن کے ساتھ بھی پلاٹ کر سکتے ہیں تاکہ دیکھ سکیں کہ ہمارے کیس میں ریگریشن کس طرح کام کرتی ہے:
```python
plt.scatter(X_test,y_test)
@ -248,17 +236,17 @@ plt.plot(X_test,pred)
## پولینومیل ریگریشن
دوسری قسم کی خطی رجریشن پولینومیل ریگریشن ہے۔ کبھی کبھی متغیرات کے درمیان ایک خطی تعلق ہوتا ہے - جتنا بڑا کدو حجم میں، اتنی زیادہ قیمت - لیکن بعض اوقات یہ تعلقات ایک طیارہ یا سیدھی لائن کی صورت میں ظاہر نہیں ہو سکتے۔
ریگریشن کی ایک اور قسم پولینومیل ریگریشن ہے۔ جب کبھی متغیرات کے درمیان خطی تعلق ہوتا ہے — جیسے جتنا زیادہ کدو حجم میں ہو، قیمت بھی زیادہ ہو — بعض اوقات یہ تعلقات سیدھی لائن یا سطح کی حیثیت سے ظاہر نہیں کیے جا سکتے۔
✅ یہاں [مزید چند مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) موجود ہیں جن میں پولینومیل ریگریشن استعمال ہو سکتی ہے۔
✅ یہاں [کچھ مزید مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) ہیں جو پولینومیل ریگریشن استعمال کر سکتی ہیں۔
تاریخ اور قیمت کے تعلق پر دوبارہ نظر ڈالیں۔ کیا یہ اسکیٹر پلاٹ واقعی ایک سیدھی لائن کے ذریعے تجزیہ کرنا ضروری ہے؟ کیا قیمتیں اتار چڑھاؤ نہیں کر سکتی؟ اس صورت میں، آپ پولینومیل ریگریشن آزما سکتے ہیں۔
ایک بار پھر تاریخ اور قیمت کے درمیان تعلق کو دیکھیں۔ کیا یہ سکریٹرپلٹ لازمی سیدھی لائن سے تجزیہ ہونا چاہیے؟ کیا قیمتیں اُتار چڑھاؤ نہیں کر سکتیں؟ اس صورت میں، آپ پولینومیل ریگریشن آزما سکتے ہیں۔
✅ پولینومیل ریگریشن ریاضیاتی اظہار ہوتے ہیں جو ایک یا زیادہ متغیرات اور کو ایفیشئنٹس پر مشتمل ہو سکتے ہیں۔
✅ پولینومیلز ریاضی کے بیانات ہوتے ہیں جو ایک یا زیادہ متغیرات اور coefficients پر مشتمل ہو سکتے ہیں۔
پولینومیل ریگریشن ایک خم دار لائن تخلیق کرتی ہے تاکہ غیر خطی ڈیٹا کے لیے بہتر فٹ ہو سکے۔ ہمارے کیس میں، اگر ہم ان پٹ ڈیٹا میں ایک مربع `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 میں ایک مفید [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) شامل ہے جو مختلف ڈیٹا پروسیسنگ کے مراحل کو یکجا کرتا ہے۔ **پائپ لائن** estimators کی ایک چین ہے۔ ہمارے کیس میں، ہم ایک پائپ لائن بنائیں گے جو پہلے پولینومیل فیچرز کو ہمارے ماڈل میں شامل کرے گا، اور پھر ریگریشن کو ٹرین کرے گا:
```python
from sklearn.preprocessing import PolynomialFeatures
`PolynomialFeatures(2)` کا استعمال مطلب ہے کہ ہم ان پٹ ڈیٹا سے تمام دوسرے درجے کے پولینومیلز شامل کریں گے۔ ہمارے کیس میں یہ صرف `DayOfYear`<sup>2</sup> ہوگا، لیکن اگر دو ان پٹ متغیرات X اور Y ہوں، تو یہ X<sup>2</sup>، XY، اور Y<sup>2</sup> شامل کرے گا۔ ہم چاہیں تو بلند درجے کے پولینومیلز بھی استعمال کر سکتے ہیں۔
`PolynomialFeatures(2)` کے استعمال کا مطلب ہے کہ ہم ان پٹ ڈیٹا سے تمام دوسرے درجے کے پولینومیل شامل کریں گے۔ ہمارے کیس میں یہ صرف `DayOfYear`² ہوگا، لیکن اگر دو ان پٹ ویریبلز X اور Y ہوں، تو یہ X²، XY اور Y² شامل کرے گا۔ ہم اگر چاہیں تو زیادہ درجے کے پولینومیل بھی استعمال کر سکتے ہیں۔
پائپ لائنز کو اصل `LinearRegression` آبجیکٹ کی طرح استعمال کیا جا سکتا ہے، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر پیش گوئیاں حاصل کرنے کے لیے `predict` استعمال کر سکتے ہیں۔ یہاں گراف ہے جو ٹیسٹ ڈیٹا اور اپروکسی میشن منحنی کو دکھاتا ہے:
پائپ لائنز کو اسی طرح استعمال کیا جا سکتا ہے جیسے `LinearRegression` آبجیکٹ، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر `predict` سے پیش گوئی حاصل کر سکتے ہیں۔ یہاں ایک گراف ہے جو ٹیسٹ ڈیٹا اور اندازہ شدہ منحنی دکھاتا ہے:
پولینومیل ریگریشن کا استعمال کرتے ہوئے، ہم تھوڑی کم MSE اور زیادہ کو ایفیشئنٹ آف ڈیٹرمنیشن حاصل کر سکتے ہیں، لیکن بہت زیادہ فرق نہیں۔ ہمیں دیگر خصوصیات کو بھی مدنظر رکھنا ہوگا!
پولینومیل ریگریشن سے ہمیں تھوڑا سا کم MSE اور زیادہ determination ملتا ہے، لیکن نمایاں طور پر نہیں۔ ہمیں دیگر فیچرز کو بھی مدنظر لینا ہوگا!
> آپ دیکھ سکتے ہیں کہ سب سے کم کدو کی قیمتیں تقریباً ہالووین کے ارد گرد دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
> آپ دیکھ سکتے ہیں کہ کم سے کم کدو کی قیمتیں ہالووین کے آس پاس دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
🎃 مبارک ہو، آپ نے ایک ایسا ماڈل بنایا ہے جو پای کدو کی قیمت کی پیش گوئی میں مدد کر سکتا ہے۔ آپ شاید یہ عمل تمام قسم کے کدو کے لیے دہرائیں، لیکن یہ تھکا دینے والا ہوگا۔ اب سیکھیں کہ ہم اپنے ماڈل میں کدو کی قسم کو کیسے شامل کریں!
🎃 مبارک ہو، آپ نے ابھی ایک ماڈل بنایا ہے جو کدو کی قیمت پیش گوئی کرنے میں مدد دے سکتا ہے۔ آپ شاید یہی طریقہ کار تمام کدو کی اقسام کے لیے دہرائیں، لیکن یہ بہت تھکا دینے والا ہوگا۔ اب سیکھتے ہیں کہ اپنے ماڈل میں کدو کی اقسام کو کیسے شامل کریں!
## زمرہ جاتی خصوصیات (Categorical Features)
## زمرہ بندی شدہ خصوصیات
ایک مثالی دنیا میں، ہم چاہتے ہیں کہ ہم مختلف کدو کی اقسام کے لیے قیمتیں ایک ہی ماڈل سے پیش گوئی کر سکیں۔ تاہم، `Variety` کالم دیگر کالموں جیسے `Month` سے کچھ مختلف ہے کیونکہ اس میں غیر عددی (non-numeric) اقدار ہوتی ہیں۔ ایسے کالمز کو **زمرہ جاتی** کہتے ہیں۔
آئیڈیل دنیا میں، ہم ایک ہی ماڈل استعمال کر کے مختلف کدو کی اقسام کی قیمتیں پیش گوئی کرنا چاہتے ہیں۔ تاہم، `Variety` کالم `Month` جیسے کالموں سے مختلف ہے کیونکہ اس میں غیر عددی قدریں ہوتی ہیں۔ ایسے کالمز کو **زمرہ بندی شدہ** (categorical) کہا جاتا ہے۔
[](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%"/>
قسم کو مدنظر رکھنے کے لیے، ہمیں پہلے اسے عددی صورت میں تبدیل کرنا یا **انکوڈ** کرنا ہوگا۔ اس کے لیے چند طریقے ہیں:
قسم کو مدنظر رکھنے کے لیے، سب سے پہلے ہمیں اس کو عددی شکل میں تبدیل کرنا پڑے گا، یعنی **انکوڈ** کرنا ہوگا۔ اس کے لیے کئی طریقے ہیں:
* سادہ **عددی انکوڈنگ** میں مختلف اقسام کی ایک جدول بنائی جاتی ہے، اور پھر قسم کے نام کی جگہ اس جدول میں اس کا انڈیکس لے لیتا ہے۔ یہ خطی ریگریشن کے لیے بہترین خیال نہیں ہے، کیونکہ خطی ریگریشن انڈیکس کی اصل عددی قدر لیتا ہے اور کسی کو ایفیشئنٹ سے ضرب دے کر نتیجہ میں شامل کر دیتا ہے۔ ہمارے کیس میں انڈیکس نمبر اور قیمت کے درمیان تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو کسی مخصوص ترتیب میں رکھیں۔
* **ون ہاٹ انکوڈنگ** `Variety` کالم کو 4 مختلف کالموں میں تبدیل کر دے گی، ہر قسم کے لیے ایک۔ ہر کالم میں `1` ہوگا اگر متعلقہ قطار مخصوص قسم کی ہو، ورنہ `0` ہوگا۔ اس کا مطلب ہے کہ خطی ریگریشن میں چار کو ایفیشئنٹس ہوں گے، ہر کدو کی قسم کے لیے ایک، جو اس خاص قسم کی "نکڑ قیمت" (یا اضافی قیمت) کے لیے ذمہ دار ہوگا۔
* سادہ **نو مریکی انکوڈنگ** مختلف اقسام کی ایک ٹیبل بنائے گی، اور پھر قسم کے نام کو اس ٹیبل میں انڈیکس سے تبدیل کر دے گی۔ یہ لائنیر ریگریشن کے لیے بہترین طریقہ نہیں ہے، کیونکہ لائنیر ریگریشن اس انڈیکس کی عددی قیمت لے کر اسے کسی coefficient کے ساتھ ضرب دے کر نتیجہ میں شامل کرتی ہے۔ ہمارے کیس میں، انڈیکس نمبر اور قیمت کے تعلق کا تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو مخصوص ترتیب دیں۔
* **ون-ہوٹ انکوڈنگ** `Variety` کالم کی جگہ چار مختلف کالم بنائے گی، ہر قسم کے لیے ایک۔ ہر کالم میں 1 تب ہوگا جب متعلقہ قطار اس قسم کی ہو، ورنہ 0 ہوگا۔ اس کا مطلب ہے کہ لائنیر ریگریشن میں چار coefficients ہوں گے، ہر کدو کی قسم کے لیے، جو اس خاص قسم کی "ابتدائی قیمت" (یا "اضافی قیمت") کی نمائندگی کریں گے۔
ذیل میں کوڈ دکھاتا ہے کہ ہم قسم کو ون ہاٹ انکوڈ کیسے کر سکتے ہیں:
نیچے دیا کوڈ دکھاتا ہے کہ قسم کو ون-ہوٹ انکوڈ کیسے کیا جائے:
ون ہاٹ انکوڈ شدہ قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے خطی ریگریشن کو ٹرین کرنے کے لیے، ہمیں صرف `X` اور `y` ڈیٹا درست طریقے سے initialize کرنا ہوگا:
ون-ہوٹ انکوڈ شدہ قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے لائنیر ریگریشن ٹرین کرنے کے لیے، ہمیں بس `X` اور `y` ڈیٹا کو صحیح طریقے سے initialize کرنا ہوگا:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
باقی کوڈ وہی ہے جو ہم نے پہلے خطی ریگریشن تربیت کے لیے استعمال کیا تھا۔ اگر آپ آزمائیں، تو دیکھیں گے کہ متوسط مربع غلطی تقریباً برابر ہے، لیکن ہمیں کو ایفیشئنٹ آف ڈیٹرمنیشن زیادہ ملتا ہے (~77%)۔ مزید درست پیش گوئی کے لیے، ہم مزید زمرہ جاتی خصوصیات اور عددی خصوصیات جیسے `Month` یا `DayOfYear` کو مدنظر لے سکتے ہیں۔ بڑی خصوصیات کے ایک مجموعے کو حاصل کرنے کے لیے ہم `join` استعمال کر سکتے ہیں:
باقی کوڈ اسی طرح ہے جیسا کہ ہم نے اوپر لائنیر ریگریشن کے لیے استعمال کیا تھا۔ اگر آپ اسے آزما کر دیکھیں گے تو آپ دیکھیں گے کہ mean squared error تقریباً ویسا ہی ہے، لیکن coefficient of determination بہت زیادہ (~77%) ہو جاتا ہے۔ زیادہ درست پیش گوئیاں حاصل کرنے کے لیے، ہم مزید categorical خصوصیات کے ساتھ ساتھ عددی خصوصیات، جیسے `Month` یا `DayOfYear` کو بھی شامل کر سکتے ہیں۔ فیچرز کی ایک بڑی ارے بنانے کے لیے ہم `join` استعمال کر سکتے ہیں:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -332,31 +320,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
یہاں ہم `City` اور `Package` کی قسم کو بھی مدنظر لیتے ہیں، جس سے ہمیں MSE 2.84 (10%) اور کو ایفیشئنٹ آف ڈیٹرمنیشن 0.94 ملتا ہے!
یہاں ہم `City` اور `Package` کی اقسام بھی مدنظر لیتے ہیں، جو ہمیں MSE 2.84 (10%) اور determination 0.94 دیتی ہے!
## سب کچھ ملانا
## سب کچھ ایک ساتھ رکھنا
بہترین ماڈل بنانے کے لیے، ہم مشترکہ (ون ہاٹ انکوڈ کی گئی زمرہ جاتی + عددی) ڈیٹا کو پولینومیل ریگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے مکمل کوڈ یہ ہے:
بہترین ماڈل بنانے کے لیے، ہم اوپر والے مثال میں سے مشترکہ (ون-ہوٹ انکوڈ شدہ زمرہ بندی شدہ + عددی) ڈیٹا کو پولینومیل ریگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے مکمل کوڈ یہاں ہے:
```python
# تربیتی ڈیٹا مرتب کریں
# تربیتی ڈیٹا تیار کریں
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']
# تربیت اور ٹیسٹ کے لیے تقسیم کریں
# تربیت اور امتحان کے لیے تقسیم کریں
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
🏆 عمدہ! آپ نے ایک ہی سبق میں چار ریگریشن ماڈلز بنائے، اور ماڈل کا معیار 97% تک بہتر بنایا۔ ریگریشن کے آخری حصے میں آپ لاجسٹک ریگریشن کے بارے میں جانیں گے تاکہ زمرہ جات کی تعیین کی جا سکے۔
🏆 بہت خوب! آپ نے ایک سبق میں چار ریگریشن ماڈل بنائے، اور ماڈل کا معیار 97% تک بہتر کیا۔ آخری سیکشن میں آپ لاجسٹک ریگریشن کے بارے میں جانیں گے تاکہ زمروں کی تعیین کی جا سکے۔
---
## 🚀چیلنج
اس نوٹ بک میں مختلف متغیرات کو آزما کر دیکھیں کہ کوریلیشن ماڈل کی درستگی کے ساتھ کیسے متوازی ہے۔
اس نوٹ بک میں مختلف متغیرات آزمائیں تاکہ دیکھ سکیں کہ correlation ماڈل کی درستگی کے ساتھ کس طرح مطابقت رکھتا ہے۔
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
## [سبق کے بعد کا کوئز](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)
---
<!-- 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) کا استعمال کرتے ہوئے کیا گیا ہے۔ اگرچہ ہم درستگی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا غلط فہمیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں مستند ماخذ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمہ کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔
اس سبق میں، آپ پچھلے سبق سے محفوظ کردہ ڈیٹا سیٹ استعمال کریں گے، جو کھانے کی اقسام کے بارے میں متوازن اور صاف ڈیٹا سے بھرا ہوا ہے۔
اس سبق میں، آپ پچھلے سبق سے محفوظ کردہ متوازن، صاف ڈیٹا پر مشتمل غذائی اقسام کے بارے میں ڈیٹا سیٹ استعمال کریں گے۔
آپ اس ڈیٹا سیٹ کو مختلف درجہ بندی کرنے والے الگورتھمز کے ساتھ استعمال کریں گے تاکہ _اجزاء کے ایک گروپ کی بنیاد پر کسی قومی کھانے کی قسم کی پیش گوئی کی جا سکے_۔ ایسا کرتے ہوئے، آپ ان طریقوں کے بارے میں مزید جانیں گے جن سے الگورتھمز کو درجہ بندی کے کاموں کے لیے استعمال کیا جا سکتا ہے۔
آپ اس ڈیٹا سیٹ کو مختلف قسم بندی کرنے والے الگورتھمز کے ساتھ استعمال کریں گے تاکہ _اجزاء کے ایک گروپ کی بنیاد پر دی گئی قومی غذا کی پیش گوئی کی جائے_. ایسا کرتے ہوئے، آپ الگورتھمز کے ذریعے قسم بندی کے کاموں کے لیے مختلف طریقوں کے بارے میں مزید جانیں گے۔
## [سبق سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ml/)
# تیاری
فرض کریں کہ آپ نے [سبق 1](../1-Introduction/README.md) مکمل کر لیا ہے، تو یقینی بنائیں کہ ایک _cleaned_cuisines.csv_ فائل ان چار اسباق کے لیے روٹ `/data` فولڈر میں موجود ہے۔
فرض کریں کہ آپ نے [سبق 1](../1-Introduction/README.md) مکمل کر لیا ہے، تو اس بات کو یقینی بنائیں کہ ایک _cleaned_cuisines.csv_ فائل جڑ `/data` فولڈر میں ان چار اسباق کے لیے موجود ہو۔
## مشق - قومی کھانے کی قسم کی پیش گوئی کریں
## مشق - قومی کھانے کی پیش گوئی کریں
1. اس سبق کے _notebook.ipynb_ فولڈر میں کام کرتے ہوئے، اس فائل کو Pandas لائبریری کے ساتھ درآمد کریں:
1. اس سبق کے _notebook.ipynb_ فولڈر میں کام کرتے ہوئے، اس فائل کو Pandas لائبریری کے ساتھ امپورٹ کریں:
اب جب کہ آپ کا ڈیٹا صاف اور تربیت کے لیے تیار ہے، آپ کو فیصلہ کرنا ہوگا کہ اس کام کے لیے کون سا الگورتھم استعمال کرنا ہے۔
اب جب کہ آپ کا ڈیٹا صاف اور تربیت کے لیے تیار ہے، آپ کو یہ فیصلہ کرنا ہوگا کہ کون سا الگورتھم استعمال کرنا ہے۔
Scikit-learn درجہ بندی کو سپروائزڈ لرننگ کے تحت گروپ کرتا ہے، اور اس زمرے میں آپ کو درجہ بندی کے کئی طریقے ملیں گے۔ [مختلف اقسام](https://scikit-learn.org/stable/supervised_learning.html) پہلی نظر میں کافی الجھن پیدا کر سکتی ہیں۔ درج ذیل طریقے تمام درجہ بندی کی تکنیکیں شامل کرتے ہیں:
Scikit-learn قسم بندی کو سپروائزڈ لرننگ کے تحت رکھتا ہے، اور اس زمرے میں آپ کو قسم بندی کرنے کے کئی طریقے ملیں گے۔ [مختلف طریقے](https://scikit-learn.org/stable/supervised_learning.html) دیکھنے میں پہلے پہل کافی پیچیدہ لگ سکتے ہیں۔ درج ذیل طریقے سب قسم بندی کی تکنیکیں شامل کرتے ہیں:
- ملٹی کلاس اور ملٹی آؤٹ پٹ الگورتھمز (ملٹی کلاس اور ملٹی لیبل قسم بندی، ملٹی کلاس-ملٹی آؤٹ پٹ قسم بندی)
> آپ [نیورل نیٹ ورکس کو ڈیٹا کی درجہ بندی کے لیے](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) بھی استعمال کر سکتے ہیں، لیکن یہ اس سبق کے دائرہ کار سے باہر ہے۔
> آپ [نیورل نیٹ ورکس بھی استعمال کر سکتے ہیں](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) لیکن وہ اس سبق کے دائرہ کار سے باہر ہیں۔
### کون سا درجہ بندی کرنے والا منتخب کریں؟
### کون سا کلاسفیئر منتخب کیا جائے؟
تو، آپ کو کون سا درجہ بندی کرنے والا منتخب کرنا چاہیے؟ اکثر، کئی الگورتھمز کو آزمانا اور اچھے نتائج کی تلاش کرنا ایک طریقہ ہوتا ہے۔ Scikit-learn ایک [سائیڈ بائی سائیڈ موازنہ](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) پیش کرتا ہے، جس میں KNeighbors، SVC دو طریقے، GaussianProcessClassifier، DecisionTreeClassifier، RandomForestClassifier، MLPClassifier، AdaBoostClassifier، GaussianNB اور QuadraticDiscriminationAnalysis شامل ہیں، اور نتائج کو بصری طور پر دکھایا گیا ہے:
تو، آپ کون سا کلاسفیئر منتخب کریں؟ اکثر، کئی کلاسفیئرز کو آزمانا اور اچھا نتیجہ تلاش کرنا آزمائشی طریقہ ہوتا ہے۔ Scikit-learn ایک [موازنہ](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) پیش کرتا ہے جو مختلف الگورتھمز جیسے KNeighbors، SVC کے دو طریقے، GaussianProcessClassifier، DecisionTreeClassifier، RandomForestClassifier، MLPClassifier، AdaBoostClassifier، GaussianNB اور QuadraticDiscrinationAnalysis کا موازنہ کرتا ہے اور نتائج کو بصری طور پر دکھاتا ہے:

> Scikit-learn کی دستاویزات پر تیار کردہ گراف

> یہ گراف Scikit-learn کی دستاویزات میں بنائے گئے ہیں
> AutoML اس مسئلے کو آسانی سے حل کرتا ہے، ان موازنوں کو کلاؤڈ میں چلاتا ہے، اور آپ کو اپنے ڈیٹا کے لیے بہترین الگورتھم منتخب کرنے کی اجازت دیتا ہے۔ اسے [یہاں آزمائیں](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML اس مسئلے کو آسانی سے حل کرتا ہے کلاؤڈ میں یہ کمپیریزنز چلا کر، تاکہ آپ اپنے ڈیٹا کے لیے سب سے بہتر الگورتھم منتخب کر سکیں۔ اسے [یہاں آزمائیں](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### ایک بہتر طریقہ
اندازے لگانے کے بجائے، ایک بہتر طریقہ یہ ہے کہ اس ڈاؤن لوڈ کے قابل [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) کے خیالات پر عمل کریں۔ یہاں، ہم دریافت کرتے ہیں کہ ہمارے ملٹی کلاس مسئلے کے لیے ہمارے پاس کچھ اختیارات ہیں:
اندازے لگانے کے بجائے بہتر ہے کہ اس [ML Cheat sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) کو ڈاؤنلوڈ کر کے اس میں بتائی گئی تجاویز پر عمل کریں۔ یہاں، ہم دیکھتے ہیں کہ ہمارے ملٹی کلاس مسئلے کے لیے ہمارے پاس کچھ آپشنز ہیں:

> مائیکروسافٹ کے الگورتھم چیٹ شیٹ کا ایک حصہ، جو ملٹی کلاس درجہ بندی کے اختیارات کو تفصیل سے بیان کرتا ہے

> مائیکروسافٹ کے الگورتھم چیٹ شیٹ کا ایک حصہ، جو ملٹی کلاس قسم بندی کے آپشنز کی تفصیل بتاتا ہے
✅ اس چیٹ شیٹ کو ڈاؤن لوڈ کریں، پرنٹ کریں، اور اپنی دیوار پر لگائیں!
✅ اس چیٹ شیٹ کو ڈاؤنلوڈ کریں، پرنٹ نکالیں، اور اپنی دیوار پر لگائیں!
### استدلال
### منطق
آئیے دیکھتے ہیں کہ ہم مختلف طریقوں کے ذریعے استدلال کر سکتے ہیں، دی گئی حدود کو مدنظر رکھتے ہوئے:
آئیے دیکھیں کہ موجودہ پابندیوں کے پیش نظر مختلف طریقوں پر کیسے غور کیا جا سکتا ہے:
- **نیورل نیٹ ورکس بہت بھاری ہیں**۔ ہمارے صاف لیکن کم سے کم ڈیٹا سیٹ کو دیکھتے ہوئے، اور یہ حقیقت کہ ہم تربیت کو مقامی طور پر نوٹ بکس کے ذریعے چلا رہے ہیں، نیورل نیٹ ورکس اس کام کے لیے بہت بھاری ہیں۔
- **دو کلاس درجہ بندی کرنے والا نہیں**۔ ہم دو کلاس درجہ بندی کرنے والا استعمال نہیں کرتے، لہذا یہ ایک-بمقابلہ-سب کو خارج کر دیتا ہے۔
- **فیصلہ کن درخت یا لاجسٹک ریگریشن کام کر سکتے ہیں**۔ فیصلہ کن درخت کام کر سکتے ہیں، یا ملٹی کلاس ڈیٹا کے لیے لاجسٹک ریگریشن۔
- **ملٹی کلاس بوسٹڈ فیصلہ کن درخت ایک مختلف مسئلہ حل کرتے ہیں**۔ ملٹی کلاس بوسٹڈ فیصلہ کن درخت غیر پیرامیٹرک کاموں کے لیے سب سے زیادہ موزوں ہیں، جیسے کہ درجہ بندی بنانے کے لیے ڈیزائن کیے گئے کام، لہذا یہ ہمارے لیے مفید نہیں ہے۔
- **نیورل نیٹ ورکس بہت بھاری ہیں**۔ ہمارے صاف لیکن کم حجم ڈیٹا سیٹ اور لوکل نوٹ بکس میں ٹریننگ چلانے کی وجہ سے، نیورل نیٹ ورکس اس کام کے لیے زیادہ بھاری ہیں۔
- **کوئی دو-کلاس کلاسفیئر نہیں**۔ ہم دو-کلاس کلاسفیئر استعمال نہیں کرتے، اس لیے ون-ورسس-آل آؤٹ ہو جاتا ہے۔
- **فیصلہ ساز درخت یا لاجسٹک ریگریشن کام کر سکتا ہے**۔ فیصلہ ساز درخت یا ملٹی کلاس ڈیٹا کے لیے لاجسٹک ریگریشن مفید ہو سکتا ہے۔
- **ملٹی کلاس بوسٹڈ فیصلہ ساز درخت مختلف مسئلے کے لیے ہیں**۔ ملٹی کلاس بوسٹڈ فیصلہ ساز درخت غیر پیرا میٹرک کاموں کے لیے بہتر ہیں، جیسے رینکنگ بنانا، اس لیے ہمارے لیے یہ مفید نہیں۔
### Scikit-learn کا استعمال
ہم اپنے ڈیٹا کا تجزیہ کرنے کے لیے Scikit-learn استعمال کریں گے۔ تاہم، Scikit-learn میں لاجسٹک ریگریشن استعمال کرنے کے کئی طریقے ہیں۔ پاس کرنے کے لیے [پیرامیٹرز](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) پر ایک نظر ڈالیں۔
ہم اپنے ڈیٹا کا تجزیہ کرنے کے لیے Scikit-learn استعمال کریں گے۔ تاہم، Scikit-learn میں لاجسٹک ریگریشن کے کئی استعمالات ہیں۔ اس [دستاویز](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) کو دیکھیں کہ کون سے پیرامیٹرز پاس کیے جا سکتے ہیں۔
بنیادی طور پر دو اہم پیرامیٹرز ہیں - `multi_class` اور `solver` - جنہیں ہمیں مخصوص کرنا ہوگا، جب ہم Scikit-learn سے لاجسٹک ریگریشن انجام دینے کو کہتے ہیں۔ `multi_class` ویلیو ایک خاص رویہ اپناتی ہے۔ solver کی ویلیو وہ الگورتھم ہے جو استعمال کیا جائے گا۔ تمام solvers کو تمام `multi_class` ویلیوز کے ساتھ جوڑا نہیں جا سکتا۔
بنیادی طور پر دو اہم پیرامیٹرز ہیں - `multi_class` اور `solver` - جو آپ کو لاجسٹک ریگریشن انجام دیتے ہوئے بتانے ہوں گے۔ `multi_class` ویلیو ایک خاص رویہ اپناتی ہے۔ `solver` ویلیو وہ الگورتھم بتاتی ہے جو استعمال ہوگا۔ ہر solver تمام `multi_class` ویلیوز کے ساتھ مطابقت نہیں رکھتا۔
دستاویزات کے مطابق، ملٹی کلاس کیس میں، تربیتی الگورتھم:
دستاویزات کے مطابق، ملٹی کلاس صورت میں، تربیتی الگورتھم:
- **ایک-بمقابلہ-باقی (OvR) اسکیم استعمال کرتا ہے**، اگر `multi_class` آپشن `ovr` پر سیٹ کیا گیا ہو
- **کراس-اینٹروپی نقصان استعمال کرتا ہے**، اگر `multi_class` آپشن `multinomial`پر سیٹ کیا گیا ہو۔ (فی الحال `multinomial` آپشن صرف ‘lbfgs’, ‘sag’, ‘saga’ اور ‘newton-cg’ solvers کے ذریعے سپورٹ کیا جاتا ہے۔)
- اگر `multi_class` آپشن `ovr` پر سیٹ ہو تو **ون-ورسس-ریسٹ (OvR) اسکیم** استعمال کرتا ہے
- اگر `multi_class` آپشن `multinomial`ہو تو **کراس انٹروپی لاس** استعمال کرتا ہے (اس وقت یہ آپشن صرف ‘lbfgs’, ‘sag’, ‘saga’ اور ‘newton-cg’ solvers کے ساتھ سپورٹڈ ہے)"
> 🎓 یہاں 'اسکیم' یا تو 'ovr' (ایک-بمقابلہ-باقی) یا 'multinomial' ہو سکتی ہے۔ چونکہ لاجسٹک ریگریشن بنیادی طور پر بائنری درجہ بندی کی حمایت کے لیے ڈیزائن کی گئی ہے، یہ اسکیمیں اسے ملٹی کلاس درجہ بندی کے کاموں کو بہتر طریقے سے سنبھالنے کی اجازت دیتی ہیں۔ [ماخذ](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'اسکیم' یہاں 'ovr' (ون-ورسس-ریسٹ) یا 'multinomial' ہو سکتی ہے۔ چونکہ لاجسٹک ریگریشن بنیادی طور پر بائنری قسم بندی کے لیے ہے، یہ اسکیمز اسے بہتر طریقے سے ملٹی کلاس کاموں میں مدد دیتی ہیں۔ [ذرائع](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'solver' کو "آپٹیمائزیشن مسئلے میں استعمال ہونے والے الگورتھم" کے طور پر بیان کیا گیا ہے۔ [ماخذ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'solver' کا مطلب ہے "آپٹیمائزیشن مسئلہ میں استعمال ہونے والا الگورتھم"۔ [ذرائع](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
Scikit-learn یہ جدول پیش کرتا ہے تاکہ وضاحت کی جا سکے کہ solvers مختلف چیلنجز کو کیسے سنبھالتے ہیں جو مختلف قسم کے ڈیٹا ڈھانچے کے ذریعے پیش کیے جاتے ہیں:
Scikit-learn یہ جدول فراہم کرتا ہے کہ کیسے solvers مختلف قسم کے ڈیٹا ڈھانچوں کے چیلنجز کو ہینڈل کرتے ہیں:
ہم اپنی پہلی تربیتی کوشش کے لیے لاجسٹک ریگریشن پر توجہ مرکوز کر سکتے ہیں کیونکہ آپ نے حال ہی میں پچھلے سبق میں اس کے بارے میں سیکھا تھا۔
اپنے ڈیٹا کو تربیت اور جانچ کے گروپوں میں تقسیم کریں، `train_test_split()` کال کر کے:
چونکہ آپ نے حال ہی میں لاجسٹک ریگریشن کے بارے میں سیکھا ہے، تو اپنے پہلے ٹریننگ ٹرائل کے لیے ہم لاجسٹک ریگریشن پر توجہ دیں گے۔ اپنے ڈیٹا کو `train_test_split()` کال کر کے تربیتی اور ٹیسٹنگ گروپس میں تقسیم کریں:
چونکہ آپ ملٹی کلاس کیس استعمال کر رہے ہیں، آپ کو یہ منتخب کرنا ہوگا کہ کون سا _اسکیم_استعمال کرنا ہے اور کون سا _solver_ سیٹ کرنا ہے۔ لاجسٹک ریگریشن کو ملٹی کلاس سیٹنگ اور **liblinear** solver کے ساتھ تربیت دینے کے لیے استعمال کریں۔
چونکہ آپ ملٹی کلاس کیس استعمال کر رہے ہیں، آپ کو فیصلہ کرنا ہوگا کہ کون سا _اسکیم_اور کون سا _solver_ استعمال کرنا ہے۔ لاجسٹک ریگریشن بنائیں جس میں multi_class `ovr` پر اور solver **liblinear** پر مقرر ہو۔
1. لاجسٹک ریگریشن بنائیں، جس میں multi_class `ovr`پر سیٹ ہو اور solver `liblinear` پر سیٹ ہو:
1. ایک لاجسٹک ریگریشن بنائیں جس میں multi_class `ovr` ہو اور solver `liblinear` ہو:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ ایک مختلف solver جیسے `lbfgs` آزمائیں، جو اکثر ڈیفالٹ کے طور پر سیٹ کیا جاتا ہے
> نوٹ، جب ضرورت ہو تو اپنے ڈیٹا کو فلیٹ کرنے کے لیے Pandas کی [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) فنکشن استعمال کریں۔
درستگی **80%** سے زیادہ اچھی ہے!
✅ مختلف solver جیسے `lbfgs` بھی آزمائیں، جو اکثر ڈیفالٹ ہوتا ہے
1. آپ اس ماڈل کو ایک ڈیٹا کی قطار (#50) پر ٹیسٹ کرکے عمل میں دیکھ سکتے ہیں:
> نوٹ کریں، جب ضرورت ہو تو آپ اپنے ڈیٹا کو فلٹین کرنے کے لیے Pandas کا [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) فنکشن استعمال کریں۔
درستگی 80٪ سے زیادہ اچھی ہے!
1. آپ اس ماڈل کو فعال دیکھنے کے لیے کسی بھی ایک قطار (#50) کا ڈیٹا ٹیسٹ کر کے نتائج دیکھ سکتے ہیں:
اس سبق میں، آپ نے اپنے صاف شدہ ڈیٹا کا استعمال کرتے ہوئے ایک مشین لرننگ ماڈل بنایا جو اجزاء کی ایک سیریز کی بنیاد پر قومی کھانے کی پیش گوئی کر سکتا ہے۔ کچھ وقت نکالیں اور Scikit-learn کے مختلف اختیارات کو پڑھیں جو ڈیٹا کو کلاسیفائی کرنے کے لیے فراہم کیے گئے ہیں۔ 'solver' کے تصور میں مزید گہرائی میں جائیں تاکہ سمجھ سکیں کہ پردے کے پیچھے کیا ہوتا ہے۔
اس سبق میں، آپ نے اپنی صاف شدہ ڈیٹا کا استعمال کرتے ہوئے ایک مشین لرننگ ماڈل بنایا ہے جو اجزاء کی ایک سیریز کی بنیاد پر ایک قومی کھانے کی پیشگوئی کر سکتا ہے۔ مختلف اختیارات کو پڑھنے کے لیے کچھ وقت نکالیں جو Scikit-learn فراہم کرتا ہے تاکہ ڈیٹا کو درجہ بند کیا جا سکے۔ 'solver' کے تصور میں مزید گہرائی میں جائیں تاکہ سمجھ سکیں کہ پس منظر میں کیا ہو رہا ہے۔
## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/)
## [لیکچر کے بعد کوئز](https://ff-quizzes.netlify.app/en/ml/)
## جائزہ اور خود مطالعہ
لاجسٹک ریگریشن کے پیچھے ریاضی کو مزید سمجھنے کے لیے [اس سبق](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) میں گہرائی سے جائیں۔
## اسائنمنٹ
لاجسٹک رجریشن کے پیچھے ریاضی میں تھوڑا مزید غوطہ لگائیں [اس سبق](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) میں
## اسائنمنٹ
[solver کا مطالعہ کریں](assignment.md)
[solvers کا مطالعہ کریں](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) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا نا درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ذریعہ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر عائد نہیں ہوتی۔
> اس ریپوزیٹری میں 50+ زبانوں کے تراجم شامل ہیں جو ڈاؤن لوڈ کے حجم کو نمایاں طور پر بڑھاتے ہیں۔ بغیر تراجم کے کلون کرنے کے لیے، sparse checkout استعمال کریں:
> اس ریپوزیٹری میں 50+ زبان کی تراجم شامل ہیں جو ڈاؤن لوڈ حجم میں نمایاں اضافہ کرتے ہیں۔ بغیر تراجم کے کلون کرنے کے لیے اسپارس چیکآؤٹ استعمال کریں:
ہمارے پاس ایک Discord پر learn with AI سیریز جاری ہے، مزید جاننے اور شامل ہونے کے لیے [Learn with AI Series](https://aka.ms/learnwithai/discord) پر جائیں، 18 سے 30 ستمبر، 2025۔ آپ کو GitHub Copilot کے ڈیٹا سائنس کے استعمال کے لئے تجاویز اور تکنیک ملیں گی۔
ہمارے پاس AI کے ساتھ ایک Discord سیکھنے کی سیریز جاری ہے، مزید معلومات حاصل کریں اور 18 سے 30 ستمبر، 2025 تک ہمارے ساتھ شامل ہوں [Learn with AI Series](https://aka.ms/learnwithai/discord) پر۔ آپ GitHub Copilot کو ڈیٹا سائنس کے لیے استعمال کرنے کے لیے ٹپس اور ٹرکس حاصل کریں گے۔


# ابتدائیوں کے لئے مشین لرننگ - ایک نصاب
# مشین لرننگ برائے مبتدی - ایک نصاب
> 🌍 دنیا بھر کا سفر کریں جب ہم مشین لرننگ کو دنیا کی ثقافتوں کے ذریعے دریافت کرتے ہیں 🌍
> 🌍 دنیا بھر کا سفر کرتے ہوئے ہم دنیا کی ثقافتوں کے ذریعے مشین لرننگ کو دریافت کرتے ہیں 🌍
Microsoft کے Cloud Advocates خوشی کے ساتھ 12 ہفتے، 26 اسباق پر مشتمل ایک نصاب پیش کرتے ہیں جو مکمل طور پر **مشین لرننگ** کے بارے میں ہے۔ اس نصاب میں، آپ کچھ مواقع پر **کلاسیکی مشین لرننگ** کہلانے والی چیزیں سیکھیں گے، جس میں بنیادی طور پر Scikit-learn لائبریری استعمال کی جائے گی اور ڈیپ لرننگ سے گریز کیا جائے گا، جو ہمارے [AI for Beginners' نصاب](https://aka.ms/ai4beginners) میں شامل ہے۔ ان اسباق کو ہمارے ['ڈیٹا سائنس برائے ابتدائیوں' نصاب](https://aka.ms/ds4beginners) کے ساتھ بھی جوڑیں۔
مائیکروسافٹ کے کلاؤڈ ایڈووکیٹس خوش ہیں کہ وہ 12 ہفتوں، 26 اسباق پر محیط ایک نصاب پیش کرتے ہیں جو مکمل طور پر **مشین لرننگ** کے بارے میں ہے۔ اس نصاب میں، آپ کو جو کبھی کبھی **روایتی مشین لرننگ** کہا جاتا ہے، بنیادی طور پر Scikit-learn لائبریری کا استعمال کرتے ہوئے اور ڈیپ لرننگ سے پرہیز کرتے ہوئے سیکھنے کو ملے گا، جو ہمارے [AI for Beginners' نصاب](https://aka.ms/ai4beginners) میں شامل ہے۔ ان اسباق کو ہمارے ['Data Science for Beginners' نصاب](https://aka.ms/ds4beginners) کے ساتھ جوڑیں، بھی!
ہمارے ساتھ دنیا بھر کا سفر کریں جب ہم کلاسیکی تکنیک کو دنیا کے مختلف حصوں کے ڈیٹا پر لاگو کرتے ہیں۔ ہر سبق میں پری اور پوسٹ کلاس کوئزز، تحریری ہدایات، حل، اسائنمنٹ، اور مزید شامل ہوتا ہے۔ ہمارا پراجیکٹ بنیاد پر تعلیمی طریقہ آپ کو تعمیر کرتے ہوئے سیکھنے کی اجازت دیتا ہے، جو نئی صلاحیتوں کو برقرار رکھنے کا ایک ثابت شدہ طریقہ ہے۔
ہمارے ساتھ دنیا بھر کا سفر کریں جب ہم ان کلاسیکی تکنیکوں کو دنیا کے مختلف علاقوں کے ڈیٹا پر لاگو کرتے ہیں۔ ہر سبق میں پری اور پوسٹ-سبق کوئزز، سبق مکمل کرنے کے لیے تحریری ہدایات، حل، ایک اسائنمنٹ، اور مزید شامل ہیں۔ ہمارا پروجیکٹ پر مبنی طریقہ تعلیم آپ کو سیکھتے ہوئے تعمیر کرنے کی اجازت دیتا ہے، جو نئی مہارتوں کو مضبوط بنانے کا ثابت شدہ طریقہ ہے۔
**✍️ ہمارے مصنفین کا دلی شکریہ**: Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu اور Amy Boyd
**✍️ ہمارے مصنفین کا دل سے شکریہ** جین لوپر، سٹیفن ہوویل، فرانسیسکا لازیری، ٹومومی ایمورا، کیسی بریویو، دمتری سوشنکوف، کرس نورنگ، انربن مکھرجی، اورنیلا التونیان، روتھ یاکوبو اور ایمی بوئڈ
**🎨 ہمارے مصوروں کا بھی شکریہ**: Tomomi Imura, Dasani Madipalli, اور Jen Looper
**🎨 شکریہ بھی ہمارے مصوروں کو** ٹومومی ایمورا، دسانی مادیپالی، اور جین لوپر
**🙏 خصوصی شکریہ 🙏 ہمارے Microsoft Student Ambassador مصنفین، جائزہ لینے والوں، اور مواد کے مصنفین کو**، خصوصاً Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, اور Snigdha Agarwal
**🙏 خاص طور پر شکریہ 🙏 ہماری مائیکروسافٹ اسٹوڈنٹ ایمبیسیڈر مصنفین، جائزہ لینے والوں، اور مواد کے تعاون دینے والوں کو، خاص طور پر رشیّت ڈاکلی، محمد ساقب خان اینان، روہن راج، الیگزانڈرو پیٹریسکو، ابھیشیک جیسوال، نَوْرِن طبعسم، ایوان سمویلا، اور سنگدھا اگروال**
**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, اور Vidushi Gupta کا بھی خصوصی شکریہ ہمارے R اسباق کے لئے!**
**🤩 اضافی شکریہ مائیکروسافٹ اسٹوڈنٹ ایمبیسیڈرز ایرک ونجاؤ، جزلین سونڈی، اور ودوشی گپتا کو ہمارے آر اسباق کے لیے!**
# شروع کرنا
# شروعات
مندرجہ ذیل اقدامات کریں:
1. **ریپوزیٹری کو Fork کریں**: اس صفحہ کے اوپر دائیں کونے میں موجود "Fork" بٹن پر کلک کریں۔
1. **ریپوزیٹری کو فورک کریں**: اس صفحے کے اوپری دائیں کونے میں "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)
> [اس کورس کے تمام اضافی وسائل ہماری Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **مدد چاہیے؟** ہمارے [Troubleshooting Guide](TROUBLESHOOTING.md) میں انسٹالیشن، سیٹ اپ، اور اسباق چلانے کے عام مسائل کے حل دیکھیں۔
> 🔧 **مدد چاہیے؟** عام مسائل جیسے تنصیب، سیٹ اپ، اور اسباق چلانے کے حل کے لیے ہمارا [مسائل حل کرنے کا گائیڈ](TROUBLESHOOTING.md) دیکھیں۔
**[طلبہ](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لیے، پورے ریپوزیٹری کو اپنی GitHub اکاؤنٹ پر fork کریں اور مشقیں اپنی مرضی سے یا گروپ کے ساتھ مکمل کریں:
**[طلباء](https://aka.ms/student-page)**، اس نصاب کو استعمال کرنے کے لیے اپنی GitHub اکاؤنٹ پر مکمل ریپو کو فورک کریں اور مشقیں خود یا کسی گروپ کے ساتھ مکمل کریں:
- پری لیکچر کوئز سے شروع کریں۔
- لیکچر پڑھیں اور سرگرمیاں مکمل کریں، ہر نالج چیک پر توقف کر کے غور کریں۔
- اسباق کو سمجھ کر پروجیکٹس بنانے کی کوشش کریں بجائے اس کے کہ صرف سولوشن کوڈ چلائیں؛ تاہم یہ کوڈ ہر پراجیکٹ پر مبنی سبق کے `/solution` فولڈرز میں دستیاب ہے۔
- پوسٹ لیکچر کوئز حل کریں۔
- لیکچر پڑھیں اور سرگرمیاں مکمل کریں، ہر علم کی جانچ پر توقف اور غور کریں۔
- اسباق کو سمجھ کے پروجیکٹس بنانے کی کوشش کریں نہ کہ حل کے کوڈ کو چلانے کی؛ البتہ وہ کوڈ ہر پروجیکٹ پر مبنی سبق کے `/solution` فولڈرز میں دستیاب ہے۔
- پوسٹ لیکچر کوئز دیں۔
- چیلنج مکمل کریں۔
- اسائنمنٹ مکمل کریں۔
- جب کسی سبق گروپ کو مکمل کرلیں، تو [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) پر جائیں اور مناسب PAT روبریک بھر کر "آواز بلند کریں"۔ 'PAT' ایک پروگریس اسسمنٹ ٹول ہے، جو آپ کے سیکھنے کو مزید بڑھاتا ہے۔ آپ دوسرے PATs پر بھی ردعمل ظاہر کر سکتے ہیں تاکہ ہم سب مل کر سیکھ سکیں۔
- ایک سبق گروپ مکمل کرنے کے بعد، [بحث بورڈ](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) پر نیچے دی گئی تصویر پر کلک کرکے دیکھ سکتے ہیں۔
کچھ اسباق مختصر ویڈیو کی شکل میں دستیاب ہیں۔ آپ یہ سب اسباق کے اندر بھی دیکھ سکتے ہیں، یا [Microsoft Developer YouTube چینل پر ML for Beginners پلے لسٹ](https://aka.ms/ml-beginners-videos) پر نیچے دی گئی تصویر پر کلک کرکے۔
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
> 🎥 پراجیکٹ اور اس کو بنانے والوں کے بارے میں ویڈیو کے لیے اوپر تصویر پر کلک کریں!
> 🎥 ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں جو اس پروجیکٹ اور اسے بنانے والے افراد کے بارے میں ہے!
---
## طریقہ تدریس
## تدریسی طریقہ کار
اس نصاب کو بناتے ہوئے ہم نے دو تعلیمی اصول منتخب کیے ہیں: اسے ہاتھوں سے کرنے والا **پروجیکٹ پر مبنی** بنانا اور اس میں **بار بار کوئزز** شامل کرنا۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **موضوع** بھی ہے جو یکجہتی فراہم کرتا ہے۔
ہم نے اس نصاب کی تعمیر کے دوران دو تدریسی اصول منتخب کیے ہیں: یہ یقینی بنانا کہ یہ ہاتھوں سے کرنے والا **پروجیکٹ پر مبنی** ہو اور اس میں **کثرت سے کوئزز** شامل ہوں۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **موضوع** ہے جو اسے ہم آہنگی دیتا ہے۔
مضمون کو پروجیکٹس کے ساتھ ہم آہنگ کرنے سے تدریسی عمل زیادہ دلچسپ ہو جاتا ہے اور تصورات کو یاد رکھنے میں بہتری آتی ہے۔ کلاس سے پہلے ایک کم خطرے والا کوئز طالب علم کو موضوع سیکھنے کی نیت کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور خوشگوار بنانے کے لیے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر کیا جا سکتا ہے۔ پروجیکٹس چھوٹے سے شروع ہوتے ہیں اور 12 ہفتوں کے آخر تک پیچیدہ ہوتے جاتے ہیں۔ اس نصاب میں مشین لرننگ کی حقیقی دنیا میں استعمال پر بھی ایک پوسٹ اسکرپٹ شامل ہے، جسے اضافی کریڈٹ کے طور پر یا گفتگو کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔
یہ یقینی بنا کر کہ مواد پروجیکٹس کے مطابق ہو، عمل کو طلباء کے لیے زیادہ دلچسپ بنایا جاتا ہے اور تصورات کو یاد رکھنے کی صلاحیت بڑھائی جاتی ہے۔ اس کے علاوہ، کلاس سے پہلے ایک کم دباؤ والا کوئز طالب علم کی تعلیم پر توجہ قائم کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور دلچسپ بنانے کے لیے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس ابتدا میں چھوٹے ہوتے ہیں اور 12 ہفتوں کے آخری دورانیے میں پیچیدہ ہوتے چلے جاتے ہیں۔ اس نصاب میں مشین لرننگ کی حقیقی دنیا کی ایپلیکیشن پر ایک پوسٹ اسکرپٹ بھی شامل ہے، جسے اضافی کریڈٹ یا بحث کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔
> ہمارے [Code of Conduct](CODE_OF_CONDUCT.md)، [Contributing](CONTRIBUTING.md)، [Translations](..)، اور [Troubleshooting](TROUBLESHOOTING.md) ہدایات تلاش کریں۔ ہم آپ کی تعمیری رائے کا خیرمقدم کرتے ہیں!
> ہمارا [کوڈ آف کنڈکٹ](CODE_OF_CONDUCT.md)، [شراکت](CONTRIBUTING.md)، [تراجم](..)، اور [مسائل حل کرنے کے رہنما اصول](TROUBLESHOOTING.md) تلاش کریں۔ ہم آپ کی تعمیری رائے کا خیرمقدم کرتے ہیں!
> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر Python میں لکھے گئے ہیں، لیکن بہت سے R میں بھی دستیاب ہیں۔ ایک R سبق مکمل کرنے کے لیے، `/solution` فولڈر میں جائیں اور R اسباق تلاش کریں۔ ان میں .rmd توسیع شامل ہوتی ہے جو ایک **R Markdown** فائل کی نمائندگی کرتی ہے جسے آسانی سے `code chunks` (R یا دیگر زبانوں کے) اور `YAML header` (جو آؤٹ پٹس جیسے پی ڈی ایف کی فارمیٹنگ کے لیے رہنمائی کرتا ہے) کو `Markdown document` میں شامل کرنے کے طور پر بیان کیا جاسکتا ہے۔ اس طرح، یہ ڈیٹا سائنس کے لیے ایک مثالی مصنف فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو کوڈ، اس کا آؤٹ پٹ، اور آپ کے خیالات کو Markdown میں لکھنے کی سہولت دیتا ہے۔ مزید برآں، R Markdown دستاویزات کو پی ڈی ایف، HTML، یا Word جیسے آؤٹ پٹ فارمیٹس میں رینڈر کیا جا سکتا ہے۔
> **کوئزز کے بارے میں ایک نوٹ**: تمام کوئزز [Quiz App فولڈر](../../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) | جین اور کیسی • ایرک وانجاو |
| 12 | مزیدار ایشیائی اور ہندوستانی کھانے 🍜 | [درجہ بندی](4-Classification/README.md) | مزید درجہ بند کرنے والے | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.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-میانز جماعت بندی کے طریقہ کار کو دریافت کریں | [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-Learning کے ساتھ مضبوطی سے سیکھنے کا تعارف | [Python](8-Reinforcement/1-QLearning/README.md) | دمتری |
| 25 | پیٹر کو بھیڑیے سے بچائیں! 🐺 | [مضبوطی سے سیکھنا](8-Reinforcement/README.md) | مضبوطی سے سیکھنے کا جِم | [Python](8-Reinforcement/2-Gym/README.md) | دمتری |
| پوسٹ اسکرپٹ | حقیقی دنیا کے مشین لرننگ کے منظرنامے اور ایپلیکیشنز | [جنگل میں مشین لرننگ](9-Real-World/README.md) | کلاسیکی مشین لرننگ کی دلچسپ اور انکشاف کرنے والی حقیقی دنیا کی ایپلیکیشنز | [سبق](9-Real-World/1-Applications/README.md) | ٹیم |
| پوسٹ اسکرپٹ | RAI ڈیش بورڈ کے ذریعے مشین لرننگ ماڈل کی ڈیبگنگ | [جنگل میں مشین لرننگ](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 Markdown** فائل کی نمائندگی کرتی ہے جسے آسانی سے `code chunks` (R یا دیگر زبانوں کے) اور `YAML header` (جو اس بات کی رہنمائی کرتا ہے کہ مثلا PDF جیسے آؤٹ پٹ کو کیسے فارمیٹ کرنا ہے) کو `Markdown دستاویز` میں ایمبیڈ کرنے کے طور پر بیان کیا جا سکتا ہے۔ اس طرح، یہ ڈیٹا سائنس کے لیے ایک مثالی مصنفانہ فریم ورک کے طور پر کام کرتا ہے کیونکہ یہ آپ کو اپنے کوڈ، اس کا آؤٹ پٹ، اور آپ کے خیالات کو یکجا کرنے کی اجازت دیتا ہے، جو آپ کو Markdown میں لکھنے کی سہولت دیتا ہے۔ مزید برآں، R Markdown دستاویزات کو PDF، HTML، یا Word جیسے آؤٹ پٹ فارمیٹس میں رینڈر کیا جا سکتا ہے۔
> **کوئزز کے بارے میں ایک نوٹ**: تمام کوئزز [Quiz App فولڈر](../../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) | اسٹیفن |
| 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-Learning کے ذریعے تقویتی سیکھنے کا تعارف | [Python](8-Reinforcement/1-QLearning/README.md) | دمتری |
| 25 | پیٹر کو بھیڑیا سے بچائیں! 🐺 | [تقویتی سیکھنے](8-Reinforcement/README.md) | تقویتی سیکھنے کا جم | [Python](8-Reinforcement/2-Gym/README.md) | دمتری |
| پوسٹ اسکرپٹ | حقیقی دنیا کے ML سیناریوز اور اطلاقات | [ML in the Wild](9-Real-World/README.md) | کلاسیکی ML کی دلچسپ اور انکشافاتی حقیقی دنیا کی اطلاقات | [سبق](9-Real-World/1-Applications/README.md) | ٹیم |
| پوسٹ اسکرپٹ | RAI ڈیش بورڈ کے ذریعے ML میں ماڈل کی خرابی کی جانچ | [ML in the Wild](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)
## آف لائن رسائی
آپ اس دستاویز کو آف لائن [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` ٹائپ کریں۔ ویب سائٹ آپ کے لوکل ہوسٹ پر پورٹ 3000 پر چلائی جائے گی: `localhost:3000`۔
## پی ڈی ایفز
## PDF فائلیں
نصاب کی پی ڈی ایف لنکس کے ساتھ یہاں تلاش کریں [یہاں](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)۔
نصاب کا PDF ورژن لنکس کے ساتھ [یہاں] (https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) حاصل کریں۔
[](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/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)
### 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/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://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?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 ایپلیکیشنز بناتے ہوئے پھنس جاتے ہیں یا آپ کو سوالات ہیں، تو پریشان نہ ہوں — مدد دستیاب ہے۔
- ہر سبق کے بعد نوٹ بکس کا جائزہ لیں تاکہ سمجھ بوجھ بہتر ہو۔
## اضافی سیکھنے کے مشورے
- ہر سبق کے بعد نوٹ بکس کا جائزہ لیں تاکہ بہتر سمجھ آئے۔
- الگورتھمز کو خود سے نافذ کرنے کی مشق کریں۔
- سیکھے گئے تصورات کو استعمال کرتے ہوئے حقیقی دنیا کے ڈیٹا سیٹس کو دریافت کریں۔
- سیکھے گئے تصورات کا استعمال کرتے ہوئے حقیقی دنیا کے ڈیٹا سیٹس کو دریافت کریں۔
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ہیلے**:
یہ دستاویز مصنوعی ذہانت کی ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی مادری زبان میں معتبر ماخذ سمجھا جانا چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے ہونے والی کسی بھی غلط فہمی یا غلط تعبیر کی ذمہ داری ہم پر عائد نہیں ہوتی۔
**ڈس کلیمر**:
اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات کا خیال رکھیں کہ خودکار تراجم میں غلطیاں یا نقائص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا بدفہمی کے ذمہ دار نہیں ہیں۔
[](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")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - 使用线性回归预测类别特征")
> 🎥 点击上图观看关于使用类别变量的简短视频介绍。
> 🎥 点击上图观看一个简短视频,介绍如何使用类别特征。
这是平均价格如何随品种变化的示意图:
你可以看到平均价格如何根据品种变化:
<imgalt="Average price by variety"src="../../../../translated_images/zh-CN/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
我们正在进行 Discord 上的 AI 学习系列,了解更多并加入我们,时间为2025年9月18日至30日,网址为 [Learn with AI Series](https://aka.ms/learnwithai/discord)。您将获得使用 GitHub Copilot 进行数据科学的小贴士和技巧。
我们正在进行一系列 Discord “与 AI 一起学习”活动,学习详情和加入请访问 [与 AI 一起学习系列](https://aka.ms/learnwithai/discord) ,时间为2025年9月18日至30日。你将获得使用 GitHub Copilot 进行数据科学的技巧和窍门。


- 完成一个课程组后,访问[讨论区](https://github.com/microsoft/ML-For-Beginners/discussions),通过填写相应的 PAT 评分表来“实时学习”。“PAT”是进度评估工具,是您填写以促进学习的评分表。您也可以对其他人的 PAT 做出反应,以便我们一起学习。
- 完成一组课程后,请访问[讨论区](https://github.com/microsoft/ML-For-Beginners/discussions),填写相应的 PAT 评分表进行“公开学习”。PAT 是一个学习进度评价工具,你可以填写它,也可以对其他人的 PAT 进行回复,大家共同进步。
| 04 | 机器学习技术 | [Introduction](1-Introduction/README.md) | 机器学习研究人员用什么技术来构建机器学习模型? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
在这里找到课程目录的 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://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/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)