chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes)

pull/966/head
localizeflow[bot] 3 months ago
parent 099125979f
commit 8471aa58bc

@ -90,8 +90,8 @@
"language_code": "fa"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T08:37:25+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T19:42:07+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "fa"
},
@ -168,8 +168,8 @@
"language_code": "fa"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-04T22:42:21+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T19:43:04+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "fa"
},
@ -552,8 +552,8 @@
"language_code": "fa"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:20:51+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T19:39:02+00:00",
"source_file": "README.md",
"language_code": "fa"
},

@ -1,137 +1,135 @@
# ساخت مدل رگرسیون با استفاده از Scikit-learn: چهار روش رگرسیون
# ساخت یک مدل رگرسیون با استفاده از Scikit-learn: چهار روش رگرسیون
## یادداشت مبتدیان
## نکته مبتدی
رگرسیون خطی زمانی استفاده می‌شود که بخواهیم یک **مقدار عددی** (برای مثال، قیمت خانه، دما یا فروش) را پیش‌بینی کنیم.
این روش با پیدا کردن یک خط مستقیم که بهترین نمایش‌دهنده رابطه بین ویژگی‌های ورودی و خروجی است، کار می‌کند.
رگرسیون خطی زمانی استفاده می‌شود که بخواهیم یک **مقدار عددی** پیش‌بینی کنیم (برای مثال، قیمت خانه، دما یا فروش).
این مدل با یافتن یک خط راست که بهترین نماینده رابطه بین ویژگی‌های ورودی و خروجی باشد، کار می‌کند.
در این درس، تمرکز ما بر فهم مفهوم است قبل از اینکه به تکنیک‌های پیشرفته‌تر رگرسیون بپردازیم.
![رگرسیون خطی در مقابل چندجمله‌ای](../../../../translated_images/fa/linear-polynomial.5523c7cb6576ccab.webp)
> اینفوگرافیک توسط [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
در این درس، تمرکز ما بر درک مفهوم است قبل از کاوش روش‌های پیشرفته‌تر رگرسیون.
![رگرسیون خطی در مقابل چندجمله‌ای انفورگرافیک](../../../../translated_images/fa/linear-polynomial.5523c7cb6576ccab.webp)
> اینفوگرافیک توسط [داسانی مادیپالی](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://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "یادگیری ماشین برای مبتدیان درک رگرسیون خطی")
[![یادگیری ماشین برای مبتدیان - درک رگرسیون خطی](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](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` اشاره دارد.
>
>![محاسبه شیب](../../../../translated_images/fa/slope.f3c9d5910ddbfcf9.webp)
>
> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> به عبارت دیگر، و با اشاره به سوال اصلی داده‌های کدو حلوایی ما: «پیش‌بینی قیمت کدو حلوایی به ازای هر بوشل با توجه به ماه»، `X` اشاره به قیمت دارد و `Y` به ماه فروش اشاره می‌کند.
>
>![معادله را کامل کنید](../../../../translated_images/fa/calculation.a209813050a1ddb1.webp)
>
> مقدار 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` است نشان می‌دهد.
>
> ![محاسبه شیب](../../../../translated_images/fa/slope.f3c9d5910ddbfcf9.webp)
>
> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper)
>
> به عبارت دیگر، و با اشاره به سوال اصلی داده کدو تنبل ما: "پیش‌بینی قیمت کدو تنبل به ازای هر بوشل بر اساس ماه"، `X` اشاره به قیمت دارد و `Y` به ماه فروش.
>
> ![تکمیل معادله](../../../../translated_images/fa/calculation.a209813050a1ddb1.webp)
>
> مقدار 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
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | نوع پای | بالتیمور | جعبه ۱ و ۱/۹ بوشل | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | نوع پای | بالتیمور | جعبه ۱ و ۱/۹ بوشل | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | نوع پای | بالتیمور | جعبه ۱ و ۱/۹ بوشل | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | نوع پای | بالتیمور | جعبه ۱ و ۱/۹ بوشل | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | نوع پای | بالتیمور | جعبه ۱ و ۱ بوشل | 15.0 | 15.0 | 13.636364
ID | ماه | روز_سال | نوع | شهر | بسته‌بندی | قیمت پایین | قیمت بالا | قیمت
---|---|---|---|---|---|---|---|---
70 | 9 | 267 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 15.0 | 15.0 | 13.636364
> کد پاکسازی داده در [`notebook.ipynb`](notebook.ipynb) موجود است. ما همان مراحل پاکسازی درس قبلی را انجام داده‌ایم و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کردهایم:
> کد پاکسازی داده در [`notebook.ipynb`](notebook.ipynb) موجود است. ما مراحل پاکسازی مشابه درس قبلی را انجام داده‌ایم، و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کردیم:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
حالا که با ریاضیات پشت رگرسیون خطی آشنا شدید، بیایید یک مدل رگرسیون بسازیم تا ببینیم آیا می‌توانیم پیش‌بینی کنیم کدام بسته کدو بیشترین قیمت را خواهد داشت. کسی که کدو برای یک نقطه کدو حلوایی تعطیلات می‌خرد ممکن است بخواهد این اطلاعات را برای بهینه‌سازی خریدهای خود داشته باشد.
حالا که درک درستی از ریاضی پشت رگرسیون خطی دارید، بیایید یک مدل رگرسیون بسازیم تا ببینیم آیا می‌توانیم پیش‌بینی کنیم کدام بسته کدو تنبل بهترین قیمت‌ها را دارد. کسی که برای یک جشنواره کدو تنبل خرید می‌کند ممکن است بخواهد این اطلاعات را داشته باشد تا خریدهای خود را بهینه کند.
## جستجوی همبستگی
[![یادگیری ماشین برای مبتدیان جستجوی همبستگی: کلید رگرسیون خطی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "یادگیری ماشین برای مبتدیان جستجوی همبستگی: کلید رگرسیون خطی")
[![یادگیری ماشین برای مبتدیان - جستجوی همبستگی: کلید رگرسیون خطی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "یادگیری ماشین برای مبتدیان - جستجوی همبستگی: کلید رگرسیون خطی")
> 🎥 برای مشاهده ویدئوی کوتاه معرفی همبستگی روی تصویر بالا کلیک کنید.
> 🎥 برای تماشای ویدئوی کوتاه مرور همبستگی روی تصویر بالا کلیک کنید.
از درس قبلی احتمالاً دیده‌اید که میانگین قیمت برای ماه‌های مختلف به این شکل است:
شما احتمالاً در درس قبلی دیده‌اید که میانگین قیمت‌ها برای ماه‌های مختلف به این صورت است:
<img alt="میانگین قیمت بر اساس ماه" src="../../../../translated_images/fa/barchart.a833ea9194346d76.webp" width="50%"/>
این نشان می‌دهد که باید نوعی همبستگی وجود داشته باشد، و می‌توانیم مدل رگرسیون خطی را برای پیش‌بینی رابطه بین `ماه` و `قیمت` یا بین `روز سال` و `قیمت` آموزش دهیم. در اینجا نمودار پراکندگی رابطه دوم نشان داده شده است:
این نشان می‌دهد باید نوعی همبستگی وجود داشته باشد، و ما می‌توانیم مدل خطی رگرسیون را برای پیش‌بینی رابطه بین `ماه` و `قیمت`، یا بین `روز سال` و `قیمت` آموزش دهیم. اینجا نمودار پراکندگی که رابطه دوم را نشان می‌دهد دیده می‌شود:
<img alt="نمودار پراکندگی قیمت در مقابل روز سال" src="../../../../translated_images/fa/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="نمودار پراکندگی قیمت نسبت به روز سال" src="../../../../translated_images/fa/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
بیایید ببینیم با استفاده از تابع `corr` آیا همبستگی وجود دارد:
بیایید ببینیم آیا همبستگی با استفاده از تابع `corr` وجود دارد:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
به نظر می‌رسد همبستگی نسبتاً کوچک است، -۰.۱۵ برای `ماه` و -۰.۱۷ برای `روز سال`، اما ممکن است ارتباط مهم دیگری وجود داشته باشد. به نظر می‌رسد خوشه‌های مختلف قیمت با انواع مختلف کدو متناسب است. برای تأیید این فرض، بیایید هر دسته کدو را با رنگ متفاوت ترسیم کنیم. با ارسال پارامتر `ax` به تابع نمودار پراکندگی، می‌توانیم همه نقاط را روی یک نمودار ترسیم کنیم:
به نظر می‌رسد همبستگی نسبتاً کوچک است، -0.15 نسبت به `ماه` و -0.17 نسبت به `روز ماه`، اما ممکن است رابطه مهم دیگری وجود داشته باشد. به نظر می‌رسد خوشه‌های مختلف قیمت مرتبط با انواع مختلف کدو وجود دارد. برای تایید این فرض، اجازه دهید هر دسته کدو را با رنگ متفاوت رسم کنیم. با ارسال آرگومان `ax` به تابع نمودار پراکندگی می‌توانیم تمام نقاط را روی یک گراف نشان دهیم:
```python
ax=None
@ -140,41 +138,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="نمودار پراکندگی قیمت نسبت به روز سال با رنگ‌های متفاوت" src="../../../../translated_images/fa/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="نمودار پراکندگی قیمت در مقابل روز سال با رنگ" src="../../../../translated_images/fa/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
تحقیق ما نشان می‌دهد که نوع کدو تاثیر بیشتری روی قیمت کلی دارد تا تاریخ واقعی فروش. این را می‌توان با نمودار میله‌ای دید:
بررسی ما نشان می‌دهد که نوع کدو اثر بیشتری بر قیمت کل دارد نسبت به تاریخ فروش واقعی. می‌توانیم این را با نمودار میله‌ای ببینیم:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="نمودار میله‌ای قیمت نسبت به نوع" src="../../../../translated_images/fa/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="نمودار میله‌ای قیمت بر اساس نوع" src="../../../../translated_images/fa/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
فعلاً فقط روی یک نوع کدو، 'نوع پای' تمرکز کنیم و ببینیم تاریخ چه تأثیری روی قیمت دارد:
در حال حاضر فقط روی یک نوع کدو، یعنی 'نوع پای' تمرکز کنیم و ببینیم تاریخ فروش چه تاثیری بر قیمت دارد:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="نمودار پراکندگی قیمت در مقابل روز سال" src="../../../../translated_images/fa/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="نمودار پراکندگی قیمت نسبت به روز سال برای کدو نوع پای" 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()
```
رویکرد دیگر پر کردن این مقادیر خالی با میانگین ستون مربوطه است.
راه دیگر پر کردن مقادیر خالی با میانگین‌های ستون مربوطه است.
## رگرسیون خطی ساده
[![یادگیری ماشین برای مبتدیان رگرسیون خطی و چندجمله‌ای با استفاده از Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "یادگیری ماشین برای مبتدیان رگرسیون خطی و چندجمله‌ای با استفاده از Scikit-learn")
[![یادگیری ماشین برای مبتدیان - رگرسیون خطی و چندجمله‌ای با Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](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
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
خطای ما به نظر می‌رسد حدود ۲ واحد است که حدود ۱۷٪ می‌شود. چندان خوب نیست. شاخص دیگری برای کیفیت مدل، **ضریب تعیین** است که می‌توان آن را به صورت زیر به دست آورد:
خطای ما حدود ۲ واحد است که تقریباً ~۱۷٪ است، نه چندان خوب. یک شاخص دیگر از کیفیت مدل، **ضریب تعیین** است که می‌توان آن را به این صورت به دست آورد:
```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
@ -258,36 +256,36 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
استفاده از `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` برای دریافت نتایج پیش‌بینی استفاده کنیم. در اینجا نمودار داده‌های تست و منحنی تقریب آورده شده است:
<img alt="Polynomial regression" src="../../../../translated_images/fa/poly-results.ee587348f0f1f60b.webp" width="50%" />
با استفاده از رگرسیون چندجمله‌ای، می‌توانیم خطای میانگین مربعات کمی پایین‌تر و ضریب تعیین بالاتری به دست آوریم، اما نه به طور قابل توجه. باید ویژگی‌های دیگر را نیز مد نظر قرار دهیم!
با استفاده از رگرسیون چندجمله‌ای، می‌توانیم مقداری کاهش در MSE و افزایش در ضریب تعیین بدست آوریم، اما نه به صورت چشمگیر. باید ویژگی‌های دیگر را نیز در نظر بگیریم!
> می‌بینید که کمترین قیمت‌های کدو تنبل در حوالی هالووین مشاهده می‌شود. چگونه می‌توانید این را توضیح دهید؟
> می‌بینید که حداقل قیمت‌های کدو تنبل تقریباً حوالی هالووین مشاهده می‌شود. چگونه می‌توانید این را توضیح دهید؟
🎃 تبریک می‌گوییم، شما به تازگی مدلی ایجاد کردید که می‌تواند در پیش‌بینی قیمت کدو تنبل پای کمک کند. احتمالاً می‌توانید همین روند را برای همه نوع‌های کدو تنبل تکرار کنید، اما این کار خسته‌کننده خواهد بود. حالا بیایید یاد بگیریم چگونه تنوع کدو تنبل را در مدل خود در نظر بگیریم!
🎃 تبریک، شما به تازگی یک مدل ساخته‌اید که می‌تواند قیمت کدو تنبل پای را پیش‌بینی کند. احتمالاً می‌توانید همین روند را برای تمام انواع کدو تکرار کنید، اما این کار خسته‌کننده خواهد بود. حالا بیایید یاد بگیریم چگونه تنوع کدو را در مدل خود لحاظ کنیم!
## ویژگی‌های دسته‌ای
در دنیای ایده‌آل، می‌خواهیم بتوانیم قیمت‌ها را برای گونه‌های مختلف کدو تنبل با استفاده از همان مدل پیش‌بینی کنیم. اما ستون `Variety` کمی متفاوت از ستون‌هایی مثل `Month` است، چون شامل مقادیر غیرعددی است. چنین ستون‌هایی **دسته‌ای** نامیده می‌شوند.
در دنیای ایده‌آل، می‌خواهیم بتوانیم قیمت‌ها را برای انواع مختلف کدو با استفاده از همان مدل پیش‌بینی کنیم. اما ستون `Variety` کمی متفاوت از ستون‌هایی مثل `Month` است، چون حاوی مقادیر غیرعددی است. چنین ستون‌هایی **دسته‌ای** نامیده می‌شوند.
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 روی تصویر بالا کلیک کنید تا یک ویدیوی کوتاه درباره استفاده از ویژگی‌های دسته‌ای ببینید.
> 🎥 برای دیدن یک ویدیوی کوتاه درباره استفاده از ویژگی‌های دسته‌ای، روی تصویر بالا کلیک کنید.
در اینجا می‌بینید که قیمت متوسط چگونه بسته به نوع کدو تنبل تغییر می‌کند:
در اینجا می‌بینید که قیمت متوسط چگونه به نوع کدو بستگی دارد:
<img alt="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 کدگذاری کرد:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -304,14 +302,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
برای آموزش رگرسیون خطی با استفاده از تنوع کدگذاری شده به صورت یک‌گرمی به عنوان ورودی، فقط کافی است داده‌های `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)
# تنظیم و آموزش خط لوله
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# پیش‌بینی نتایج برای داده‌های تست
# پیش‌بینی نتایج برای داده‌های آزمون
pred = pipeline.predict(X_test)
# محاسبه MSE و ضریب تعیین
# محاسبه MSE و تعیین ضریب
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
@ -353,36 +351,36 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
این باید بهترین ضریب تعیین یعنی تقریباً ۹۷٪ و 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) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نواقصی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# طبقه‌بندی‌کننده‌های آشپزی 1
# طبقه‌بندهای آشپزی ۱
در این درس، از مجموعه داده‌ای که در درس قبلی ذخیره کرده‌اید و شامل داده‌های متوازن و پاک درباره آشپزی است، استفاده خواهید کرد.
در این درس، شما از مجموعه داده‌ای که در درس قبلی ذخیره کردید استفاده خواهید کرد، مجموعه داده‌ای متعادل و تمیز که تماماً درباره آشپزی‌هاست.
شما از این مجموعه داده با انواع طبقه‌بندی‌کننده‌ها برای _پیشبینی یک آشپزی ملی بر اساس گروهی از مواد اولیه_ استفاده خواهید کرد. در این فرآیند، بیشتر با روش‌هایی که الگوریتم‌ها برای وظایف طبقه‌بندی به کار گرفته می‌شوند، آشنا خواهید شد.
شما از این مجموعه داده با انواع مختلف طبقه‌بندها برای _پیشبینی یک آشپزی ملی مشخص بر اساس گروهی از مواد اولیه_ استفاده خواهید کرد. در حین انجام این کار، بیشتر با برخی از روش‌های استفاده از الگوریتم‌ها برای وظایف طبقه‌بندی آشنا خواهید شد.
## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
## [آزمون پیش‌از‌درس](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 وارد کنید:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
داده‌ها به این شکل هستند:
داده‌ها شبیه به این هستند:
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. حالا چند کتابخانه دیگر را وارد کنید:
۱. حال، چند کتابخانه دیگر وارد کنید:
```python
from sklearn.linear_model import LogisticRegression
@ -40,7 +40,7 @@
import numpy as np
```
1. مختصات X و y را به دو دیتافریم برای آموزش تقسیم کنید. دیتافریم `cuisine` می‌تواند به عنوان برچسب‌ها باشد:
۱. مختصات X و y را به دو دیتا‌فریم برای آموزش تقسیم کنید. `cuisine` می‌تواند دیتا‌فریم برچسب‌ها باشد:
```python
cuisines_label_df = cuisines_df['cuisine']
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. ستون `Unnamed: 0` و ستون `cuisine` را با استفاده از `drop()` حذف کنید. بقیه داده‌ها را به عنوان ویژگی‌های قابل آموزش ذخیره کنید:
۱. آن ستون `Unnamed: 0` و ستون `cuisine` را با فراخوانی `drop()` حذف کنید. بقیه داده‌ها را به‌عنوان ویژگی‌های قابل آموزش ذخیره کنید:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
ویژگی‌های شما به این شکل خواهند بود:
ویژگی‌های شما شبیه به این خواهند بود:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,75 +75,75 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
حالا آماده آموزش مدل خود هستید!
حالا آماده‌اید تا مدل خود را آموزش دهید!
## انتخاب طبقه‌بندی‌کننده
## انتخاب طبقه‌بند شما
حالا که داده‌های شما پاک و آماده آموزش هستند، باید تصمیم بگیرید که از کدام الگوریتم برای این کار استفاده کنید.
اکنون که داده‌های شما تمیز و آماده آموزش هستند، باید تصمیم بگیرید کدام الگوریتم را برای این کار استفاده کنید.
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 را مقایسه کرده و نتایج را به‌صورت تصویری نشان می‌دهد:
![مقایسه طبقه‌بندی‌کننده‌ها](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> نمودارها از مستندات Scikit-learn تولید شده‌اند
![مقایسه طبقه‌بندها](../../../../translated_images/fa/comparison.edfab56193a85e7f.webp)
> نمودارهای تولید شده در مستندات 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) امتحان کنید.
### یک رویکرد بهتر
### رویکردی بهتر
یک روش بهتر از حدس زدن بی‌هدف، دنبال کردن ایده‌های موجود در این [برگه تقلب یادگیری ماشین](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) قابل دانلود است. در اینجا، کشف می‌کنیم که برای مسئله چندکلاسه خود، چند انتخاب داریم:
![برگه تقلب برای مشکلات چندکلاسه](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> بخشی از برگه تقلب الگوریتم مایکروسافت، گزینه‌های طبقه‌بندی چندکلاسه را نشان می‌دهد
![برگه تقلب برای مسائل چندکلاسه](../../../../translated_images/fa/cheatsheet.07a475ea444d2223.webp)
> بخشی از برگه تقلب الگوریتم مایکروسافت، جزئیات گزینه‌های طبقه‌بندی چندکلاسه
✅ این برگه تقلب را دانلود کنید، چاپ کنید و روی دیوار خود آویزان کنید!
✅ این برگه تقلب را دانلود، چاپ کنید و روی دیوار خود آویزان کنید!
### استدلال
بیایید ببینیم آیا می‌توانیم با توجه به محدودیت‌هایی که داریم، راه‌حل‌های مختلف را بررسی کنیم:
بیایید ببینیم آیا می‌توانیم رویکردهای مختلف را با توجه به محدودیت‌هایی که داریم استدلال کنیم:
- **شبکه‌های عصبی سنگین هستند**. با توجه به مجموعه داده پاک اما حداقلی ما و این واقعیت که آموزش را به صورت محلی از طریق نوت‌بوک‌ها اجرا می‌کنیم، شبکه‌های عصبی برای این وظیفه سنگین هستند.
- **طبقه‌بندی‌کننده دوکلاسه مناسب نیست**. ما از طبقه‌بندی‌کننده دوکلاسه استفاده نمی‌کنیم، بنابراین گزینه 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ها](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![حل‌کننده‌ها](../../../../translated_images/fa/solvers.5fc648618529e627.webp)
## تمرین - تقسیم داده‌ها
ما می‌توانیم برای اولین آزمایش آموزشی خود روی رگرسیون لجستیک تمرکز کنیم، زیرا شما اخیراً درباره آن در درس قبلی یاد گرفتهاید.
داده‌های خود را با فراخوانی `train_test_split()` به گروه‌های آموزشی و آزمایشی تقسیم کنید:
ما می‌توانیم برای اولین آزمایش آموزش خود روی رگرسیون لجستیک تمرکز کنیم، چون اخیراً درباره آن در درس قبلی یاد گرفتید.
داده‌های خود را به گروه‌های آموزش و تست تقسیم کنید با فراخوانی `train_test_split()`:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -151,9 +151,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## تمرین - اعمال رگرسیون لجستیک
از آنجا که شما از حالت چندکلاسه استفاده می‌کنید، باید انتخاب کنید که از کدام _طرح_ استفاده کنید و کدام _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')
@ -163,11 +163,13 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ یک 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) در عمل ببینید:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
@ -181,9 +183,8 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
cuisine: indian
```
✅ یک شماره سطر متفاوت را امتحان کنید و نتایج را بررسی کنید.
۱. با بررسی بیشتر، می‌توانید دقت این پیش‌بینی را بررسی کنید:
✅ شماره ردیف دیگری را امتحان کنید و نتایج را بررسی کنید
1. کاوش عمیق‌تر، می‌توانید دقت این پیش‌بینی را بررسی کنید:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +196,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
نتیجه چاپ می‌شود - غذای هندی بهترین حدس مدل است، با احتمال خوب:
نتیجه چاپ می‌شود - بهترین حدس آن غذاهای هندی است، با احتمال خوب:
| | 0 |
| -------: | -------: |
@ -205,9 +206,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
آیا می‌توانید توضیح دهید چرا مدل مطمئن است که این یک غذای هندی است؟
✅ می‌توانید توضیح دهید چرا مدل تقریباً مطمئن است که این غذاهای هندی است؟
۱. جزئیات بیشتری را با چاپ گزارش طبقه‌بندی، همانطور که در درس‌های رگرسیون انجام دادید، دریافت کنید:
1. با چاپ گزارش طبقه‌بندی، همانطور که در درس‌های رگرسیون انجام دادید، جزئیات بیشتری بگیرید:
```python
y_pred = model.predict(X_test)
@ -221,25 +222,27 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀چالش
در این درس، از داده‌های پاک‌سازی‌شده خود برای ساخت یک مدل یادگیری ماشین استفاده کردید که می‌تواند یک غذای ملی را بر اساس مجموعه‌ای از مواد اولیه پیش‌بینی کند. زمانی را صرف کنید تا گزینه‌های مختلفی که 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) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نواقصی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات مهم، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که از استفاده از این ترجمه به وجود آید، نیستیم.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -8,18 +8,18 @@
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
### 🌐 پشتیبانی چند زبانه
### 🌐 پشتیبانی چندزبانه
#### پشتیبانی شده از طریق GitHub Action (خودکار و همیشه به‌روز)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[عربی](../ar/README.md) | [بنگالی](../bn/README.md) | [بلغاری](../bg/README.md) | [برمه‌ای (میانمار)](../my/README.md) | [چینی (ساده‌شده)](../zh-CN/README.md) | [چینی (سنتی، هنگ‌کنگ)](../zh-HK/README.md) | [چینی (سنتی، ماکائو)](../zh-MO/README.md) | [چینی (سنتی، تایوان)](../zh-TW/README.md) | [کرواسی](../hr/README.md) | [چکی](../cs/README.md) | [دانمارکی](../da/README.md) | [هلندی](../nl/README.md) | [استونیایی](../et/README.md) | [فنلاندی](../fi/README.md) | [فرانسوی](../fr/README.md) | [آلمانی](../de/README.md) | [یونانی](../el/README.md) | [عبری](../he/README.md) | [هندی](../hi/README.md) | [مجارستانی](../hu/README.md) | [اندونزیایی](../id/README.md) | [ایتالیایی](../it/README.md) | [ژاپنی](../ja/README.md) | [کانادا](../kn/README.md) | [خمری](../km/README.md) | [کره‌ای](../ko/README.md) | [لیتوانیایی](../lt/README.md) | [مالایی](../ms/README.md) | [مالایالام](../ml/README.md) | [مراتی](../mr/README.md) | [نپالی](../ne/README.md) | [پیجین نیجریه‌ای](../pcm/README.md) | [نروژی](../no/README.md) | [فارسی (Farsi)](./README.md) | [لهستانی](../pl/README.md) | [پرتغالی (برزیل)](../pt-BR/README.md) | [پرتغالی (پرتغال)](../pt-PT/README.md) | [پنجابی (گورموخی)](../pa/README.md) | [رومانیایی](../ro/README.md) | [روسی](../ru/README.md) | [صربی (سیریلیک)](../sr/README.md) | [اسلواکی](../sk/README.md) | [اسلوونیایی](../sl/README.md) | [اسپانیایی](../es/README.md) | [سواحیلی](../sw/README.md) | [سوئدی](../sv/README.md) | [تاگالوگ (فیلیپینی)](../tl/README.md) | [تامیل](../ta/README.md) | [تلوگو](../te/README.md) | [تایلندی](../th/README.md) | [ترکی](../tr/README.md) | [اوکراینی](../uk/README.md) | [اردو](../ur/README.md) | [ویتنامی](../vi/README.md)
[عربی](../ar/README.md) | [بنگالی](../bn/README.md) | [بلغاری](../bg/README.md) | [برمه‌ای (میانمار)](../my/README.md) | [چینی (ساده‌شده)](../zh-CN/README.md) | [چینی (سنتی، هنگ‌کنگ)](../zh-HK/README.md) | [چینی (سنتی، ماکائو)](../zh-MO/README.md) | [چینی (سنتی، تایوان)](../zh-TW/README.md) | [کرواتی](../hr/README.md) | [چکی](../cs/README.md) | [دانمارکی](../da/README.md) | [هلندی](../nl/README.md) | [استونیایی](../et/README.md) | [فنلاندی](../fi/README.md) | [فرانسوی](../fr/README.md) | [آلمانی](../de/README.md) | [یونانی](../el/README.md) | [عبری](../he/README.md) | [هندی](../hi/README.md) | [مجارستانی](../hu/README.md) | [اندونزیایی](../id/README.md) | [ایتالیایی](../it/README.md) | [ژاپنی](../ja/README.md) | [کانادا](../kn/README.md) | [خمری](../km/README.md) | [کره‌ای](../ko/README.md) | [لیتوانیایی](../lt/README.md) | [مالایی](../ms/README.md) | [مالایالم](../ml/README.md) | [مراتی](../mr/README.md) | [نپالی](../ne/README.md) | [نیجریه‌ای پجین](../pcm/README.md) | [نروژی](../no/README.md) | [فارسی](./README.md) | [لهستانی](../pl/README.md) | [پرتغالی (برزیل)](../pt-BR/README.md) | [پرتغالی (پرتغال)](../pt-PT/README.md) | [پنجابی (گرموقی)](../pa/README.md) | [رومانیایی](../ro/README.md) | [روسی](../ru/README.md) | [صربی (سیریلیک)](../sr/README.md) | [اسلواکی](../sk/README.md) | [اسلوونیایی](../sl/README.md) | [اسپانیایی](../es/README.md) | [سواحیلی](../sw/README.md) | [سوئدی](../sv/README.md) | [تاگالوگ (فیلیپینی)](../tl/README.md) | [تامیل](../ta/README.md) | [تلگو](../te/README.md) | [تایلندی](../th/README.md) | [ترکی](../tr/README.md) | [اوکراینی](../uk/README.md) | [اردو](../ur/README.md) | [ویتنامی](../vi/README.md)
> **ترجیح می‌دهید محلی کلون کنید؟**
> **ترجیح می‌دهید به صورت محلی کلون کنید؟**
>
> این مخزن شامل بیش از ۵۰ ترجمه زبان است که به طور قابل توجهی اندازه دانلود را افزایش می‌دهد. برای کلون کردن بدون ترجمه‌ها، از sparse checkout استفاده کنید:
> این مخزن شامل بیش از ۵۰ ترجمه زبانی است که حجم دانلود را به طور قابل توجهی افزایش می‌دهد. برای کلون بدون ترجمه‌ها، از sparse checkout استفاده کنید:
>
> **Bash / macOS / Linux:**
> **باش/مک‌او‌اس/لینوکس:**
> ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
@ -33,205 +33,215 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> این به شما همه چیز لازم برای تکمیل دوره را با سرعت دانلود بسیار بیشتر می‌دهد.
> این به شما همه چیز لازم برای تکمیل دوره با دانلود سریع‌تر را می‌دهد.
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### به جامعه ما بپیوندید
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
ما یک سری یادگیری در دیسکورد درباره هوش مصنوعی در حال اجرا داریم، بیشتر بیاموزید و به ما بپیوندید در [سری یادگیری با هوش مصنوعی](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵. شما نکات و ترفندهای استفاده از GitHub Copilot برای علم داده را خواهید گرفت.
ما مجموعه‌ای از جلسات یادگیری با هوش مصنوعی در دیسکورد داریم، برای اطلاعات بیشتر و پیوستن به ما به [دوره یادگیری با هوش مصنوعی](https://aka.ms/learnwithai/discord) از ۱۸ تا ۳۰ سپتامبر ۲۰۲۵ مراجعه کنید. در این دوره نکات و ترفندهای استفاده از GitHub Copilot برای علوم داده دریافت خواهید کرد.
![سری یادگیری با هوش مصنوعی](../../translated_images/fa/3.9b58fd8d6c373c20.webp)
![Learn with AI series](../../translated_images/fa/3.9b58fd8d6c373c20.webp)
# آموزش ماشین‌ یادگیری برای مبتدیان
# یادگیری ماشین برای مبتدیان - یک دوره آموزشی
> 🌍 سفر در سراسر جهان در حالی که با فرهنگ‌های مختلف جهان ماشین یادگیری را بررسی می‌کنیم 🌍
> 🌍 سفر به دور دنیا در حالی که یادگیری ماشین را از منظر فرهنگ‌های مختلف جهان بررسی می‌کنیم 🌍
حامیان ابر در مایکروسافت خوشحالند که یک برنامه درسی ۱۲ هفته‌ای با ۲۶ درس در مورد **ماشین یادگیری** ارائه دهند. در این برنامه درسی، درباره چیزی که گاهی اوقات به آن **ماشین یادگیری کلاسیک** گفته می‌شود، با استفاده عمدتاً از کتابخانه 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) با کلیک روی تصویر زیر ببینید.
[![بنر ML برای مبتدیان](../../translated_images/fa/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
---
## تیم ما را ملاقات کنید
## با تیم آشنا شوید
[![ویدیوی تبلیغاتی](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
[![ویدیو تبلیغاتی](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**گیف توسط** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 برای دیدن ویدیویی درباره پروژه و افراد سازنده آن روی تصویر بالا کلیک کنید!
> 🎥 برای مشاهده ویدیویی درباره پروژه و تیم سازنده آن روی تصویر بالا کلیک کنید!
---
## روش آموزشی
## روش تدریس
ما در ساخت این برنامه درسی دو اصل آموزشی را انتخاب کرده‌ایم: اطمینان از اینکه برنامه آموزشی **مبتنی بر پروژه و عملی** است و اینکه شامل **پرسشنامه‌های مکرر** باشد. علاوه بر این، این برنامه درسی یک **موضوع مشترک** دارد تا انسجام پیدا کند.
در طراحی این دوره، دو اصل آموزشی را انتخاب کرده‌ایم: اطمینان از آنکه دوره به صورت عملی و **مبتنی بر پروژه** باشد و اینکه شامل **آزمون‌های مکرر** باشد. علاوه بر این، این دوره یک **تم مشترک** دارد تا انسجام ایجاد کند.
تضمین تطابق محتوا با پروژه‌ها باعث جذاب‌تر شدن فرایند برای دانش‌آموزان شده و حفظ مفاهیم را افزایش می‌دهد. همچنین، پرسشنامه کم‌اهمیت قبل از کلاس قصد دانش‌آموز برای یادگیری موضوع را می‌سازد، در حالی که پرسشنامه دوم پس از کلاس ماندگاری بیشتری را تضمین می‌کند. این برنامه درسی طوری طراحی شده است که انعطاف‌پذیر و سرگرم‌کننده باشد و می‌توان آن را به طور کامل یا جزئی دنبال کرد. پروژه‌ها از کوچک شروع شده و تا پایان چرخه ۱۲ هفته‌ای به صورت افزایشی پیچیده می‌شوند. این برنامه درسی همچنین شامل پی‌نوشت درباره کاربردهای دنیای واقعی ماشین یادگیری است که می‌تواند به عنوان اعتبار اضافی یا مبنایی برای بحث استفاده شود.
با تضمین تطابق محتوا با پروژه‌ها، فرآیند برای دانش‌آموزان جذاب‌تر شده و حفظ مفاهیم افزایش می‌یابد. علاوه بر این، یک آزمون ساده پیش از کلاس، نیت دانش‌آموز را به سمت یادگیری قرار می‌دهد، و آزمون دوم پس از کلاس به حفظ بیشتر کمک می‌کند. این دوره به گونه‌ای طراحی شده که انعطاف‌پذیر و سرگرم‌کننده بوده و می‌توان آن را کامل یا بخشی از آن را دنبال کرد. پروژه‌ها از ابتدایی شروع شده و در پایان چرخه ۱۲ هفته‌ای پیچیده‌تر می‌شوند. این دوره همچنین پی‌نوشت‌هایی درباره کاربردهای واقعی یادگیری ماشین دارد که می‌توانند به عنوان اعتبار اضافی یا مبنای بحث استفاده شوند.
> ما [کد رفتار](CODE_OF_CONDUCT.md)، [راهنمای مشارکت](CONTRIBUTING.md)، [ترجمه‌ها](..)، و [عیب‌یابی](TROUBLESHOOTING.md) را در اختیار داریم. بازخورد سازنده شما را خوش‌آمد می‌گوییم!
> راهنمای [رفتار حرفه‌ای](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md)، [ترجمه‌ها](..) و [عیب‌یابی](TROUBLESHOOTING.md) ما را بیابید. ما بازخورد سازنده‌ی شما را خوش‌آمد می‌گوییم!
## هر درس شامل
## هر درس شامل می‌شود از
- خلاصه نکات اختیاری (sketchnote)
- ویدیوی مکمل اختیاری
- راهنمای ویدیویی (فقط برخی دروس)
- [آزمون پیش‌درس](https://ff-quizzes.netlify.app/en/ml/)
- نکته‌برداری اختیاری
- ویدیوی تکمیلی اختیاری
- ویدیو آموزشی (فقط برخی دروس)
- [آزمون گرم‌کننده پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
- درس مکتوب
- در دروس مبتنی بر پروژه، راهنمای گام به گام ساخت پروژه
- بررسی دانش
- برای دروس مبتنی بر پروژه، راهنمای گام‌به‌گام ساخت پروژه
- بررسی‌های دانش
- یک چالش
- خواندن مکمل
- تکلیف
- مطالعه تکمیلی
- تمرین
- [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
> **یادداشتی درباره زبان‌ها**: این درس‌ها عمدتاً به زبان پایتون نوشته شده‌اند، اما بسیاری از آن‌ها به زبان R نیز در دسترس هستند. برای تکمیل یک درس R، به پوشه `/solution` بروید و به دنبال درس‌های R بگردید. آن‌ها دارای پسوند .rmd هستند که نمایانگر یک فایل **R Markdown** است که می‌توان آن را به سادگی به صورت جاسازی `بخش‌های کد` (از 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
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j برای مبتدی‌ها](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js برای مبتدی‌ها](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain برای مبتدی‌ها](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP برای مبتدیان](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents برای مبتدیان](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AZD برای مبتدی‌ها](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI برای مبتدی‌ها](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### سری هوش مصنوعی مولد
[![هوش مصنوعی مولد برای مبتدیان](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![هوش مصنوعی مولد (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![هوش مصنوعی مولد (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![هوش مصنوعی مولد (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### سری آموزش هوش مصنوعی مولد
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### آموزش‌های اصلی
[![یادگیری ماشین برای مبتدیان](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![علوم داده برای مبتدیان](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![هوش مصنوعی برای مبتدیان](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![امنیت سایبری برای مبتدیان](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![توسعه وب برای مبتدیان](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![اینترنت اشیاء برای مبتدیان](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![توسعه XR برای مبتدیان](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
### یادگیری اساسی
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### سری همیار هوشمند (کاپیلت)
[![همیار هوش مصنوعی برای برنامه‌نویسی زوج](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![همیار برای C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![ماجراجویی کاپیلت](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
### سری کوپایلت
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## دریافت کمک
اگر گیر کردید یا سوالی درباره ساخت برنامه‌های هوش مصنوعی دارید، به همراه دیگر یادگیرندگان و توسعه‌دهندگان باتجربه در بحث‌های MCP بپیوندید. این یک جامعه حمایتی است که سوالات در آن پذیرفته می‌شود و دانش به طور آزاد به اشتراک گذاشته می‌شود.
اگر در یادگیری یادگیری ماشین یا ساخت برنامه‌های هوش مصنوعی به مشکل برخوردید یا سوالی داشتید، نگران نباشید — کمک در دسترس است.
می‌توانید در بحث‌ها با دیگر یادگیرندگان و توسعه‌دهندگان شرکت کنید، سوالات خود را بپرسید و ایده‌هایتان را با جامعه به اشتراک بگذارید.
- به جامعه بپیوندید تا سوالات خود را مطرح کنید و همراه با دیگران یاد بگیرید
- درباره مفاهیم یادگیری ماشین و ایده‌های پروژه بحث کنید
- از توسعه‌دهندگان باتجربه راهنمایی بگیرید
یک جامعه حمایت‌گرانه راهی عالی برای رشد مهارت‌ها و حل سریع‌تر مشکلات است.
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
اگر با اشکال، خطا یا پیشنهاد بهبود مواجه شدید، می‌توانید یک **Issue** در این مخزن باز کنید تا مشکل را گزارش دهید.
[![دیسکورد Microsoft Foundry](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
برای بازخورد درباره محصول یا جستجوی پست‌های موجود در جامعه، به فروم توسعه‌دهندگان مراجعه کنید:
اگر بازخورد محصول یا خطاهایی هنگام ساخت برنامه دارید، از اینجا دیدن کنید:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
[![فروم توسعه‌دهندگان Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](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) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نواقص باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما در قبال هر گونه سوءتفاهم یا تفسیر نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "ur"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T08:41:17+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T19:46:52+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ur"
},
@ -168,8 +168,8 @@
"language_code": "ur"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-06T08:54:49+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T19:47:58+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "ur"
},
@ -552,8 +552,8 @@
"language_code": "ur"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:22:14+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T19:45:12+00:00",
"source_file": "README.md",
"language_code": "ur"
},

@ -1,99 +1,97 @@
# سکائیکیٹ-لرن کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن کے چار طریقے
# Scikit-learn کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن کے چار طریقے
## ابتدائی نوٹ
لینیئر ریگریشن اُس وقت استعمال کی جاتی ہے جب ہم **عددی قیمت** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔
یہ کام اس طرح کرتا ہے کہ وہ ایک سیدھی لائن تلاش کرتا ہے جو ان پٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کی بہترین نمائندگی کرتی ہو۔
لکیری ریگریشن اس وقت استعمال ہوتی ہے جب ہم ایک **عددی قدر** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔
یہ اس طرح کام کرتی ہے کہ ایک سیدھی لائن تلاش کی جاتی ہے جو انپٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کو بہترین انداز میں ظاہر کرے۔
اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیتے ہیں اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔
![Linear vs polynomial regression infographic](../../../../translated_images/ur/linear-polynomial.5523c7cb6576ccab.webp)
> انفراگرافک از [دسنی مدیپالی](https://twitter.com/dasani_decoded)
## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ml/)
> ### [یہ سبق R میں بھی دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیں گے اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔
![لکیری بمقابلہ کثیر رکنی ریگریشن کی انفوگرافک](../../../../translated_images/ur/linear-polynomial.5523c7cb6576ccab.webp)
> انفوگرافک بنائی گئی توسط [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 کے ذریعے تصویری شکل میں بھی دیکھا ہے۔
اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی سے جا سکتے ہیں۔ جہاں تجزیاتی تصویر کشی (ویژولائزیشن) آپ کو ڈیٹا کو سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت اڈلز کی تربیت_ سے آتی ہے۔ ماڈلز تاریخی ڈیٹا پر تربیت دیے جاتے ہیں تاکہ خود بخود ڈیٹا کے باہمی تعلقات کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے نتائج کی پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔
اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی میں جانے کے لیے تیار ہیں۔ جب کہ بصری نمائندگی آپ کو ڈیٹا سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت اڈلز کی تربیت_ میں ہے۔ ماڈلز ماضی کے ڈیٹا پر تربیت دیتے ہیں تاکہ خود بخود ڈیٹا کی انحصاریت کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔
اس سبق میں، آپ دو اقسام کی ریگریشن کے بارے میں مزید سیکھیں گے: _بنیادی لینیئر ریگریشن_ اور _پولی نومیل ریگریشن_، ساتھ ہی ان تکنیکوں کے پیچھے کچھ ریاضی کے اصول بھی۔ یہ ماڈل ہمیں مختلف ان پٹ ڈیٹا کی بنیاد پر کدو کی قیمتیں پیش گوئی کرنے کی اجازت دیں گے۔
اس سبق میں، آپ دو قسم کی ریگریشنز کے بارے میں مزید جانیں گے: _بنیادی لکیری ریگریشن_ اور _کثیر رکنی ریگریشن_، اور ان تکنیکوں کے پیچھے کچھ ریاضی بھی سیکھیں گے۔ یہ ماڈلز ہمیں مختلف انپٹ ڈیٹا کے مطابق کدو کی قیمت کی پیش گوئی کرنے کی اجازت دیں گے۔
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
[![مشین لرننگ مبتدیوں کے لیے - لکیری ریگریشن کو سمجھنا](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](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` ہو۔
>
>![ڈھلوان کا حساب لگائیں](../../../../translated_images/ur/slope.f3c9d5910ddbfcf9.webp)
>
> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفراگرافک از [جن لوپر](https://twitter.com/jenlooper)
> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفوگرافک توسط [Jen Looper](https://twitter.com/jenlooper)
>
> دوسرے الفاظ میں، اور ہمارے کدو ڈیٹا کے اصل سوال کی طرف اشارہ کرتے ہوئے: "مہینے کے حساب سے بوشل قیمت کی پیش گوئی کریں"، `X` قیمت کی نمائندگی کرے گا اور `Y` فروخت کے مہینے کی۔
> دوسرے الفاظ میں، اور ہمارے کدو کے ڈیٹا کے آغاز کے سوال کی طرف اشارہ کرتے ہوئے: "ہر ماہ فی بوشل کدو کی قیمت کی پیش گوئی کریں"، `X` قیمت کی طرف اشارہ کرے گا اور `Y` فروخت کے مہینے کی طرف۔
>
>![مساوات مکمل کریں](../../../../translated_images/ur/calculation.a209813050a1ddb1.webp)
>
> 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
---|-------|-----------|---------|------|---------|-----------|------------|-------
@ -103,38 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق کی طرح صفائی کے قدم پورے کیے ہیں اور `DayOfYear` کالم کا حساب مندرجہ ذیل اظہار سے کیا ہے:
> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق کی طرح صفائی کے اقدامات کیے ہیں، اور `DayOfYear` کالم نچے دیے گئے اظہار کے ذریعے حساب کیا ہے:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
اب جب کہ آپ کو لکیری ریگریشن کے پیچھے کے ریاضی کا فہم حاصل ہے، آئیے ایک ریگریشن ماڈل بنائیں تاکہ دیکھ سکیں کہ آیا ہم پیش گوئی کر سکتے ہیں کہ کدو کے کون سے پیکج کی قیمت سب سے اچھی ہوگی۔ کوئی جو تعطیلات کے لیے کدو خرید رہا ہو، وہ اس معلومات کو حاصل کرنا چاہے گا تاکہ اپنے آرڈر کو بہتر بنا سکے۔
اب جب کہ آپ کو لینیئر ریگریشن کے پیچھے ریاضی کا علم ہے، آئیں ایک ریگریشن ماڈل بنائیں تاکہ دیکھیں کہ کیا ہم پیش گوئی کر سکتے ہیں کہ کس قسم کا پیکج کدو کی بہترین قیمت رکھے گا۔ کوئی جو چھٹی کے کدو کے پیچ کے لیے کدو خرید رہا ہے، وہ یہ معلومات اپنے خریداری کے انتخاب کو بہتر بنانے کے لیے چاہ سکتا ہے۔
## ربط کی تلاش
## تعلق کی تلاش
[![مشین لرننگ مبتدیوں کے لیے - ربط کی تلاش: لکیری ریگریشن کی کنجی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "مشین لرننگ مبتدیوں کے لیے - ربط کی تلاش: لکیری ریگریشن کی کنجی")
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ ربط کا مختصر ویڈیو جائزہ دیکھ سکیں۔
> 🎥 تعلق کے مختصر ویڈیو جائزے کے لیے اوپر تصویر پر کلک کریں۔
پچھلے سبق میں آپ نے شاید دیکھا ہو کہ مختلف مہینوں کی اوسط قیمت کچھ یوں دکھائی دیتی ہے:
پچھلے سبق سے آپ نے شاید دیکھا ہوگا کہ مختلف مہینوں کی اوسط قیمت کچھ اس طرح نظر آتی ہے:
<img alt="مہینوں کے مطابق اوسط قیمت" src="../../../../translated_images/ur/barchart.a833ea9194346d76.webp" width="50%"/>
<img alt="Average price by month" src="../../../../translated_images/ur/barchart.a833ea9194346d76.webp" width="50%"/>
یہ ظاہر کرتا ہے کہ یہاں ربط موجود ہونا چاہیے، اور ہم کوشش کر سکتے ہیں کہ لکیری ریگریشن ماڈل تیار کریں تاکہ `Month` اور `Price` کے درمیان یا `DayOfYear` اور `Price` کے درمیان تعلق کی پیش گوئی کریں۔ یہ اسکیٹر پلاٹ دکھاتا ہے جو بعد والے تعلق کو ظاہر کرتا ہے:
یہ ظاہر کرتا ہے کہ کچھ تعلق ہونا چاہیے، اور ہم کوشش کر سکتے ہیں کہ لینیئر ریگریشن ماڈل ٹرین کریں تاکہ تعلق کی پیش گوئی کریں، چاہے وہ `Month` اور `Price` کے درمیان ہو، یا `DayOfYear` اور `Price` کے درمیان۔ یہ اسکیٹر پلاٹ ہے جو بعد والے تعلق کو دکھاتا ہے:
<img alt="قیمت بمقابلہ دنِ سال کا اسکیٹر پلاٹ" src="../../../../translated_images/ur/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ur/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
آئیے `corr` فنکشن کا استعمال کرکے تعلق دیکھتے ہیں:
آئیے `corr` فنکشن استعمال کرکے دیکھتے ہیں کہ ربط کیا ہے:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
دیکھنے میں آتا ہے کہ تعلق کافی کم ہے، `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()):
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="قیمت بمقابلہ دنِ سال کا رنگین اسکیٹر پلاٹ" src="../../../../translated_images/ur/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ur/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
ہماری تحقیق ظاہر کرتی ہے کہ مجموعی قیمت پر کدو کی قسم کا اثر فروخت کی تاریخ کے مقابلے میں زیادہ ہے۔ ہم اسے بار گراف سے دیکھ سکتے ہیں:
ہماری تفتیش بتاتی ہے کہ مختلف اقسام کا مجموعی قیمت پر زیادہ اثر ہے بجائے اصلی فروخت کی تاریخ کے۔ ہم اس کو بار گراف سے دیکھ سکتے ہیں:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="قسم کے مقابلے قیمت کا بار گراف" src="../../../../translated_images/ur/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="Bar graph of price vs variety" src="../../../../translated_images/ur/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
ذرا اب ہم صرف ایک کدو کی قسم، 'pie type' پر توجہ دیں اور دیکھیں کہ قیمت پر تاریخ کا کیا اثر ہے:
آئیے اس لمحے صرف ایک کدو کی قسم، 'pie type' پر توجہ دیں اور دیکھیں کہ تاریخ کا قیمت پر کیا اثر ہے:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="قیمت بمقابلہ دنِ سال کا اسکیٹر پلاٹ" src="../../../../translated_images/ur/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
اگر ہم اب `corr` فنکشن استعمال کرکے `Price` اور `DayOfYear` کے درمیان ربط کا حساب لگائیں تو ہمیں تقریباً `-0.27` ملے گا—جوبتاتا ہے کہ پیش گوئی کرنے والا ماڈل تربیت دینا معقول ہے۔
<img alt="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()
```
ایک اور طریقہ یہ ہوگا کہ ان خالی اقدار کو متعلقہ کالم کی اوسط قیمت سے بھر دیا جائے۔
ایک اور طریقہ یہ ہو سکتا ہے کہ خالی قدروں کو متعلقہ کالم کی اوسط قیمت سے بھر دیا جائے۔
## سادہ لینیئر ریگریشن
## سادہ لکیری ریگریشن
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
[![مشین لرننگ مبتدیوں کے لیے - Scikit-learn استعمال کرتے ہوئے لکیری اور کثیر رکنی ریگریشن](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](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) میٹرکس کے ذریعے کیا جا سکتا ہے، جو کہ تمام متوقع اور پیشن گوئی شدہ قدروں کے درمیان تمام مربع فرقوں کے وسط کی جذر ہے۔
```python
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
ہماری غلطی تقریباً 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
@ -269,36 +257,36 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
`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` سے پیش گوئی حاصل کر سکتے ہیں۔ یہاں ایک گراف ہے جو ٹیسٹ ڈیٹا اور اندازہ شدہ منحنی دکھاتا ہے:
<img alt="Polynomial regression" src="../../../../translated_images/ur/poly-results.ee587348f0f1f60b.webp" width="50%" />
پولینومیل ریگریشن کا استعمال کرتے ہوئے، ہم تھوڑی کم MSE اور زیادہ کو ایفیشئنٹ آف ڈیٹرمنیشن حاصل کر سکتے ہیں، لیکن بہت زیادہ فرق نہیں۔ ہمیں دیگر خصوصیات کو بھی مدنظر رکھنا ہوگا!
پولینومیل ریگریشن سے ہمیں تھوڑا سا کم MSE اور زیادہ determination ملتا ہے، لیکن نمایاں طور پر نہیں۔ ہمیں دیگر فیچرز کو بھی مدنظر لینا ہوگا!
> آپ دیکھ سکتے ہیں کہ سب سے کم کدو کی قیمتیں تقریباً ہالووین کے ارد گرد دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
> آپ دیکھ سکتے ہیں کہ کم سے کم کدو کی قیمتیں ہالووین کے آس پاس دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟
🎃 مبارک ہو، آپ نے ایک ایسا ماڈل بنایا ہے جو پای کدو کی قیمت کی پیش گوئی میں مدد کر سکتا ہے۔ آپ شاید یہ عمل تمام قسم کے کدو کے لیے دہرائیں، لیکن یہ تھکا دینے والا ہوگا۔ اب سیکھیں کہ ہم اپنے ماڈل میں کدو کی قسم کو کیسے شامل کریں!
🎃 مبارک ہو، آپ نے ابھی ایک ماڈل بنایا ہے جو کدو کی قیمت پیش گوئی کرنے میں مدد دے سکتا ہے۔ آپ شاید یہی طریقہ کار تمام کدو کی اقسام کے لیے دہرائیں، لیکن یہ بہت تھکا دینے والا ہوگا۔ اب سیکھتے ہیں کہ اپنے ماڈل میں کدو کی اقسام کو کیسے شامل کریں!
## زمرہ جاتی خصوصیات (Categorical Features)
## زمرہ بندی شدہ خصوصیات
ایک مثالی دنیا میں، ہم چاہتے ہیں کہ ہم مختلف کدو کی اقسام کے لیے قیمتیں ایک ہی ماڈل سے پیش گوئی کر سکیں۔ تاہم، `Variety` کالم دیگر کالموں جیسے `Month` سے کچھ مختلف ہے کیونکہ اس میں غیر عددی (non-numeric) اقدار ہوتی ہیں۔ ایسے کالمز کو **زمرہ جاتی** کہتے ہیں۔
آئیڈیل دنیا میں، ہم ایک ہی ماڈل استعمال کر کے مختلف کدو کی اقسام کی قیمتیں پیش گوئی کرنا چاہتے ہیں۔ تاہم، `Variety` کالم `Month` جیسے کالموں سے مختلف ہے کیونکہ اس میں غیر عددی قدریں ہوتی ہیں۔ ایسے کالمز کو **زمرہ بندی شدہ** (categorical) کہا جاتا ہے۔
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ زمرہ جاتی خصوصیات کے استعمال کا مختصر ویڈیو جائزہ دیکھا جا سکے۔
> 🎥 اوپر موجود تصویر پر کلک کریں زمرہ بندی شدہ فیچرز کے استعمال پر مختصر ویڈیو کے لیے۔
یہاں آپ دیکھ سکتے ہیں کہ اوسط قیمت کس طرح قسم پر منحصر ہے:
یہاں ہم دیکھ سکتے ہیں کہ اوسط قیمت قسم پر کس طرح منحصر ہے:
<img alt="Average price by variety" src="../../../../translated_images/ur/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
قسم کو مدنظر رکھنے کے لیے، ہمیں پہلے اسے عددی صورت میں تبدیل کرنا یا **انکوڈ** کرنا ہوگا۔ اس کے لیے چند طریقے ہیں:
قسم کو مدنظر رکھنے کے لیے، سب سے پہلے ہمیں اس کو عددی شکل میں تبدیل کرنا پڑے گا، یعنی **انکوڈ** کرنا ہوگا۔ اس کے لیے کئی طریقے ہیں:
* سادہ **عددی انکوڈنگ** میں مختلف اقسام کی ایک جدول بنائی جاتی ہے، اور پھر قسم کے نام کی جگہ اس جدول میں اس کا انڈیکس لے لیتا ہے۔ یہ خطی ریگریشن کے لیے بہترین خیال نہیں ہے، کیونکہ خطی ریگریشن انڈیکس کی اصل عددی قدر لیتا ہے اور کسی کو ایفیشئنٹ سے ضرب دے کر نتیجہ میں شامل کر دیتا ہے۔ ہمارے کیس میں انڈیکس نمبر اور قیمت کے درمیان تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو کسی مخصوص ترتیب میں رکھیں۔
* **ون ہاٹ انکوڈنگ** `Variety` کالم کو 4 مختلف کالموں میں تبدیل کر دے گی، ہر قسم کے لیے ایک۔ ہر کالم میں `1` ہوگا اگر متعلقہ قطار مخصوص قسم کی ہو، ورنہ `0` ہوگا۔ اس کا مطلب ہے کہ خطی ریگریشن میں چار کو ایفیشئنٹس ہوں گے، ہر کدو کی قسم کے لیے ایک، جو اس خاص قسم کی "نکڑ قیمت" (یا اضافی قیمت) کے لیے ذمہ دار ہوگا۔
* سادہ **نو مریکی انکوڈنگ** مختلف اقسام کی ایک ٹیبل بنائے گی، اور پھر قسم کے نام کو اس ٹیبل میں انڈیکس سے تبدیل کر دے گی۔ یہ لائنیر ریگریشن کے لیے بہترین طریقہ نہیں ہے، کیونکہ لائنیر ریگریشن اس انڈیکس کی عددی قیمت لے کر اسے کسی coefficient کے ساتھ ضرب دے کر نتیجہ میں شامل کرتی ہے۔ ہمارے کیس میں، انڈیکس نمبر اور قیمت کے تعلق کا تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو مخصوص ترتیب دیں۔
* **ون-ہوٹ انکوڈنگ** `Variety` کالم کی جگہ چار مختلف کالم بنائے گی، ہر قسم کے لیے ایک۔ ہر کالم میں 1 تب ہوگا جب متعلقہ قطار اس قسم کی ہو، ورنہ 0 ہوگا۔ اس کا مطلب ہے کہ لائنیر ریگریشن میں چار coefficients ہوں گے، ہر کدو کی قسم کے لیے، جو اس خاص قسم کی "ابتدائی قیمت" (یا "اضافی قیمت") کی نمائندگی کریں گے۔
ذیل میں کوڈ دکھاتا ہے کہ ہم قسم کو ون ہاٹ انکوڈ کیسے کر سکتے ہیں:
نیچے دیا کوڈ دکھاتا ہے کہ قسم کو ون-ہوٹ انکوڈ کیسے کیا جائے:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -315,14 +303,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
ون ہاٹ انکوڈ شدہ قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے خطی ریگریشن کو ٹرین کرنے کے لیے، ہمیں صرف `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)
# پائپ لائن ترتیب دیں اور تربیت دیں
# پائپ لائن تیار کریں اور تربیت دیں
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# ٹیسٹ ڈیٹا کے لیے نتائج کی پیشن گوئی کریں
# ٹیسٹ ڈیٹا کے لیے نتائج کی پیش گوئی کریں
pred = pipeline.predict(X_test)
# MSE اور تعین کریں حساب لگائیں
# MSE اور تعیناتی کا حساب لگائیں
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
@ -364,9 +352,9 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
یہ تقریباً 97% تک بہترین کو ایفیشئنٹ آف ڈیٹرمنیشن اور MSE=2.23 (~8% پیش گوئی غلطی) دے گا۔
یہ ہمیں تقریباً 97% کی بہترین determination coefficient دے گا، اور MSE=2.23 (~8% میں پیشگوئی کی غلطی)۔
| ماڈل | MSE | کو ایفیشئنٹ آف ڈیٹرمنیشن |
| ماڈل | MSE | Determination |
|-------|-----|---------------|
| `DayOfYear` خطی | 2.77 (17.2%) | 0.07 |
| `DayOfYear` پولینومیل | 2.73 (17.0%) | 0.08 |
@ -374,26 +362,26 @@ print('Model determination: ', score)
| تمام خصوصیات خطی | 2.84 (10.5%) | 0.94 |
| تمام خصوصیات پولینومیل | 2.23 (8.25%) | 0.97 |
🏆 عمدہ! آپ نے ایک ہی سبق میں چار ریگریشن ماڈلز بنائے، اور ماڈل کا معیار 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) کا استعمال کرتے ہوئے کیا گیا ہے۔ اگرچہ ہم درستگی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا غلط فہمیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں مستند ماخذ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمہ کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# کھانے کی اقسام کی درجہ بندی 1
# باورچی خانے کی قسم بندی کرنے والے 1
اس سبق میں، آپ پچھلے سبق سے محفوظ کردہ ڈیٹا سیٹ استعمال کریں گے، جو کھانے کی اقسام کے بارے میں متوازن اور صاف ڈیٹا سے بھرا ہوا ہے۔
اس سبق میں، آپ پچھلے سبق سے محفوظ کردہ متوازن، صاف ڈیٹا پر مشتمل غذائی اقسام کے بارے میں ڈیٹا سیٹ استعمال کریں گے۔
آپ اس ڈیٹا سیٹ کو مختلف درجہ بندی کرنے والے الگورتھمز کے ساتھ استعمال کریں گے تاکہ _اجزاء کے ایک گروپ کی بنیاد پر کسی قومی کھانے کی قسم کی پیش گوئی کی جا سکے_۔ ایسا کرتے ہوئے، آپ ان طریقوں کے بارے میں مزید جانیں گے جن سے الگورتھمز کو درجہ بندی کے کاموں کے لیے استعمال کیا جا سکتا ہے۔
آپ اس ڈیٹا سیٹ کو مختلف قسم بندی کرنے والے الگورتھمز کے ساتھ استعمال کریں گے تاکہ _اجزاء کے ایک گروپ کی بنیاد پر دی گئی قومی غذا کی پیش گوئی کی جائے_. ایسا کرتے ہوئے، آپ الگورتھمز کے ذریعے قسم بندی کے کاموں کے لیے مختلف طریقوں کے بارے میں مزید جانیں گے۔
## [سبق سے پہلے کا کوئز](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 لائبریری کے ساتھ امپورٹ کریں:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
ڈیٹا اس طرح نظر آتا ہے:
ڈیٹا کچھ یوں نظر آتا ہے:
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. اب مزید لائبریریاں درآمد کریں:
1. اب، مزید چند لائبریریاں امپورٹ کریں:
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. X اور y کوآرڈینیٹس کو تربیت کے لیے دو ڈیٹا فریمز میں تقسیم کریں۔ `cuisine` لیبلز ڈیٹا فریم ہو سکتا ہے:
1. ٹریننگ کے لیے X اور y کو دو ڈیٹا فریمز میں تقسیم کریں۔ `cuisine` لیبلز کا ڈیٹا فریم ہو سکتا ہے:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
یہ اس طرح نظر آئے گا:
یہ کچھ یوں دکھائی دے گا:
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. `Unnamed: 0` کالم اور `cuisine` کالم کو `drop()` کال کر کے ہٹا دیں۔ باقی ڈیٹا کو تربیت کے قابل خصوصیات کے طور پر محفوظ کریں:
1. وہ `Unnamed: 0` کالم اور `cuisine` کالم کو `drop()` کال کر کے حذف کریں۔ باقی ڈیٹا کو ٹریننگ خصوصیات کے طور پر محفوظ کریں:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
آپ کی خصوصیات اس طرح نظر آئیں گی:
آپ کی خصوصیات ایسی نظر آتی ہیں:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,85 +75,84 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
اب آپ اپنے ماڈل کو تربیت دینے کے لیے تیار ہیں!
اب آپ اپنا ماڈل ٹرین کرنے کے لیے تیار ہیں!
## اپنے درجہ بندی کرنے والے کا انتخاب
## اپنا قسم بندی کرنے والا منتخب کرنا
اب جب کہ آپ کا ڈیٹا صاف اور تربیت کے لیے تیار ہے، آپ کو فیصلہ کرنا ہوگا کہ اس کام کے لیے کون سا الگورتھم استعمال کرنا ہے۔
اب جب کہ آپ کا ڈیٹا صاف اور تربیت کے لیے تیار ہے، آپ کو یہ فیصلہ کرنا ہوگا کہ کون سا الگورتھم استعمال کرنا ہے۔
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 کا موازنہ کرتا ہے اور نتائج کو بصری طور پر دکھاتا ہے:
![درجہ بندی کرنے والوں کا موازنہ](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> Scikit-learn کی دستاویزات پر تیار کردہ گراف
![comparison of classifiers](../../../../translated_images/ur/comparison.edfab56193a85e7f.webp)
> یہ گراف 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) کو ڈاؤنلوڈ کر کے اس میں بتائی گئی تجاویز پر عمل کریں۔ یہاں، ہم دیکھتے ہیں کہ ہمارے ملٹی کلاس مسئلے کے لیے ہمارے پاس کچھ آپشنز ہیں:
![ملٹی کلاس مسائل کے لیے چیٹ شیٹ](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> مائیکروسافٹ کے الگورتھم چیٹ شیٹ کا ایک حصہ، جو ملٹی کلاس درجہ بندی کے اختیارات کو تفصیل سے بیان کرتا ہے
![cheatsheet for multiclass problems](../../../../translated_images/ur/cheatsheet.07a475ea444d2223.webp)
> مائیکروسافٹ کے الگورتھم چیٹ شیٹ کا ایک حصہ، جو ملٹی کلاس قسم بندی کے آپشنز کی تفصیل بتاتا ہے
✅ اس چیٹ شیٹ کو ڈاؤن لوڈ کریں، پرنٹ کریں، اور اپنی دیوار پر لگائیں!
✅ اس چیٹ شیٹ کو ڈاؤنلوڈ کریں، پرنٹ نکالیں، اور اپنی دیوار پر لگائیں!
### استدلال
### منطق
آئیے دیکھتے ہیں کہ ہم مختلف طریقوں کے ذریعے استدلال کر سکتے ہیں، دی گئی حدود کو مدنظر رکھتے ہوئے:
آئیے دیکھیں کہ موجودہ پابندیوں کے پیش نظر مختلف طریقوں پر کیسے غور کیا جا سکتا ہے:
- **نیورل نیٹ ورکس بہت بھاری ہیں**۔ ہمارے صاف لیکن کم سے کم ڈیٹا سیٹ کو دیکھتے ہوئے، اور یہ حقیقت کہ ہم تربیت کو مقامی طور پر نوٹ بکس کے ذریعے چلا رہے ہیں، نیورل نیٹ ورکس اس کام کے لیے بہت بھاری ہیں۔
- **دو کلاس درجہ بندی کرنے والا نہیں**۔ ہم دو کلاس درجہ بندی کرنے والا استعمال نہیں کرتے، لہذا یہ ایک-بمقابلہ-سب کو خارج کر دیتا ہے۔
- **فیصلہ کن درخت یا لاجسٹک ریگریشن کام کر سکتے ہیں**۔ فیصلہ کن درخت کام کر سکتے ہیں، یا ملٹی کلاس ڈیٹا کے لیے لاجسٹک ریگریشن۔
- **ملٹی کلاس بوسٹڈ فیصلہ کن درخت ایک مختلف مسئلہ حل کرتے ہیں**۔ ملٹی کلاس بوسٹڈ فیصلہ کن درخت غیر پیرامیٹرک کاموں کے لیے سب سے زیادہ موزوں ہیں، جیسے کہ درجہ بندی بنانے کے لیے ڈیزائن کیے گئے کام، لہذا یہ ہمارے لیے مفید نہیں ہے۔
- **نیورل نیٹ ورکس بہت بھاری ہیں**۔ ہمارے صاف لیکن کم حجم ڈیٹا سیٹ اور لوکل نوٹ بکس میں ٹریننگ چلانے کی وجہ سے، نیورل نیٹ ورکس اس کام کے لیے زیادہ بھاری ہیں۔
- **کوئی دو-کلاس کلاسفیئر نہیں**۔ ہم دو-کلاس کلاسفیئر استعمال نہیں کرتے، اس لیے ون-ورسس-آل آؤٹ ہو جاتا ہے۔
- **فیصلہ ساز درخت یا لاجسٹک ریگریشن کام کر سکتا ہے**۔ فیصلہ ساز درخت یا ملٹی کلاس ڈیٹا کے لیے لاجسٹک ریگریشن مفید ہو سکتا ہے۔
- **ملٹی کلاس بوسٹڈ فیصلہ ساز درخت مختلف مسئلے کے لیے ہیں**۔ ملٹی کلاس بوسٹڈ فیصلہ ساز درخت غیر پیرا میٹرک کاموں کے لیے بہتر ہیں، جیسے رینکنگ بنانا، اس لیے ہمارے لیے یہ مفید نہیں۔
### 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 مختلف قسم کے ڈیٹا ڈھانچوں کے چیلنجز کو ہینڈل کرتے ہیں:
![solvers](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/ur/solvers.5fc648618529e627.webp)
## مشق - ڈیٹا تقسیم کریں
## مشق - ڈیٹا کو تقسیم کریں
ہم اپنی پہلی تربیتی کوشش کے لیے لاجسٹک ریگریشن پر توجہ مرکوز کر سکتے ہیں کیونکہ آپ نے حال ہی میں پچھلے سبق میں اس کے بارے میں سیکھا تھا۔
اپنے ڈیٹا کو تربیت اور جانچ کے گروپوں میں تقسیم کریں، `train_test_split()` کال کر کے:
چونکہ آپ نے حال ہی میں لاجسٹک ریگریشن کے بارے میں سیکھا ہے، تو اپنے پہلے ٹریننگ ٹرائل کے لیے ہم لاجسٹک ریگریشن پر توجہ دیں گے۔ اپنے ڈیٹا کو `train_test_split()` کال کر کے تربیتی اور ٹیسٹنگ گروپس میں تقسیم کریں:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## مشق - لاجسٹک ریگریشن کا اطلاق کریں
## مشق - لاجسٹک ریگریشن لگائیں
چونکہ آپ ملٹی کلاس کیس استعمال کر رہے ہیں، آپ کو یہ منتخب کرنا ہوگا کہ کون سا _اسکیم_ استعمال کرنا ہے اور کون سا _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')
@ -163,27 +162,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ ایک مختلف 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) کا ڈیٹا ٹیسٹ کر کے نتائج دیکھ سکتے ہیں:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
نتیجہ پرنٹ ہوتا ہے:
نتیجہ پرنٹ کیا جائے گا:
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ ایک مختلف قطار نمبر آزمائیں اور نتائج چیک کریں
1. مزید گہرائی میں جا کر، آپ اس پیش گوئی کی درستگی چیک کر سکتے ہیں:
✅ مختلف قطار نمبر آزمائیں اور نتائج چیک کریں
1. مزید گہرائی میں جا کر، آپ اس پیشگوئی کی درستگی چیک کر سکتے ہیں:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +195,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
نتیجہ پرنٹ ہوتا ہے - بھارتی کھانے کا اندازہ بہترین ہے، اچھی امکان کے ساتھ:
نتیجہ پرنٹ کیا گیا ہے - انڈین کھانا اس کی بہترین پیش گوئی ہے، اچھی امکانیت کے ساتھ:
| | 0 |
| -------: | -------: |
@ -205,9 +205,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ کیا آپ وضاحت کر سکتے ہیں کہ ماڈل کو کیوں یقین ہے کہ یہ بھارتی کھانا ہے؟
✅ کیا آپ وضاحت کر سکتے ہیں کہ ماڈل کیوں کافی حد تک یقینی ہے کہ یہ انڈین کھانا ہے؟
1. مزید تفصیل حاصل کریں، جیسا کہ آپ نے ریگریشن کے اسباق میں کیا تھا، ایک کلاسیفیکیشن رپورٹ پرنٹ کرکے:
1. مزید تفصیل حاصل کرنے کے لیے ایک درجہ بندی رپورٹ پرنٹ کریں، جیسا کہ آپ نے رجریشن کے اسباق میں کیا تھا:
```python
y_pred = model.predict(X_test)
@ -221,24 +221,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀چیلنج
اس سبق میں، آپ نے اپنے صاف شدہ ڈیٹا کا استعمال کرتے ہوئے ایک مشین لرننگ ماڈل بنایا جو اجزاء کی ایک سیریز کی بنیاد پر قومی کھانے کی پیش گوئی کر سکتا ہے۔ کچھ وقت نکالیں اور 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) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا نا درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ذریعہ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر عائد نہیں ہوتی۔
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,236 +1,247 @@
[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub لائسنس](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
[![GitHub تعاون کنندگان](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
[![GitHub مسائل](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
[![GitHub پل-ریکویسٹ](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
[![PRs خوش آمدید](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
[![GitHub دیکھنے والے](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
[![GitHub فورکس](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub ستارے](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
### 🌐 کثیراللسان مدد
### 🌐 کثیر لسانی تعاون
#### GitHub ایکشن کے ذریعے معاونت یافتہ (خودکار اور ہمیشہ اپ ٹو ڈیٹ)
#### GitHub ایکشن کے ذریعے تعاون یافتہ (خودکار اور ہمیشہ تازہ ترین)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](./README.md) | [Vietnamese](../vi/README.md)
[عربی](../ar/README.md) | [بنگالی](../bn/README.md) | [بلغاریائی](../bg/README.md) | [برمی (میانمار)](../my/README.md) | [چینی (سادہ)](../zh-CN/README.md) | [چینی (روایتی، ہانگ کانگ)](../zh-HK/README.md) | [چینی (روایتی، میکاؤ)](../zh-MO/README.md) | [چینی (روایتی، تائیوان)](../zh-TW/README.md) | [کریوٹ](../hr/README.md) | [چیک](../cs/README.md) | [ڈینش](../da/README.md) | [ڈچ](../nl/README.md) | [ایسٹونین](../et/README.md) | [فنش](../fi/README.md) | [فرانسیسی](../fr/README.md) | [جرمن](../de/README.md) | [یونانی](../el/README.md) | [عبرانی](../he/README.md) | [ہندی](../hi/README.md) | [ہنگیرین](../hu/README.md) | [انڈونیشیائی](../id/README.md) | [اطالوی](../it/README.md) | [جاپانی](../ja/README.md) | [کنڑا](../kn/README.md) | [کھمیر](../km/README.md) | [کوریائی](../ko/README.md) | [لتھوانین](../lt/README.md) | [ملایی](../ms/README.md) | [ملایالم](../ml/README.md) | [مراٹھی](../mr/README.md) | [نیپالی](../ne/README.md) | [نائجیریائی پیجین](../pcm/README.md) | [ناروے](../no/README.md) | [فارسی (اردو)](../fa/README.md) | [پولش](../pl/README.md) | [پرتگالی (برازیل)](../pt-BR/README.md) | [پرتگالی (پرتگال)](../pt-PT/README.md) | [پنجابی (گورمکھی)](../pa/README.md) | [رومانیائی](../ro/README.md) | [روسی](../ru/README.md) | [سربین (سیریلک)](../sr/README.md) | [سلوواک](../sk/README.md) | [سلووینیائی](../sl/README.md) | [ہسپانوی](../es/README.md) | [سواحلی](../sw/README.md) | [سویڈش](../sv/README.md) | [ٹاگالوگ (فلپائنی)](../tl/README.md) | [تمل](../ta/README.md) | [تیلگو](../te/README.md) | [تھائی](../th/README.md) | [ترکی](../tr/README.md) | [یوکرینیائی](../uk/README.md) | [اردو](./README.md) | [ویتنامی](../vi/README.md)
> **کیا آپ مقامی طور پر کلون کرنا پسند کریں گے؟**
> **مقامی طور پر کلون کرنا پسند کریں؟**
>
> اس ریپوزیٹری میں 50+ زبانوں کے تراجم شامل ہیں جو ڈاؤن لوڈ کے حجم کو نمایاں طور پر بڑھاتے ہیں۔ بغیر تراجم کے کلون کرنے کے لیے، sparse checkout استعمال کریں:
> اس ریپوزیٹری میں 50+ زبان کی تراجم شامل ہیں جو ڈاؤن لوڈ حجم میں نمایاں اضافہ کرتے ہیں۔ بغیر تراجم کے کلون کرنے کے لیے اسپارس چیکآؤٹ استعمال کریں:
>
> **Bash / macOS / Linux:**
> **باش / میک او ایس / لینکس:**
> ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
>
> **CMD (Windows):**
> **سی ایم ڈی (ونڈوز):**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> اس سے آپ کو کورس مکمل کرنے کے لیے درکار تمام سامان بہت تیز رفتار ڈاؤن لوڈ کے ساتھ مل جائے گا۔
> یہ آپ کو کورس مکمل کرنے کے لیے ہر چیز فراہم کرتا ہے، وہ بھی بہت تیز ڈاؤن لوڈ کے ساتھ۔
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### ہماری کمیونٹی میں شامل ہوں
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
ہمارے پاس ایک 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 کو ڈیٹا سائنس کے لیے استعمال کرنے کے لیے ٹپس اور ٹرکس حاصل کریں گے۔
![Learn with AI series](../../translated_images/ur/3.9b58fd8d6c373c20.webp)
![AI کے ساتھ سیکھیں سیریز](../../translated_images/ur/3.9b58fd8d6c373c20.webp)
# ابتدائیوں کے لئے مشین لرننگ - ایک نصاب
# مشین لرننگ برائے مبتدی - ایک نصاب
> 🌍 دنیا بھر کا سفر کریں جب ہم مشین لرننگ کو دنیا کی ثقافتوں کے ذریعے دریافت کرتے ہیں 🌍
> 🌍 دنیا بھر کا سفر کرتے ہوئے ہم دنیا کی ثقافتوں کے ذریعے مشین لرننگ کو دریافت کرتے ہیں 🌍
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" بٹن پر کلک کریں۔
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 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) پر نیچے دی گئی تصویر پر کلک کرکے۔
[![ML for beginners banner](../../translated_images/ur/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
[![ML for beginners بینر](../../translated_images/ur/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
---
## ٹیم سے ملاقات
## ٹیم سے ملیں
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
[![پرومو ویڈیو](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**گیف بنائی گئی** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) کی جانب سے
**گیف بنائی گئی** [موہت جیسال](https://linkedin.com/in/mohitjaisal)
> 🎥 پراجیکٹ اور اس کو بنانے والوں کے بارے میں ویڈیو کے لیے اوپر تصویر پر کلک کریں!
> 🎥 ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں جو اس پروجیکٹ اور اسے بنانے والے افراد کے بارے میں ہے!
---
## طریقہ تدریس
## تدریسی طریقہ کار
اس نصاب کو بناتے ہوئے ہم نے دو تعلیمی اصول منتخب کیے ہیں: اسے ہاتھوں سے کرنے والا **پروجیکٹ پر مبنی** بنانا اور اس میں **بار بار کوئزز** شامل کرنا۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **موضوع** بھی ہے جو یکجہتی فراہم کرتا ہے۔
ہم نے اس نصاب کی تعمیر کے دوران دو تدریسی اصول منتخب کیے ہیں: یہ یقینی بنانا کہ یہ ہاتھوں سے کرنے والا **پروجیکٹ پر مبنی** ہو اور اس میں **کثرت سے کوئزز** شامل ہوں۔ اس کے علاوہ، اس نصاب کا ایک مشترکہ **موضوع** ہے جو اسے ہم آہنگی دیتا ہے۔
مضمون کو پروجیکٹس کے ساتھ ہم آہنگ کرنے سے تدریسی عمل زیادہ دلچسپ ہو جاتا ہے اور تصورات کو یاد رکھنے میں بہتری آتی ہے۔ کلاس سے پہلے ایک کم خطرے والا کوئز طالب علم کو موضوع سیکھنے کی نیت کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور خوشگوار بنانے کے لیے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر کیا جا سکتا ہے۔ پروجیکٹس چھوٹے سے شروع ہوتے ہیں اور 12 ہفتوں کے آخر تک پیچیدہ ہوتے جاتے ہیں۔ اس نصاب میں مشین لرننگ کی حقیقی دنیا میں استعمال پر بھی ایک پوسٹ اسکرپٹ شامل ہے، جسے اضافی کریڈٹ کے طور پر یا گفتگو کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔
یہ یقینی بنا کر کہ مواد پروجیکٹس کے مطابق ہو، عمل کو طلباء کے لیے زیادہ دلچسپ بنایا جاتا ہے اور تصورات کو یاد رکھنے کی صلاحیت بڑھائی جاتی ہے۔ اس کے علاوہ، کلاس سے پہلے ایک کم دباؤ والا کوئز طالب علم کی تعلیم پر توجہ قائم کرتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور دلچسپ بنانے کے لیے ڈیزائن کیا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس ابتدا میں چھوٹے ہوتے ہیں اور 12 ہفتوں کے آخری دورانیے میں پیچیدہ ہوتے چلے جاتے ہیں۔ اس نصاب میں مشین لرننگ کی حقیقی دنیا کی ایپلیکیشن پر ایک پوسٹ اسکرپٹ بھی شامل ہے، جسے اضافی کریڈٹ یا بحث کی بنیاد کے طور پر استعمال کیا جا سکتا ہے۔
> ہمارے [Code of Conduct](CODE_OF_CONDUCT.md)، [Contributing](CONTRIBUTING.md)، [Translations](..)، اور [Troubleshooting](TROUBLESHOOTING.md) ہدایات تلاش کریں۔ ہم آپ کی تعمیری رائے کا خیرمقدم کرتے ہیں!
> ہمارا [کوڈ آف کنڈکٹ](CODE_OF_CONDUCT.md)، [شراکت](CONTRIBUTING.md)، [تراجم](..)، اور [مسائل حل کرنے کے رہنما اصول](TROUBLESHOOTING.md) تلاش کریں۔ ہم آپ کی تعمیری رائے کا خیرمقدم کرتے ہیں!
## ہر سبق میں شامل ہے
- اختیاری سکیچ نوٹ
- اختیاری ضمنی ویڈیو
- ویڈیو واک تھرو (صرف بعض اسباق)
- ویڈیو واک تھرو (صرف کچھ اسباق)
- [پری لیکچر وارم اپ کوئز](https://ff-quizzes.netlify.app/en/ml/)
- تحریری سبق
- پراجیکٹ پر مبنی اسباق کے لیے، قدم بہ قدم گائیڈز کہ کیسے پروجیکٹ بنایا جائے
- نالج چیکس
- پروجیکٹ پر مبنی اسباق کے لیے، پروجیکٹ بنانے کے لیے قدم بہ قدم رہنمائی
- علمی جانچیں
- ایک چیلنج
- ضمنی مطالعہ
- اسائنمنٹ
- [پوسٹ لیکچر کوئز](https://ff-quizzes.netlify.app/en/ml/)
> **زبانوں کے بارے میں ایک نوٹ**: یہ اسباق بنیادی طور پر 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) | جین اور کیسی • ایرک وانجاؤ |
| 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-Means کلسٹرنگ طریقہ کار کو دریافت کریں | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جین • ایرک وانجاؤ |
| 16 | نیچرل لینگویج پروسیسنگ کا تعارف ☕️ | [نیچرل لینگویج پروسیسنگ](6-NLP/README.md) | ایک سادہ بوٹ بنا کر NLP کی بنیادی باتیں سیکھیں | [Python](6-NLP/1-Introduction-to-NLP/README.md) | اسٹیفن |
| 17 | عام NLP کے کام ☕️ | [نیچرل لینگویج پروسیسنگ](6-NLP/README.md) | زبان کی ساختوں سے نمٹنے کے لیے عمومی کاموں کی سمجھ بوجھ کے ذریعے اپنی NLP معلومات کو گہرا کریں | [Python](6-NLP/2-Tasks/README.md) | اسٹیفن |
| 18 | ترجمہ اور جذباتی تجزیہ ♥️ | [نیچرل لینگویج پروسیسنگ](6-NLP/README.md) | جین آسٹن کے ساتھ ترجمہ اور جذباتی تجزیہ | [Python](6-NLP/3-Translation-Sentiment/README.md) | اسٹیفن |
| 19 | یورپ کے رومانٹک ہوٹل ♥️ | [نیچرل لینگویج پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | اسٹیفن |
| 20 | یورپ کے رومانٹک ہوٹل ♥️ | [نیچرل لینگویج پروسیسنگ](6-NLP/README.md) | ہوٹل کے جائزوں کے ساتھ جذباتی تجزیہ 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | اسٹیفن |
| 21 | ٹائم سیریز پیشن گوئی کا تعارف | [ٹائم سیریز](7-TimeSeries/README.md) | ٹائم سیریز پیشن گوئی کا تعارف | [Python](7-TimeSeries/1-Introduction/README.md) | فرانسسکا |
| 22 | ⚡️ عالمی بجلی کا استعمال ⚡️ - ARIMA کے ساتھ ٹائم سیریز پیشن گوئی | [ٹائم سیریز](7-TimeSeries/README.md) | ARIMA کے ساتھ ٹائم سیریز پیشن گوئی | [Python](7-TimeSeries/2-ARIMA/README.md) | فرانسسکا |
| 23 | ⚡️ عالمی بجلی کا استعمال ⚡️ - SVR کے ساتھ ٹائم سیریز پیشن گوئی | [ٹائم سیریز](7-TimeSeries/README.md) | سپورٹ ویکٹر ریگریسر کے ساتھ ٹائم سیریز پیشن گوئی | [Python](7-TimeSeries/3-SVR/README.md) | انربن |
| 24 | تقویتی سیکھنے کا تعارف | [تقویتی سیکھنے](8-Reinforcement/README.md) | Q-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) حاصل کریں۔
## 🎒 دیگر کورسز
## 🎒 دیگر کورسز
ہماری ٹیم دیگر کورسز بھی تیار کرتی ہے! چیک کریں:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j برائے ابتدائی](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js برائے ابتدائی](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain برائے ابتدائی](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / ایجنٹس
[![AZD برائے ابتدائی](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI برائے ابتدائی](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے MCP](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے AI ایجنٹس](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### جنریٹو اے آئی سیریز
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### تخلیقی AI سلسلہ
[![ابتدائیوں کے لئے تخلیقی AI](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![تخلیقی AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![تخلیقی AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![تخلیقی AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### بنیادی تعلیم
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے ML](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے ڈیٹا سائنس](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے AI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے سائبر سیکیورٹی](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![ابتدائیوں کے لئے ویب ڈیولپمنٹ](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے IoT](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![ابتدائیوں کے لئے XR ڈیولپمنٹ](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### کوپائلٹ سیریز
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
### کوپائلٹ سلسلہ
[![AI کے ساتھ پیئر پروگرامنگ کے لیے کوپائلٹ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET کے لئے کوپائلٹ](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![کوپائلٹ مہم جوئی](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## مدد لینا
## مدد حاصل کرنا
اگر آپ پھنس جائیں یا AI ایپس بنانے کے بارے میں کوئی سوال ہو تو۔ MCP کے بارے میں بحث میں شریک سیکھنے والوں اور تجربہ کار ڈیولپرز سے جڑیں۔ یہ ایک معاون کمیونٹی ہے جہاں سوالات خوش آمدید ہیں اور علم کھلے دل سے شیئر کیا جاتا ہے۔
اگر آپ مشین لرننگ سیکھتے ہوئے یا AI ایپلیکیشنز بناتے ہوئے پھنس جاتے ہیں یا آپ کو سوالات ہیں، تو پریشان نہ ہوں — مدد دستیاب ہے۔
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
آپ دوسرے سیکھنے والوں اور ڈویلپرز کے ساتھ بات چیت میں شامل ہو سکتے ہیں، سوالات پوچھ سکتے ہیں، اور اپنی سوچ کمیونٹی کے ساتھ شیئر کر سکتے ہیں۔
- سوالات پوچھنے اور دوسروں کے ساتھ سیکھنے کے لیے کمیونٹی میں شامل ہوں
- مشین لرننگ کے تصورات اور پروجیکٹ آئیڈیاز پر بات چیت کریں
- تجربہ کار ڈویلپرز سے رہنمائی حاصل کریں
ایک معاون کمیونٹی آپ کی مہارتوں کو بڑھانے اور مسائل کو جلد حل کرنے کا بہترین ذریعہ ہے۔
اگر آپ کے پاس پروڈکٹ فیڈ بیک یا بلڈنگ کے دوران غلطیاں ہوں تو یہاں دیکھیں:
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
اگر آپ کو بگز، غلطیاں، یا بہتری کے لئے تجاویز نظر آئیں، تو آپ اس ریپوزیٹری میں ایک **مسئلہ** بھی کھول کر مسئلہ رپورٹ کر سکتے ہیں۔
پروڈکٹ فیڈبیک کے لیے یا موجودہ کمیونٹی پوسٹس تلاش کرنے کے لیے، ڈیولپر فورم ملاحظہ کریں:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## اضافی تعلیمی نکات
- ہر سبق کے بعد نوٹ بکس کا جائزہ لیں تاکہ سمجھ بوجھ بہتر ہو۔
## اضافی سیکھنے کے مشورے
- ہر سبق کے بعد نوٹ بکس کا جائزہ لیں تاکہ بہتر سمجھ آئے۔
- الگورتھمز کو خود سے نافذ کرنے کی مشق کریں۔
- سیکھے گئے تصورات کو استعمال کرتے ہوئے حقیقی دنیا کے ڈیٹا سیٹس کو دریافت کریں۔
- سیکھے گئے تصورات کا استعمال کرتے ہوئے حقیقی دنیا کے ڈیٹا سیٹس کو دریافت کریں۔
---
<!-- 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) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات کا خیال رکھیں کہ خودکار تراجم میں غلطیاں یا نقائص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا بدفہمی کے ذمہ دار نہیں ہیں۔
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "zh-CN"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T08:44:09+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T19:51:59+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "zh-CN"
},
@ -168,8 +168,8 @@
"language_code": "zh-CN"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T09:06:37+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T19:52:51+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "zh-CN"
},
@ -552,8 +552,8 @@
"language_code": "zh-CN"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:23:52+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T19:49:40+00:00",
"source_file": "README.md",
"language_code": "zh-CN"
},

@ -2,98 +2,96 @@
## 初学者提示
线性回归用于我们想预测**数值型**的场景(例如房价、温度、销售额)。
它通过找到一条最能代表输入特征和输出关系的直线来工作
线性回归用于预测<strong>数值型数据</strong>(例如房价、温度或销售额)。
其原理是找到一条最佳拟合输入特征与输出之间关系的直线
本课侧重于理解概念,之后再探讨更高级的回归技术。
![线性回归与多项式回归信息图](../../../../translated_images/zh-CN/linear-polynomial.5523c7cb6576ccab.webp)
本课重点理解概念,再探讨更高级的回归技术。
![线性回归与多项式回归信息图](../../../../translated_images/zh-CN/linear-polynomial.5523c7cb6576ccab.webp)
> 信息图作者:[Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测验](https://ff-quizzes.netlify.app/en/ml/)
## [课前测试](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 将数据进行了可视化。
现在你准备深入了解机器学习中的回归。虽然可视化有助于理解数据但机器学习的真正力量在于_训练模型_。模型基于历史数据训练自动捕捉数据之间的依赖关系从而能够预测模型未见过的新数据结果
现在你准备深入学习机器学习中的回归。虽然可视化有助于理解数据但机器学习的真正威力来自于_训练模型_。模型在历史数据上训练能够自动捕捉数据间的依赖关系并能对未见过的新数据做出预测
本课将介绍两种回归类型_基础线性回归__多项式回归_,以及这些技术背后的部分数学原理。利用这些模型,我们可以根据不同输入数据预测南瓜价格。
本课将介绍两种回归类型_基础线性回归_和_多项式回归_并讲解其中的数学原理。这些模型将帮助我们根据不同输入预测南瓜价格。
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
[![为初学者讲解线性回归](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "为初学者讲解线性回归")
> 🎥 点击上方图片观看线性回归简短视频。
> 🎥 点击上方图片观看线性回归简短视频概览
> 在整个课程中,我们假设数学基础较少,并努力让来自其它领域的学生也能理解,所以请注意文中的提示、🧮 计算说明、图示及其它辅助学习工具。
> 在整个课程中,我们假设学生数学基础有限,力求让其他领域的学生也能理解,因此请关注笔记、🧮 数学提示、图表等辅助学习工具。
### 先决条件
你现在应该熟悉我们正在检查的南瓜数据结构。该数据已预加载并预先清理,可在本课的 _notebook.ipynb_ 文件中找到。文件中,南瓜价格以每蒲式耳计算并显示在一个新的数据框架中。请确保能在 Visual Studio Code 的内核中运行这些笔记本文件
到目前为止,你应该熟悉我们正在研究的南瓜数据结构了。课中的 _notebook.ipynb_ 文件中已经预加载并预处理了数据。文件中每个蒲式耳的南瓜价格展示于新的数据框中。确保你可以在 Visual Studio Code 的内核中运行这些笔记本。
### 准备工作
提醒一下,你加载这些数据是为了对它提出问题。
提醒一下,你加载数据是为了提出问题。
- 什么时候买南瓜最合适?
- 一箱迷你南瓜的价格会是多少?
- 我应该买半蒲式耳篮装,还是 1又1/9蒲式耳盒装
让我们继续挖掘这些数据。
- 什么时候买南瓜最合适?
- 一箱迷你南瓜价格大概是多少?
- 应该买半蒲式耳篮装还是1 1/9蒲式耳盒装
让我们继续挖掘数据。
在上节课,你创建了一个 Pandas 数据框并从原始数据集中提取了一部分数据按蒲式耳标准化了价格。这样做只能获取约400个数据点且只涉及秋季月份。
上一课你创建了 Pandas 数据框并填充了部分原始数据将价格标准化为每蒲式耳价格。但这样你只能获得约400条数据且仅限秋季月份。
看看本课随附笔记本中预加载的数据。数据已预加载,并绘制了初步的散点图以显示月份数据。也许通过进一步清理,我们可以更详细地了解数据的性质。
看看本课随附笔记本中预加载的数据。数据已加载,并绘制了月份散点图。或许我们可以通过更深入的数据清洗来了解数据的本质。
## 线性回归线
## 线性回归线
正如你在第一课中学到的一样,线性回归的目标是绘制一条线,用来:
正如第1课所学线性回归的目标是绘制一条线来:
- **显示变量关系**。展示变量间的关系
- **做出预测**。准确预测新数据点相对于该线的位置
- <strong>展示变量关系</strong>。显示变量之间的关系。
- <strong>进行预测</strong>。准确预测新数据点相对于该线的位置。
通常通过**最小二乘回归**来绘制这类线。术语“最小二乘”指的是最小化模型的总误差的过程。对于每个数据点,我们测量实际点到回归线的垂直距离(称为残差)。
<strong>最小二乘回归</strong>通常会绘制这样的线。“最小二乘”指的是最小化模型总误差的过程。对每个数据点,测量其与回归线的垂直距离(称为残差)。
我们对这些距离做平方处理,主要出于两个原因:
我们平方这些距离主要有两个原因:
1. **大小而非方向**:我们希望将 -5 的误差与 +5 的误差视为相同。平方使所有值均为正数。
1. <strong>大小优先于方向</strong>:想让误差-5与+5同等对待平方将所有值变为正数。
2. **惩罚异常值**:平方使得较大的误差权重更大,促使回归线更贴近远离的点。
2. <strong>惩罚离群值</strong>:平方会给较大误差更高权重,迫使回归线更靠近远离的点。
然后我们将这些平方值加总。目标是找到这条最终平方和最小的线——这就是“最小二乘”的由来。
接着将所有平方值相加。目标是找到使该总和最小的线——这就是“最小二乘”名称的由来。
> **🧮 给我看数学过程**
>
> 这条被称作_最佳拟合直线_的线可以用[以下方程表示](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``Y` 的值。
>
>![计算斜率](../../../../translated_images/zh-CN/slope.f3c9d5910ddbfcf9.webp)
>
> 首先计算斜率 `b`。信息图作者[Jen Looper](https://twitter.com/jenlooper)
>
> 换句话说,结合我们的南瓜数据原始问题:“按月份预测每蒲式耳的南瓜价格”,`X` 是价格,`Y` 是销售月份。
>
>![完方程](../../../../translated_images/zh-CN/calculation.a209813050a1ddb1.webp)
>
> 计算 `Y` 的值。如果你支付大约 4 美元,那应该是四月!信息图作者:[Jen Looper](https://twitter.com/jenlooper)
>
> 计算该直线的数学过程必须呈现斜率,同时也依赖于截距,即当 `X = 0``Y` 的位置。
>
> 你可以 [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`,表示 `X=0` 时的 `Y` 值。
>
>![计算斜率](../../../../translated_images/zh-CN/slope.f3c9d5910ddbfcf9.webp)
>
> 首先计算斜率 `b`。信息图作者 [Jen Looper](https://twitter.com/jenlooper)
>
> 换句话说,对于南瓜数据:“按月份预测南瓜每蒲式耳价格”,`X` 是价格,`Y` 是销售月份。
>
>![完方程](../../../../translated_images/zh-CN/calculation.a209813050a1ddb1.webp)
>
> 计算 `Y` 值。如果你付了大约4美元那一定是4月信息图作者 [Jen Looper](https://twitter.com/jenlooper)
>
> 计算公式要展示斜率,还要考虑截距,即当 `X=0``Y` 的位置。
>
> 你可以参考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 网站来学习计算方法。还可以访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)观察数字如何影响回归线。
## 相关性
还有一个术语需要理解:给定 X 和 Y 变量间的**相关系数**。借助散点图,你可以快速直观地看出这个系数。数据点沿一条整齐线分布的散点图显示高相关性,数据点杂乱无序分布的则显示低相关性
另一个要理解的术语是给定 `X``Y` 变量之间的<strong>相关系数</strong>。用散点图可以快速观察这一系数。数据点整齐排列成线的图表相关性高,点散布杂乱无章则相关性低
一个好的线性回归模型通常会在线性回归方程下,利用最小二乘法,具有较高(接近 1 远离 0的相关系数
好的线性回归模型会有较高的接近于1而非0相关系数采用最小二乘法拟合回归线
✅ 运行本课配套的笔记本,观察“月份”与“价格”的散点图。根据你对散点图的视觉判断,“月份”与南瓜销售价格的关联度是高还是低?如果用更细粒度的度量替代`Month`,例如“一年中的天数”(即从年初开始的天数数量),结果会有变化吗?
✅ 运行本课的笔记本,看看“月份与价格”的散点图。根据你的视觉判断,这两个变量的南瓜销售价格相关性是高还是低?如果用更细化的度量(如一年中的某一天,即从年初起的天数)替代 `Month`,相关性会变化吗?
下面的代码中,我们假设已清理数据,并获得一个叫做 `new_pumpkins` 的数据框,如下示例
下面的代码假设已清理数据并获得名为 `new_pumpkins` 的数据框,内容类似
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@ -103,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> 清理数据的代码可在 [`notebook.ipynb`](notebook.ipynb) 找到。我们按照上一课进行了相同的数据清理步骤,并使用以下表达式计算了 `DayOfYear` 列:
> 清理数据的代码可见于[`notebook.ipynb`](notebook.ipynb)中。我们执行了与上一课相同的清理步骤,并用如下表达式计算了 `DayOfYear` 列:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
现在你已经理解了线性回归背后的数学,我们来创建一个回归模型,看看是否能够预测哪种南瓜包装有最优价格。购买者想为假期制作南瓜田,这些信息可以帮助他们优化购买南瓜包装方案
既然已理解线性回归背后的数学原理,让我们创建一个回归模型,看看是否能预测哪种南瓜包装的价格最优。想为节日南瓜园采购南瓜的人可能想知道这些信息,以便优化采购计划
## 寻找相关性
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[![为初学者讲解相关性:线性回归的关键](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "为初学者讲解相关性:线性回归的关键")
> 🎥 点击上方图片观看相关性介绍短视频。
> 🎥 点击上方图片观看关于相关性的简短视频。
从上一课你大概看到了各月平均价格大致如下
上一课你可能已经看到,不同月份的平均价格如下图所示
<img alt="按月平均价格" src="../../../../translated_images/zh-CN/barchart.a833ea9194346d76.webp" width="50%"/>
这说明可能存在一定程度的相关性,我们可以尝试训练线性回归模型来预测`Month`与`Price`之间,或者`DayOfYear`与`Price`之间的关系。下图展示了后者的散点图:
这说明应存在某种相关性,我们可以试着训练线性回归模型来预测 `Month``Price` 之间,或 `DayOfYear``Price` 之间的关系。以下是价格与一年中日期关系的散点图:
<img alt="价格 vs. 一年中的天数 散点图" src="../../../../translated_images/zh-CN/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="价格与年日期散点图" src="../../../../translated_images/zh-CN/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
`corr` 函数检查相关性:
我们用 `corr` 函数来看看相关性:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
相关性看起来很小,`Month` 为 -0.15`DayOfYear` 为 -0.17,但可能存在其它重要的关系。看起来价格群聚对应不同南瓜品种。为了验证这个假设,我们用不同颜色为每个品种绘制散点图。通过向 `scatter` 绘图函数传递 `ax` 参数,所有点可绘制在同一张图上
看起来相关性非常小,`Month` 为 -0.15`DayOfYear` 为 -0.17,但可能存在另一种重要关系。不同南瓜品种对应不同价格集群。为确认此假设,我们用不同颜色绘制各品种。通过给 `scatter` 函数传递 `ax` 参数,可以在同一图表上绘制所有点
```python
ax=None
@ -141,115 +139,113 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="价格 vs. 一年中的天数 散点图(彩色)" src="../../../../translated_images/zh-CN/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
调查显示品种对总价影响大于实际销售日期。条形图如下:
<img alt="价格与年日期不同颜色散点图" src="../../../../translated_images/zh-CN/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
调查显示,品种对整体价格的影响大于销售日期。我们用柱状图表示:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="按品种分类的价格条形图" src="../../../../translated_images/zh-CN/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
暂时只关注南瓜品种 'pie type',观察日期对价格的影响:
<img alt="按品种划分的价格柱状图" src="../../../../translated_images/zh-CN/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
先暂时只关注一种品种——“pie type”看看日期对价格的影响
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="价格 vs. 一年中的天数 散点图(派南瓜)" src="../../../../translated_images/zh-CN/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="pie type 南瓜的价格与年日期散点图" src="../../../../translated_images/zh-CN/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
如果用 `corr` 函数计算 `Price``DayOfYear` 的相关系数,大约是 `-0.27` ——这意味着训练预测模型是合理的。
若用 `corr` 函数计算 `Price``DayOfYear` 的相关系数,结果大概为 `-0.27`,说明训练预测模型是有意义的。
> 在训练线性回归模型前,确保数据干净非常重要。线性回归对缺失值表现不好,因此建议删除所有空单元格
> 在训练线性回归模型前,务必保证数据干净。线性回归对缺失值不敏感,最合理的做法是去除所有空值
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
另一种方法是用对应列的均值填充空值。
另一种做法是用对应列的均值填充空白值。
## 简单线性回归
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
[![为初学者讲解使用 Scikit-learn 进行线性和多项式回归](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "为初学者讲解使用 Scikit-learn 进行线性和多项式回归")
> 🎥 点击上方图片观看线性回归与多项式回归介绍短视频。
> 🎥 点击上方图片观看线性回归和多项式回归的简短视频。
训练线性回归模型时,我们将使用**Scikit-learn**库
我们将使用<strong>Scikit-learn</strong>库训练线性回归模型
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
首先把输入值(特征)和预期输出(标签)分成两个 numpy 数组:
首先,将输入值(特征)和预期输出(标签)分隔成独立的 numpy 数组:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 注意,我们必须对输入数据使用 `reshape`,让线性回归模块能正确理解输入。线性回归期望输入是一个二维数组,数组的每一行是一个特征向量。我们这里只有一个输入,所以需要一个形状为 N×1 的数组,其中 N 是数据集大小。
接着需要将数据拆分成训练集和测试集,以便训练后验证模型:
> 注意,我们对输入数据进行了 `reshape`,以便线性回归库能正确解读。线性回归要求输入为二维数组,数组每行为一组输入特征向量。这里只有一个输入,因此需要形状为 N×1 的数组N 是数据集大小。
接着,需要将数据分割为训练集和测试集,以便训练后验证模型:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
最后,训练线性回归模型仅需两行代码。定义一个 `LinearRegression` 对象,用 `fit` 方法使其拟合数据:
最后,训练线性回归模型只需两行代码。定义 `LinearRegression` 对象,用 `fit` 方法拟合数据:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression` 对象在 `fit` 之后包含了所有回归系数,可以通过 `.coef_` 属性访问。在我们的例子中,只有一个系数,约为 `-0.017`。这意味着价格似乎随着时间略微下降但幅度不大大约每天下降2美分。我们还可以使用 `lin_reg.intercept_` 访问回归与 Y 轴的交点 —— 对我们而言,它大约是 `21`,表示年初时的价格。
`LinearRegression` 对象在 `fit` 之后包含了回归的所有系数,可以通过 `.coef_` 属性访问。在我们的例子中,只有一个系数,应该大约是 `-0.017`。这意味着价格似乎随着时间略有下降,但不多,大约每天降 2 美分。我们还可以通过 `lin_reg.intercept_` 访问回归与 Y 轴的截距点——在我们的例子中大约是 `21`,表示年初的价格。
为了查看模型的准确度,我们可以对测试数据集进行价格预测然后测量预测结果与真实值的接近程度。这可以通过均方误差MSE指标完成即所有预测值与期望值差的平方的平均值
为了查看模型的准确度,我们可以在测试数据集上预测价格然后测量预测值与预期值的接近程度。可以使用均方根误差RMSE指标即所有预期值与预测值差值平方的平均值的平方根
```python
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
我们的误差大约是2点约为17%。并不算好。模型质量的另一个指标是**决定系数**,可通过如下方式获得:
我们的误差大约是 2 点,约为 ~17%。不是很理想。模型质量的另一个指标是<strong>决定系数</strong>,可以这样获得:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
如果该值为0意味着模型不考虑输入数据表现仅作为*最差的线性预测器*即预测结果为结果的均值。值为1意味着我们可以完美预测所有期望输出。我们这里的决定系数约为0.06,非常低。
如果值为 0表示模型没有考虑输入数据表现为<em>最差的线性预测器</em>,即结果的均值。值为 1 表示我们可以完美预测所有预期输出。在我们的例子中,系数约为 0.06,相当低。
我们还可以将测试数据和回归直线一起绘制,以更好地观察回归效果:
我们还可以将测试数据和回归线画在一起,更直观地观察回归效果:
```python
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
```
<img alt="Linear regression" src="../../../../translated_images/zh-CN/linear-results.f7c3552c85b0ed1c.webp" width="50%" />
## 多项式回归
另一种线性回归形式是多项式回归。虽然变量之间有时呈线性关系——比如南瓜体积越大,价格越高——但有时这些关系不能用平面或直线表示。
另一种线性回归称为多项式回归。有时变量之间存在线性关系——比如,体积越大的南瓜价格越高,但有时这些关系不能用平面或直线表示。
✅ 这里有[一些更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)适合使用多项式回归的数据。
✅ 这里有一些[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)演示可以使用多项式回归的数据
再看看日期和价格间的关系。这个散点图一定要用直线分析吗?价格难道不会波动?在这种情况下,可以尝试多项式回归。
再看看日期和价格的关系。这个散点图是否必然适合用直线来分析?价格难道不会波动吗?这时可以尝试多项式回归。
✅ 多项式是一种可能包含一个或多个变量与系数的数学表达式。
✅ 多项式是由一个或多个变量及系数组成的数学表达式
多项式回归创建曲线,更好地拟合非线性数据。在本例中,如果我们加入平方的 `DayOfYear` 变量作为输入,应该能够用抛物线拟合数据,该曲线将在年内某一点达到最小值
多项式回归创建一条曲线来更好地拟合非线性数据。在我们的例子中,如果在输入数据中加入平方的 `DayOfYear` 变量,应该可以用抛物线拟合数据,在一年中的某个点达到最低点
Scikit-learn 提供了一个有用的 [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) 来组合不同的数据处理步骤。**管道**是一个**估计器**链。在这里,我们先为模型添加多项式特征,然后训练回归
Scikit-learn 包含一个方便的[流水线 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)来组合不同的数据处理步骤。<strong>流水线</strong>是由一系列<strong>估计器</strong>组成的链。在我们的例子中,我们将创建一个流水线,先添加多项式特征,然后训练回归模型
```python
from sklearn.preprocessing import PolynomialFeatures
@ -259,61 +255,61 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
使用 `PolynomialFeatures(2)` 意味着将包含所有输入数据的二阶多项式。在我们的例子中,这仅表示 `DayOfYear`<sup>2</sup>,但若有两个输入变量 X 和 Y则会增加 X<sup>2</sup>、XY 和 Y<sup>2</sup>。如果需要,也可以使用更高次的多项式。
管道可以像原始 `LinearRegression` 对象一样使用,即先 `fit` 管道,再用 `predict` 获取预测结果。下面的图显示了测试数据及其拟合曲线:
使用 `PolynomialFeatures(2)` 意味着包括输入数据中的所有二次多项式。在我们的例子中,这仅表示 `DayOfYear` 的平方,但如果有两个输入变量 X 和 Y就会添加 X²、XY 和 Y²。如果需要也可以使用更高次数的多项式。
流水线可以像原始的 `LinearRegression` 对象一样使用,即可以 `fit` 流水线,然后用 `predict` 获得预测结果。下面是测试数据和拟合曲线的图示:
<img alt="Polynomial regression" src="../../../../translated_images/zh-CN/poly-results.ee587348f0f1f60b.webp" width="50%" />
使用多项式回归,我们可以获得稍低的 MSE 和更高的决定系数,但提升有限。我们需要考虑其他特征!
使用多项式回归,我们可以得到稍低的均方误差和更高的决定系数,但提升不大。我们还需要考虑其他特征!
> 你可以看到最低的南瓜价格大约出现在万圣节附近。你能解释为什么吗
> 你可以看到南瓜最低价格出现在万圣节附近。你如何解释这一现象
🎃 恭喜,你刚刚创建了一个能预测馅饼南瓜价格的模型。你或许也能用相同方法处理所有南瓜品种,但那会很繁琐。现在让我们学习如何在模型中考虑南瓜品种!
🎃 恭喜,你刚刚创建了一个能够帮助预测派皮南瓜价格的模型。你可能会对所有南瓜类型都重复这个过程,但那会很繁琐。接下来我们学习如何在模型中考虑南瓜品种!
## 类别特征
理想情况下,我们希望用同一个模型预测不同南瓜品种的价格。然而,`Variety` 列与 `Month` 类似的列不同,因为它包含非数字值。这样的列称为**类别特征**
理想情况下,我们希望用同一个模型预测不同南瓜品种的价格。`Variety` 一栏与 `Month` 等数值型列不同,它包含的是非数值数据。这类列称为<strong>类别特征</strong>
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[![ML for beginners - 使用线性回归预测类别特征](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - 使用线性回归预测类别特征")
> 🎥 点击上图观看关于使用类别变量的简短视频介绍
> 🎥 点击上图观看一个简短视频,介绍如何使用类别特征
这是平均价格如何随品种变化的示意图
你可以看到平均价格如何根据品种变化
<img alt="Average price by variety" src="../../../../translated_images/zh-CN/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
为了考虑品种,我们首先需要将其转换为数字形式,即**编码**。有几种方式
为了在模型中考虑品种,首先需要对其进行数值化,或称<strong>编码</strong>。编码有几种方法
* 简单的**数值编码**会建立一个品种表,然后用该表中的索引替换品种名。这对线性回归不是最佳,因为线性回归会把索引作为数值处理,乘以系数累加到结果中。在我们例子中,索引与价格的关系明显非线性,即使确保索引按特定顺序排列。
* **独热编码**会把 `Variety` 列替换为4个独立的列每列代表一个品种。对应品种的行该列为 `1`,其他为 `0`。这意味着在线性回归中会有四个系数 ,分别对应每个南瓜品种,代表该品种的“起始价格”(或更准确说是“附加价格”)。
* 简单的<strong>数字编码</strong>会建立一个品种表,然后用该表中的索引替换品种名称。这对线性回归不是最优,因为线性回归将索引的数值直接参与计算,乘以某个系数后加到结果中。在这里,索引与价格关系明显非线性,即使索引按照特定顺序排列。
* <strong>独热编码</strong>会用四个不同的列替换掉 `Variety` 列,每个对应一个品种。对应品种的列取 1其他列为 0。这样线性回归会得到四个系数分别对应四种南瓜品种的“基础价”或“附加价”)。
下面代码演示如何对品种进行独热编码:
下面的代码展示如何对品种进行独热编码:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
----|-----------|-----------|--------------------------|----------
70 | 0 | 0 | 0 | 1
71 | 0 | 0 | 0 | 1
... | ... | ... | ... | ...
1738 | 0 | 1 | 0 | 0
1739 | 0 | 1 | 0 | 0
1740 | 0 | 1 | 0 | 0
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
用独热编码的品种作为输入训练线性回归,只需正确初始化 `X``y` 数据:
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
----|-----------|-----------|--------------------------|----------
70 | 0 | 0 | 0 | 1
71 | 0 | 0 | 0 | 1
... | ... | ... | ... | ...
1738| 0 | 1 | 0 | 0
1739| 0 | 1 | 0 | 0
1740| 0 | 1 | 0 | 0
1741| 0 | 1 | 0 | 0
1742| 0 | 1 | 0 | 0
使用独热编码的品种作为输入训练线性回归,只需正确初始化 `X``y` 数据:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
其余代码与之前训练线性回归的一样。尝试后可以看到均方误差大致相同但决定系数大幅提升约77%)。为了获得更准确的预测,我们可以同时考虑更多类别特征和数值特征,如 `Month``DayOfYear`。使用 `join` 可以得到一个大的特征数组
其余代码与之前训练线性回归时相同。你尝试后会发现均方误差差不多,但决定系数大大提升到 ~77%。为了得到更精准的预测,可以同时考虑更多类别特征和数值特征,`Month``DayOfYear`要合并成一个大特征数组,可以使用 `join`
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -322,12 +318,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
这里我们同时考虑了 `City``Package` 类型,得到 MSE 为 2.8410%),决定系数为 0.94
这里还考虑了 `City``Package` 类型,最后得到均方误差 2.8410%),决定系数 0.94
## 综合应用
为了拟合最优模型,我们可以将上述的组合数据(独热编码类别 + 数值)和多项式回归结合。方便起见,完整代码如下
为了做出最佳模型,我们可以结合上述例子中独热编码的类别特征和数值特征,再使用多项式回归。以下是完整代码,供你方便使用
```python
# 设置训练数据
@ -337,7 +333,7 @@ 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)
# 设置并训练流水线
@ -347,44 +343,44 @@ pipeline.fit(X_train,y_train)
# 预测测试数据结果
pred = pipeline.predict(X_test)
# 计算均方误差和定系数
# 计算均方误差和定系数
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
这应获得接近97%的最佳决定系数MSE=2.23约8%的预测误差)。
| 模型 | MSE | 决定系数 |
|-------|-----|---------------|
| `DayOfYear` 线性模型 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多项式模型 | 2.73 (17.0%) | 0.08 |
| `Variety` 线性模型 | 5.24 (19.7%) | 0.77 |
| 全特征 线性模型 | 2.84 (10.5%) | 0.94 |
| 全特征 多项式模型 | 2.23 (8.25%) | 0.97 |
这应该能达到接近 97% 的最高决定系数,均方误差为 2.23(约 8% 预测误差)。
| 模型 | MSE | 决定系数 |
|--------------------------|---------------|---------------|
| `DayOfYear` 线性回归 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多项式回归 | 2.73 (17.0%) | 0.08 |
| `Variety` 线性回归 | 5.24 (19.7%) | 0.77 |
| 所有特征 线性回归 | 2.84 (10.5%) | 0.94 |
| 所有特征 多项式回归 | 2.23 (8.25%) | 0.97 |
🏆 做得好在本节课中你创建了四个回归模型并将模型质量提升至97%。回归的最后一节你将学习用于确定类别的逻辑回归。
🏆 干得好!你在一节课中创建了四个回归模型,并将模型质量提升到了 97%。回归的最后一节课中,你将学习用逻辑回归确定类别
---
## 🚀挑战
在此笔记本中测试多个不同变量,观察相关性如何对应模型准确度。
尝试本笔记本中的几个不同变量,观察它们的相关性如何影响模型准确度。
## [课后](https://ff-quizzes.netlify.app/en/ml/)
## [课后测](https://ff-quizzes.netlify.app/en/ml/)
## 复习与自学
本课学习了线性回归。还有其他重要的回归类型。请阅读逐步回归、岭回归、套索回归和弹性网络技术。推荐学习的优秀课程是 [斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
本课我们学习了线性回归。还有其他重要的回归类型。请学习逐步回归、岭回归、套索回归和弹性网方法。推荐课程:[斯坦福统计学习课程](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) 翻译的。虽然我们力求准确,但请注意自动翻译可能包含错误或不准确之处。原始文档的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 美食分类器 1
# Cuisine classifiers 1
在本课中,您将使用上一课保存的数据集,该数据集包含关于美食的平衡且干净的数据
在本课中,您将使用上一课中保存的关于菜系的平衡、干净数据集
您将使用这个数据集和多种分类器来_根据一组食材预测某种国家美食_。在此过程中您将进一步了解算法如何用于分类任务
您将使用该数据集和各种分类器来_根据一组食材预测给定的国家菜系_。在此过程中您将进一步了解算法在分类任务中的一些应用方式
## [课前测验](https://ff-quizzes.netlify.app/en/ml/)
# 准备工作
假设您已完成[第1课](../1-Introduction/README.md),请确保在根目录的`/data`文件夹中存在一个名为_cleaned_cuisines.csv_的文件以供这四节课使用
假设您已完成[第1课](../1-Introduction/README.md),请确保在这四节课的根目录 `/data` 文件夹下存在一个_cleaned_cuisines.csv_文件
## 练习 - 预测国家美食
## 练习 - 预测国家菜系
1. 在本课的_notebook.ipynb_文件夹中导入该文件以及Pandas库
1. 在本课的_notebook.ipynb_文件夹中导入该文件以及 Pandas 库:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
数据看起来如下:
数据如下所示
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 现在,导入更多库:
1. 现在,导入更多库:
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. 将X和y坐标分成两个数据框用于训练。`cuisine`可以作为标签数据框:
1. 将X和y变量划分为两个数据框用于训练。`cuisine` 可以作为标签数据框:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
它看起来如下
它看起来像这样
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. 使用`drop()`方法删除`Unnamed: 0`列和`cuisine`列,并将剩余的数据保存为可训练的特征:
1. 删除 `Unnamed: 0``cuisine` 列,调用 `drop()`。将剩余数据另存为训练特征:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
您的特征看起来如下
你的特征看起来像这样
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,75 +75,74 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
现在您可以开始训练模型了!
现在,您已经准备好训练模型了!
## 选择分类器
现在数据已经清理完毕并准备好训练,您需要决定使用哪种算法来完成任务
既然数据已经清理好并准备好训练,您需要决定使用哪种算法。
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和QuadraticDiscrinationAnalysis并以可视化方式展示结果:
那么,应该选择哪个分类器通常运行多个分类器然后寻找好的结果是测试方法之一。Scikit-learn 提供了一个[并排比较](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)的示例数据集,对比了 KNeighbors、两种 SVC、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 和 QuadraticDiscrinationAnalysis并以图形方式展示结果:
![分类器比较](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> 图表来自Scikit-learn文档
![comparison of classifiers](../../../../translated_images/zh-CN/comparison.edfab56193a85e7f.webp)
> 由 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)
### 更好的方法
比盲目猜测更好的方法是参考这个可下载的[机器学习备忘单](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)。在这里,我们发现对多类问题,有一些选择:
![多分类问题备忘单](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> 微软算法备忘单的一部分,详细说明了多分类选项
![cheatsheet for multiclass problems](../../../../translated_images/zh-CN/cheatsheet.07a475ea444d2223.webp)
> 微软算法备忘单中的一部分,详述多类分类选项
✅ 下载这个备忘单,打印出来,挂在墙上!
✅ 下载此备忘单,打印并挂在墙上!
### 推理
让我们看看是否可以根据现有约束推理出不同的解决方法:
让我们看是否可以根据已有的限制推理不同的方法:
- **神经网络过于复杂**。考虑到我们的数据集虽然干净但规模较小,并且我们通过本地笔记本运行训练,神经网络对于这个任务来说过于复杂
- **不使用二分类器**。我们不使用二分类器因此排除了一对多one-vs-all
- **决策树或逻辑回归可能有效**。决策树可能有效,或者逻辑回归适用于多分类数据。
- **多分类增强决策树解决不同问题**。多分类增强决策树最适合非参数任务,例如设计排名任务,因此对我们来说没有用。
- <strong>神经网络过于庞大</strong>。鉴于我们干净但数据量少的数据集,以及局域笔记本的本地训练,神经网络过于庞大,不适合此任务
- <strong>不是两类分类器</strong>。我们不使用二分类器,所以排除了一对多方法
- <strong>决策树或逻辑回归可能适用</strong>。决策树可能行得通,或者使用逻辑回归处理多类数据。
- <strong>多类提升决策树解决不同问题</strong>。多类提升决策树更适合非参数任务,例如设计排名的任务,因此对我们并不适用。
### 使用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`,分别用于控制多分类方案和求解算法。并非所有 `solver` 都能与所有 `multi_class` 组合使用
根据文档,在多类情况下,训练算法:
文档说明,在多类情况下,训练算法:
- **使用一对多OvR方案**,如果`multi_class`选项设置为`ovr`
- **使用交叉熵损失**,如果`multi_class`选项设置为`multinomial`。(目前`multinomial`选项仅支持lbfgssagsaganewton-cg求解器。
- **使用一对多OvR方案**,如果 `multi_class` 设为 `ovr`
- <strong>使用交叉熵损失</strong>,如果 `multi_class` 设为 `multinomial`。(当前 `multinomial` 仅被 `'lbfgs'`, `'sag'`, `'saga'`, `'newton-cg'` 求解器支持)"
> 🎓 这里的“方案”可以是“ovr”一对多或“multinomial”。由于逻辑回归实际上是为支持二分类设计的这些方案使其能够更好地处理多分类任务。[来源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 此处的“scheme”方案可以是“ovr”一对多或“multinomial”多项式。由于逻辑回归本质上设计为二分类这些方案帮助它更好地处理多类分类任务。[来源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 “求解器”定义为“用于优化问题的算法”。[来源](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提供了这个表格来解释求解器如何处理不同数据结构带来的挑战:
Scikit-learn 提供下表说明不同求解器如何处理不同数据结构带来的挑战:
![求解器](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/zh-CN/solvers.5fc648618529e627.webp)
## 练习 - 分数据
## 练习 - 分数据
我们可以专注于逻辑回归作为我们的第一次训练尝试,因为您在上一课中刚刚学习了它。
通过调用`train_test_split()`将数据划分为训练组和测试组:
由于您最近在前一课学习了逻辑回归,我们可专注于逻辑回归作为首次训练尝试。调用 `train_test_split()` 将数据拆分为训练组和测试组:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -151,9 +150,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## 练习 - 应用逻辑回归
由于您使用的是多分类情况您需要选择使用什么_方案_以及设置什么_求解器_。使用LogisticRegression并设置多分类选项和**liblinear**求解器进行训练。
由于使用的是多分类情况需要选择使用哪个_方案_以及设置哪个_求解器_。使用带有多类设置和<strong>liblinear</strong>求解器的 LogisticRegression 进行训练。
1. 创建一个逻辑回归multi_class设置为`ovr`solver设置为`liblinear`
1. 创建一个 `multi_class` 设为 `ovr``solver` 设为 `liblinear` 的逻辑回归
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,27 +162,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ 尝试使用其他求解器,例如默认设置的`lbfgs`
> 注意,在需要时可以使用 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函数来展平数据。
准确率超过 **80%**
✅ 尝试使用 `lbfgs` 这类常被设为默认的求解器
1. 你可以通过测试一行数据(#50来查看此模型的实际效果
> 注意,当需要时,使用 Pandas 的[`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html)函数将数据扁平化。
准确率超过 **80%**,效果不错!
1. 通过测试一行数据第50行来查看该模型的实际表现
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
结果打印如下:
打印结果如下:
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ 尝试不同的行号并检查结果
1. 更深入地分析,你可以检查此预测的准确性:
✅ 尝试使用不同行号并检查结果
1. 深入挖掘,您可以检查此预测的准确性:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +195,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
结果打印如下 - 印度菜是模型的最佳猜测,且概率较高:
结果被打印出来——印度菜是模型的最佳猜测,且概率较高:
| | 0 |
| -------: | -------: |
@ -205,9 +205,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ 你能解释为什么模型非常确定这是印度菜吗?
✅ 你能解释为什么模型相当确信这是印度菜吗?
1. 通过打印分类报告获取更多细节,就像你在回归课程中所做的样:
1. 通过打印分类报告获取更多细节,就像你在回归课程中所做的样:
```python
y_pred = model.predict(X_test)
@ -221,24 +221,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀挑战
在本课中,你使用清理后的数据构建了一个机器学习模型,可以根据一系列食材预测国家菜系。花点时间阅读 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)中逻辑回归背后的数学原理
## 作业
[研究 solvers](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) 进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文档的母语版本应被视为权威来源。对于重要信息,建议采用专业人工翻译。对于因使用本翻译而引起的任何误解或误释,我们不承担任何责任。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -13,11 +13,11 @@
#### 通过 GitHub Action 支持(自动且始终保持最新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[阿拉伯语](../ar/README.md) | [孟加拉语](../bn/README.md) | [保加利亚语](../bg/README.md) | [缅甸语 (Myanmar)](../my/README.md) | [中文(简体)](./README.md) | [中文(繁体,香港)](../zh-HK/README.md) | [中文(繁体,澳门)](../zh-MO/README.md) | [中文(繁体,台湾)](../zh-TW/README.md) | [克罗地亚语](../hr/README.md) | [捷克语](../cs/README.md) | [丹麦语](../da/README.md) | [荷兰语](../nl/README.md) | [爱沙尼亚语](../et/README.md) | [芬兰语](../fi/README.md) | [法语](../fr/README.md) | [德语](../de/README.md) | [希腊语](../el/README.md) | [希伯来语](../he/README.md) | [印地语](../hi/README.md) | [匈牙利语](../hu/README.md) | [尼语](../id/README.md) | [意大利语](../it/README.md) | [日语](../ja/README.md) | [卡纳达语](../kn/README.md) | [高棉语](../km/README.md) | [韩语](../ko/README.md) | [立陶宛语](../lt/README.md) | [马来语](../ms/README.md) | [马拉雅拉姆语](../ml/README.md) | [马拉地语](../mr/README.md) | [尼泊尔语](../ne/README.md) | [尼日利亚皮钦语](../pcm/README.md) | [挪威语](../no/README.md) | [波斯语(法尔西](../fa/README.md) | [波兰语](../pl/README.md) | [葡萄牙语(巴西)](../pt-BR/README.md) | [葡萄牙语(葡萄牙)](../pt-PT/README.md) | [旁遮普语(古鲁穆奇](../pa/README.md) | [罗马尼亚语](../ro/README.md) | [俄语](../ru/README.md) | [塞尔维亚语(西里尔](../sr/README.md) | [斯洛伐克语](../sk/README.md) | [斯洛文尼亚语](../sl/README.md) | [西班牙语](../es/README.md) | [斯瓦希里语](../sw/README.md) | [瑞典语](../sv/README.md) | [他加禄语(菲律宾语)](../tl/README.md) | [泰米尔语](../ta/README.md) | [泰卢固语](../te/README.md) | [泰语](../th/README.md) | [土耳其语](../tr/README.md) | [乌克兰语](../uk/README.md) | [乌尔都语](../ur/README.md) | [越南语](../vi/README.md)
[阿拉伯语](../ar/README.md) | [孟加拉语](../bn/README.md) | [保加利亚语](../bg/README.md) | [缅甸语](../my/README.md) | [中文(简体)](./README.md) | [中文(繁体,香港)](../zh-HK/README.md) | [中文(繁体,澳门)](../zh-MO/README.md) | [中文(繁体,台湾)](../zh-TW/README.md) | [克罗地亚语](../hr/README.md) | [捷克语](../cs/README.md) | [丹麦语](../da/README.md) | [荷兰语](../nl/README.md) | [爱沙尼亚语](../et/README.md) | [芬兰语](../fi/README.md) | [法语](../fr/README.md) | [德语](../de/README.md) | [希腊语](../el/README.md) | [希伯来语](../he/README.md) | [印地语](../hi/README.md) | [匈牙利语](../hu/README.md) | [西亚语](../id/README.md) | [意大利语](../it/README.md) | [日语](../ja/README.md) | [卡纳达语](../kn/README.md) | [高棉语](../km/README.md) | [韩语](../ko/README.md) | [立陶宛语](../lt/README.md) | [马来语](../ms/README.md) | [马拉雅拉姆语](../ml/README.md) | [马拉地语](../mr/README.md) | [尼泊尔语](../ne/README.md) | [尼日利亚皮钦语](../pcm/README.md) | [挪威语](../no/README.md) | [波斯语(法尔西](../fa/README.md) | [波兰语](../pl/README.md) | [葡萄牙语(巴西)](../pt-BR/README.md) | [葡萄牙语(葡萄牙)](../pt-PT/README.md) | [旁遮普语(古鲁姆克语](../pa/README.md) | [罗马尼亚语](../ro/README.md) | [俄语](../ru/README.md) | [塞尔维亚语(西里尔字母](../sr/README.md) | [斯洛伐克语](../sk/README.md) | [斯洛文尼亚语](../sl/README.md) | [西班牙语](../es/README.md) | [斯瓦希里语](../sw/README.md) | [瑞典语](../sv/README.md) | [他加禄语(菲律宾语)](../tl/README.md) | [泰米尔语](../ta/README.md) | [泰卢固语](../te/README.md) | [泰语](../th/README.md) | [土耳其语](../tr/README.md) | [乌克兰语](../uk/README.md) | [乌尔都语](../ur/README.md) | [越南语](../vi/README.md)
> **更喜欢本地克隆**
> **更喜欢本地克隆?**
>
> 本仓库包含 50 多种语言的翻译,显著增加了下载大小。要克隆时不包含翻译,请使用稀疏检出:
> 本仓库包含50多种语言的翻译这显著增加了下载大小。要在不下载翻译的情况下克隆请使用稀疏签出:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,62 +33,62 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 这样可以让您获得完成课程所需的全部内容,同时下载速度更快
> 这样你能以更快的速度下载完成课程所需的所有内容
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### 加入我们的社区
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
我们正在进行 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 进行数据科学的技巧和窍门
![Learn with AI series](../../translated_images/zh-CN/3.9b58fd8d6c373c20.webp)
![与 AI 一起学习系列](../../translated_images/zh-CN/3.9b58fd8d6c373c20.webp)
# 初学者机器学习课程
# 面向初学者机器学习课程
> 🌍 通过探索世界文化来环游世界,学习机器学习 🌍
> 🌍 随着世界文化,我们一起探索机器学习 🌍
微软云倡导者团队很高兴提供一个为期12周、包含26课的<strong>机器学习</strong>课程。在本课程中,您将学习有时称为<strong>经典机器学习</strong>的内容,主要使用 Scikit-learn 作为库,避免深度学习内容,后者涵盖在我们的[初学者人工智能课程](https://aka.ms/ai4beginners)中。也可搭配我们的[初学者数据科学课程](https://aka.ms/ds4beginners)一起学习。
微软云倡导者很高兴提供一个为期12周的26课时课程专注于<strong>机器学习</strong>。在本课程中,你将学习有时被称为<strong>经典机器学习</strong>的内容,主要使用 Scikit-learn 库,避免覆盖深度学习,深度学习内容收录于我们的[AI 初学者课程](https://aka.ms/ai4beginners)。同时也推荐搭配我们的[数据科学初学者课程](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
**✍️ 衷心感谢我们的作者** 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
**🎨 同样感谢我们的插画师** Tomomi Imura, Dasani Madipalli 和 Jen Looper
**🙏 特别感谢 🙏 微软学生大使作者、审阅者和内容贡献者**特别是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal
**🙏 特别感谢微软学生大使作者、审阅者和内容贡献者**尤其是 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila 和 Snigdha Agarwal
**🤩 额外感谢微软学生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 提供的 R 语言课程!**
**🤩 额外感谢微软学生大使 Eric WanjauJasleen Sondhi 和 Vidushi Gupta 贡献的 R 语言课程!**
# 开始使用
# 入门指南
按照以下步骤操作:
1. **Fork 仓库**:点击页面右上角的“Fork”按钮。
按照以下步骤操作:
1. **Fork 仓库**点击页面右上角的“Fork”按钮。
2. <strong>克隆仓库</strong>`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)
> [本课程的所有额外资源可在微软Learn合集找到](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **需要帮助?** 查看我们的[故障排除指南](TROUBLESHOOTING.md)获得有关安装、设置和运行课程的常见问题解决方案
> 🔧 **需要帮助?** 查看我们的[故障排除指南](TROUBLESHOOTING.md)解决安装、配置和课程运行中的常见问题
**[学生](https://aka.ms/student-page)**,使用本课程,请 fork 整个仓库到您自己的 GitHub 账户,并自行或与小组一起完成练习:
**[学生](https://aka.ms/student-page)**,使用本课程时,请 fork 整个仓库到自己的 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)模块和学习路径。
> 更多学习推荐,访问这些[微软 Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott)模块和学习路径。
<strong>教师们</strong>,我们提供了[一些建议](for-teachers.md)来指导如何使用本课程。
<strong>教师们</strong>,我们已经[提供了一些建议](for-teachers.md)帮助你使用本课程。
---
## 视频讲解
部分课程提供短视频。您可以在课程中内嵌观看,也可通过点击下面图片观看[Microsoft 开发者 YouTube 频道上的 ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos)
部分课程提供短视频版。你可在课程内嵌找到,也可前往 [微软开发者 YouTube 频道的 ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos)观看,点击下图进入
[![ML for beginners banner](../../translated_images/zh-CN/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
@ -98,91 +98,91 @@
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**动图制作者:** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
**GIF 制作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 点击上方图片观看关于项目及其创始成员的视频
> 🎥 点击上图观看项目及其创始团队视频介绍
---
## 教学理念
我们在构建课程时选择了两个教育原则:确保课程是动手<strong>项目式教学</strong>,并且包含<strong>频繁的</strong>。此外,本课程采用了一个统一的<strong>主题</strong>以保持课程的连贯性。
本课程设计基于两个教学原则:确保其为动手的<strong>项目驱动</strong>学习,并包含<strong>频繁的测</strong>。此外,课程还有一个统一的<strong>主题</strong>以保持连贯性。
通过确保内容与项目紧密对应使学习过程更具吸引力提升概念记忆。课前的低风险测验帮助学生设定学习目标课后的测验则促进进一步巩固。本课程设计灵活有趣既可整体学习也可部分选学。项目从基础开始随着12周课程进度逐渐复杂。课程最后还有一个关于机器学习真实应用的附录可用于加分或者讨论基础
通过确保内容与项目对齐使学习过程更具吸引力增强知识的保留。课前的低风险测验帮助学生建立学习主题的目标而课后的测验进一步巩固知识。本课程设计灵活且有趣可完整学习也可部分选择。项目从简单到复杂涵盖整个12周周期。课程还包括关于机器学习实际应用的附录适合做额外加分或开展讨论
> 查看我们的[行为准则](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/)
- 书面课程内容
- 对项目课程,提供逐步项目构建指导
- 知识点检测
- 一项挑战
- 补充阅读材料
- 挑战任务
- 补充阅读
- 作业
- [课后测验](https://ff-quizzes.netlify.app/en/ml/)
> <strong>关于语言的说明</strong>:这些课程主要使用 Python 编写,但许多课程也提供了 R 版本。要完成 R 课程,请访问 `/solution` 文件夹并查找 R 课程。它们包含一个 .rmd 后缀,表示一个 **R Markdown** 文件,简单来说,它是一个在 `Markdown 文档` 中嵌入 `代码块`R 或其他语言)和 `YAML 头部`(指导如何格式化输出,如 PDF的文件。因此它作为数据科学的示例性创作框架因为它允许你将代码、代码输出和想法整合在一起通过 Markdown 进行书写。此外R Markdown 文档可以渲染成 PDF、HTML 或 Word 等输出格式。
> <strong>关于测验的说明</strong>:所有测验都包含在 [Quiz App folder](../../quiz-app) 中,全部有 52 个测验,每个测验包含三个问题。它们在课程中有链接,但测验应用可以本地运行;请按照 `quiz-app` 文件夹中的说明进行本地托管或部署到 Azure。
| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author |
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 机器学习简介 | [Introduction](1-Introduction/README.md) | 学习机器学习背后的基本概念 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 机器学习的历史 | [Introduction](1-Introduction/README.md) | 学习该领域背后的历史 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性与机器学习 | [Introduction](1-Introduction/README.md) | 当学生构建和应用机器学习模型时,应该考虑哪些重要的有关公平性的哲学问题? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 机器学习技术 | [Introduction](1-Introduction/README.md) | 机器学习研究人员用什么技术来构建机器学习模型? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回归简介 | [Regression](2-Regression/README.md) | 使用 Python 和 Scikit-learn 开始回归模型 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜价格 🎃 | [Regression](2-Regression/README.md) | 数据的可视化与清理以为机器学习做准备 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜价格 🎃 | [Regression](2-Regression/README.md) | 构建线性与多项式回归模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜价格 🎃 | [Regression](2-Regression/README.md) | 构建逻辑回归模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 一个 Web 应用 🔌 | [Web App](3-Web-App/README.md) | 构建一个用来使用你训练好的模型的 Web 应用 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分类简介 | [Classification](4-Classification/README.md) | 清理、准备并可视化你的数据;分类简介 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亚洲和印度美食 🍜 | [Classification](4-Classification/README.md) | 分类器介 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亚洲和印度美食 🍜 | [Classification](4-Classification/README.md) | 更多分类器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亚洲和印度美食 🍜 | [Classification](4-Classification/README.md) | 使用你的模型构建推荐器 Web 应用 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 聚类简介 | [Clustering](5-Clustering/README.md) | 清理、准备并可视化你的数据;聚类简介 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索尼日利亚的音乐品味 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-均值聚类方法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然语言处理简介 ☕️ | [Natural language processing](6-NLP/README.md) | 通过构建一个简单的机器人学习自然语言处理基础 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常见的 NLP 任务 ☕️ | [Natural language processing](6-NLP/README.md) | 通过理解处理语言结构时所需的常见任务,深化你的自然语言处理知识 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻译与情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用简·奥斯汀进行翻译和情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 欧洲浪漫酒店 ♥️ | [Natural language processing](6-NLP/README.md) | 酒店评论情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 欧洲浪漫酒店 ♥️ | [Natural language processing](6-NLP/README.md) | 酒店评论情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 时间序列预测简介 | [Time series](7-TimeSeries/README.md) | 时间序列预测简介 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界电力使用 ⚡️ - 使用 ARIMA 的时间序列预测 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 进行时间序列预测 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界电力使用 ⚡️ - 使用 SVR 的时间序列预测 | [Time series](7-TimeSeries/README.md) | 使用支持向量回归进行时间序列预测 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 强化学习简介 | [Reinforcement learning](8-Reinforcement/README.md) | 使用 Q 学习进行强化学习简介 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 帮助彼得躲避狼! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 强化学习 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | 现实世界的机器学习场景与应用 | [ML in the Wild](9-Real-World/README.md) | 经典机器学习一些有趣且富启发性的现实世界应用 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | 使用 RAI 仪表盘进行机器学习模型调试 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible AI 仪表盘组件进行机器学习模型调试 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我们的 Microsoft Learn 集合中查找课程的所有附加资源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> <strong>关于语言的说明</strong>:这些课程主要以 Python 编写,但许多课程也提供 R 版本。要完成 R 课程,请进入 `/solution` 文件夹查找 R 课程。它们包含 .rmd 扩展名,表示 **R Markdown** 文件,可以简单定义为在 `Markdown 文档` 中嵌入 `代码块`R 或其他语言的)和 `YAML 头`(指导如何格式化输出,如 PDF。因此它作为数据科学的优秀著作框架允许您将代码、输出和想法结合起来以 Markdown 形式书写。此外R Markdown 文档可以渲染成 PDF、HTML 或 Word 等输出格式。
> <strong>关于测验的说明</strong>:所有测验都包含在[测验应用文件夹](../../quiz-app)中,共 52 个测验,每个测验包含三个问题。它们在课程中链接,同时测验应用可以本地运行;请按照 `quiz-app` 文件夹中的说明在本地托管或部署到 Azure。
| 课程编号 | 主题 | 课程归类 | 学习目标 | 关联课程 | 作者 |
| :------: | :------------------------------------------------------------: | :------------------------------------------: | --------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------: |
| 01 | 机器学习入门 | [介绍](1-Introduction/README.md) | 学习机器学习背后的基本概念 | [课程](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 机器学习的发展历史 | [介绍](1-Introduction/README.md) | 了解该领域的历史 | [课程](1-Introduction/2-history-of-ML/README.md) | Jen Amy |
| 03 | 公平性与机器学习 | [介绍](1-Introduction/README.md) | 学生在构建和应用机器学习模型时应考虑哪些重要的公平性哲学问题? | [课程](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 机器学习技术 | [介绍](1-Introduction/README.md) | 机器学习研究人员用哪些技术来构建机器学习模型? | [课程](1-Introduction/4-techniques-of-ML/README.md) | Chris Jen |
| 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) | Jen • Eric Wanjau |
| 06 | 北美南瓜价格 🎃 | [回归](2-Regression/README.md) | 可视化并清理数据,为机器学习做准备 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜价格 🎃 | [回归](2-Regression/README.md) | 构建线性和多项式回归模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen Dmitry • Eric Wanjau |
| 08 | 北美南瓜价格 🎃 | [回归](2-Regression/README.md) | 构建逻辑回归模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Web 应用 🔌 | [Web App](3-Web-App/README.md) | 构建一个 Web 应用以使用你训练的模型 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分类入门 | [分类](4-Classification/README.md) | 清理、准备和可视化数据;分类介绍 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen Cassie • Eric Wanjau |
| 11 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 分类器介 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen Cassie • Eric Wanjau |
| 12 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 更多分类器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen Cassie • Eric Wanjau |
| 13 | 美味的亚洲和印度美食 🍜 | [分类](4-Classification/README.md) | 使用你的模型构建推荐者 Web 应用 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 聚类入门 | [聚类](5-Clustering/README.md) | 清理、准备和可视化数据;聚类介绍 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 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) | Jen • Eric Wanjau |
| 16 | 自然语言处理导论 ☕️ | [自然语言处理](6-NLP/README.md) | 通过构建一个简单的机器人学习自然语言处理基础 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常见 NLP 任务 ☕️ | [自然语言处理](6-NLP/README.md) | 通过理解处理语言结构时需要的常见任务深化你的 NLP 知识 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻译与情感分析 ♥️ | [自然语言处理](6-NLP/README.md) | 使用简·奥斯汀进行翻译与情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 欧洲浪漫酒店 ♥️ | [自然语言处理](6-NLP/README.md) | 使用酒店评论进行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 欧洲浪漫酒店 ♥️ | [自然语言处理](6-NLP/README.md) | 使用酒店评论进行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 时间序列预测导论 | [时间序列](7-TimeSeries/README.md) | 时间序列预测入门 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界电力使用 ⚡️ - 使用 ARIMA 进行时间序列预测 | [时间序列](7-TimeSeries/README.md) | 使用 ARIMA 进行时间序列预测 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界电力使用 ⚡️ - 使用 SVR 进行时间序列预测 | [时间序列](7-TimeSeries/README.md) | 使用支持向量回归进行时间序列预测 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 强化学习导论 | [强化学习](8-Reinforcement/README.md) | 使用 Q-Learning 介绍强化学习 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 帮助彼得躲避狼!🐺 | [强化学习](8-Reinforcement/README.md) | 强化学习 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 后记 | 机器学习的真实世界场景与应用 | [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) | 使用 Responsible AI 仪表盘组件进行机器学习模型调试 | [课程](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我们的 Microsoft Learn 集合中查找课程的所有附加资源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 离线访问
你可以使用 [Docsify](https://docsify.js.org/#/) 离线运行此文档。Fork 该仓库,在本地机器上[安装 Docsify](https://docsify.js.org/#/quickstart),然后在该仓库根目录下,输入 `docsify serve` 网站将在本地主机的 3000 端口提供服务:`localhost:3000`。
您可以使用 [Docsify](https://docsify.js.org/#/) 在离线环境中运行此文档。Fork 此仓库,在本地机器上[安装 Docsify](https://docsify.js.org/#/quickstart),然后在该仓库根目录输入 `docsify serve`。网站将在本地主机的 3000 端口提供服务:`localhost:3000`。
## PDF 文件
可从[此处](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)获取带链接的课程 PDF
在这里找到课程目录的 PDF 版本及相关链接:[这里](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。
## 🎒 其他课程
我们的团队还制作其他课程!查看:
我们的团队还制作其他课程!查看:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j 入门](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js 入门](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain 入门](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AZD 入门](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI 入门](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的MCP](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的AI代理](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -201,13 +201,13 @@
[![初学者的数据科学](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的人工智能](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的网络安全](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![初学者的网页开发](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的Web开发](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的物联网](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![初学者的XR开发](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot 系列
### Copilot系列
[![AI配对编程的Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET的Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot冒险](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
@ -215,22 +215,33 @@
## 获取帮助
如果你遇到困难或对构建AI应用有任何疑问请加入MCP学习者和有经验开发者的讨论。这是一个支持性的社区欢迎提问并自由分享知识
如果您在学习机器学习或构建人工智能应用时遇到困难或有疑问,不必担心——有帮助资源可用
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
您可以加入与其他学习者和开发者的讨论,提出问题,并与社区分享您的想法。
- 加入社区,提出问题并与他人一起学习
- 讨论机器学习概念和项目想法
- 获取经验丰富开发者的指导
一个支持性的社区是提升技能和更快解决问题的绝佳方式。
[Microsoft Foundry Discord社区](https://discord.gg/nTYy5BXMWG)
如果您遇到错误、故障或者有改进建议,也可以在此存储库中打开 **Issue** 报告问题。
如需产品反馈或搜索已有社区帖,请访问开发者论坛:
如果你有产品反馈或在构建过程中遇到错误,请访问:
[![Microsoft Foundry开发者论坛](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 额外学习建议
## 额外学习提示
- 每节课后复习笔记本内容以加深理解。
- 每节课后复习笔记本,帮助理解。
- 练习自己实现算法。
- 利用学习到的概念探索真实世界的数据集。
- 利用学到的概念探索真实数据集。
---
<!-- 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) 进行翻译。尽管我们力求准确,但请注意自动翻译可能包含错误或不准确之处。以原文为权威来源。如涉及重要信息,建议使用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们不承担任何责任。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save