בשיעור זה למדתם על ערכת הכלים של AI אחראי, פרויקט "קוד פתוח, מונע על ידי הקהילה, שנועד לעזור למדעני נתונים לנתח ולשפר מערכות AI." למשימה זו, חקרו אחד מהמחברות של RAI Toolbox [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ודווחו על הממצאים שלכם במאמר או מצגת.
בשיעור זה למדת על ארגז הכלים של בינה מלאכותית אחראית, "פרויקט קוד פתוח, מונחה קהילה, שעוזר למדעני נתונים לנתח ולשפר מערכות בינה מלאכותית." למשימה זו, חקור אחד מה[מחברות](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) של ארגז הכלים של RAI ודווח על ממצאיך במאמר או בהצגת מצגת.
## קריטריונים להערכה
## קריטריונים
| קריטריונים | מצטיין | מספק | דורש שיפור |
| ----------- | ------- | ----- | ----------- |
| | מאמר או מצגת פאוורפוינט מוצגים, דנים במערכות של Fairlearn, המחברת שהורצה והמסקנות שהוסקו מהרצתה | מאמר מוצג ללא מסקנות | לא מוצג מאמר |
| | מוצג מאמר או מצגת פאוורפוינט שמדברים על מערכות Fairlearn, המחברת שרצת ומסקנות שהוסקו מהריצה | מוצג מאמר ללא מסקנות | לא מוצג מאמר |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**כתב ויתור**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס AI [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
מסמך זה תורגם באמצעות שירות התרגום האוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). אמנם אנו שואפים לדייק, יש לקחת בחשבון כי תרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפת המקור נחשב למקור המוסמך. עבור מידע קריטי מומלץ לפנות לתרגום מקצועי אנושי. אנו לא נישא באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.
> ### [השיעור הזה זמין גם ב-R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### הקדמה
רגרסיה ליניארית משמשת כאשר אנו רוצים לחזות **ערך מספרי** (לדוגמה, מחיר בית, טמפרטורה או מכירות).
היא פועלת על ידי מציאת קו ישר שמייצג בצורה הטובה ביותר את הקשר בין תכונות הקלט לפלט.
עד כה חקרתם מהי רגרסיה עם נתוני דוגמה שנאספו ממאגר נתוני מחירי דלעת, אותו נשתמש לאורך השיעור הזה. כמו כן, ביצעתם ויזואליזציה של הנתונים באמצעות Matplotlib.
במהלך השיעור הזה, נתמקד בהבנת המושג לפני שנחקור טכניקות רגרסיה מתקדמות יותר.

> אינפוגרפיקה מאת [דאסני מדיפלי](https://twitter.com/dasani_decoded)
## [מבחן לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
עכשיו אתם מוכנים לצלול לעומק הרגרסיה עבור למידת מכונה. בעוד שויזואליזציה מאפשרת להבין את הנתונים, הכוח האמיתי של למידת מכונה מגיע מ_אימון מודלים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד באופן אוטומטי תלות בין נתונים, ומאפשרים לכם לחזות תוצאות עבור נתונים חדשים שהמודל לא ראה קודם.
> ### [השיעור זמין גם ב-R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### מבוא
בשיעור הזה תלמדו יותר על שני סוגי רגרסיה: _רגרסיה לינארית בסיסית_ו_רגרסיה פולינומית_, יחד עם מעט מתמטיקה שמאחורי הטכניקות הללו. מודלים אלו יאפשרו לנו לחזות מחירי דלעת בהתאם לנתוני קלט שונים.
עד כה חקרתם מהי רגרסיה עם דוגמת נתונים שנאספה ממאגר מחירי הדלעות שבו נשתמש לאורך כל השיעור. בנוסף, חזיתם זאת באמצעות Matplotlib.
[](https://youtu.be/CRxFT8oTDMg "למידת מכונה למתחילים - הבנת רגרסיה לינארית")
כעת אתם מוכנים לצלול לעומק יותר לרגרסיה עבור למידת מכונה. בעוד שויזואליזציה מאפשרת להבין את הנתונים, הכוח האמיתי של למידת מכונה מגיע מ-_אימון מודלים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד באופן אוטומטי את התלויות בנתונים, והם מאפשרים לכם לחזות תוצאות עבור נתונים חדשים שהמודל לא ראה בעבר.
> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על רגרסיה לינארית.
בשיעור הזה תלמדו יותר על שני סוגי רגרסיה: _רגרסיה ליניארית בסיסית_ו_רגרסיה פולינומית_, יחד עם חלק מהמתמטיקה שמאחורי הטכניקות האלה. מודלים אלו יאפשרו לנו לחזות מחירי דלעות בהתאם לנתוני קלט שונים.
> לאורך הקורס הזה, אנו מניחים ידע מתמטי מינימלי, ושואפים להפוך אותו לנגיש לסטודנטים שמגיעים מתחומים אחרים. שימו לב להערות, 🧮 קריאות, דיאגרמות וכלים אחרים שיעזרו בהבנה.
[](https://youtu.be/CRxFT8oTDMg "למידת מכונה למתחילים - הבנת רגרסיה ליניארית")
### דרישות מקדימות
> 🎥 הקליקו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית.
כעת אתם אמורים להיות מוכנים עם מבנה נתוני הדלעת שאנו בוחנים. תוכלו למצוא אותו טעון מראש ומנוקה בקובץ _notebook.ipynb_ של השיעור הזה. בקובץ, מחיר הדלעת מוצג לפי יחידת bushel במסגרת נתונים חדשה. ודאו שאתם יכולים להריץ את המחברות הללו ב-kernels ב-Visual Studio Code.
> לאורך כל תכנית הלימודים, אנו מניחים ידע מתמטי מינימלי, ושואפים להפוך זאת לנגיש לסטודנטים הבאים מתחומים אחרים, לכן שימו לב להערות, 🧮 קריאות, דיאגרמות וכלי למידה נוספים המסייעים בהבנה.
### דרישות קדם
כעת אתם אמורים להכיר את מבנה נתוני הדלעות שאנו בודקים. תוכלו למצוא אותם טעונים ומנוקים מראש בקובץ _notebook.ipynb_ של השיעור. בקובץ, מחיר הדלעות מוצג לפרוטה חדשה במסגרת נתונים. ודאו שאתם יכולים להריץ את היומנים הללו ב-Kernels ב-Visual Studio Code.
### הכנה
כתזכורת, אתם טוענים את הנתונים הללו כדי לשאול שאלות לגביהם.
כאות זיכרון, אתם טוענים את הנתונים האלה כדי לשאול עליהם שאלות.
- מתי הזמן הטוב ביותר לקנות דלעות?
- איזה מחיר ניתן לצפות לקופסת דלעות מיניאטוריות?
- האם כדאי לקנות אותן בסלים של חצי בחמישה ליטרים או בקופסת 1 1/9 בחמישה ליטרים?
בואו נמשיך לחקור את הנתונים האלה.
- מתי הזמן הטוב ביותר לקנות דלעות?
- איזה מחיר אני יכול לצפות עבור מארז של דלעות מיניאטוריות?
- האם כדאי לי לקנות אותן בסלים של חצי bushel או בקופסאות של 1 1/9 bushel?
בואו נמשיך לחקור את הנתונים הללו.
בשיעור הקודם, יצרתם מסגרת נתונים של Pandas וטענתם חלק מהמערכת הנתונים המקורית, תוך סטנדרטיזציה של המחירים לפי החמישה ליטרים. אך בכך הצלחתם לאסוף כ-400 נקודות נתונים בלבד ורק עבור חודשים סתוויים.
בשיעור הקודם יצרתם מסגרת נתונים של Pandas ומילאתם אותה עם חלק ממאגר הנתונים המקורי, תוך סטנדרטיזציה של המחירים לפי bushel. עם זאת, על ידי כך הצלחתם לאסוף רק כ-400 נקודות נתונים ורק עבור חודשי הסתיו.
הסתכלו על הנתונים שהטענו מראש ביומן הנלווה לשיעור הזה. הנתונים נטענים מראש וגרף פיזור ראשוני מצויר למען הצגת נתוני החודש. ייתכן שנוכל לקבל מידע מפורט יותר על טבעם של הנתונים באמצעות ניקוי נוסף.
הסתכלו על הנתונים שטעונים מראש במחברת המצורפת לשיעור הזה. הנתונים טעונים מראש וגרף פיזור ראשוני מוצג כדי להראות נתוני חודשים. אולי נוכל לקבל מעט יותר פרטים על טיב הנתונים על ידי ניקוי נוסף שלהם.
## קו רגרסיה ליניארי
## קו רגרסיה לינארית
כפי שלמדתם בשיעור 1, המטרה של תרגיל רגרסיה ליניארית היא להיות מסוגלים לשרטט קו כדי:
כפי שלמדתם בשיעור הראשון, המטרה של תרגיל רגרסיה לינארית היא להיות מסוגלים לשרטט קו כדי:
- **להראות קשרים בין משתנים**. להראות את הקשר בין משתנים
- **לבצע תחזיות**. לבצע תחזיות מדויקות לגבי מיקום נקודת נתונים חדשה ביחס לקו.
- **להראות קשרים בין משתנים**. להראות את הקשר בין משתנים
- **לבצע תחזיות**. לבצע תחזיות מדויקות על מיקום נקודת נתונים חדשה ביחס לקו הזה.
שיטה טיפוסית של **רגרסיית שאריות מינימליות** היא ציור קו כזה. המונח "שאריות מינימליות" מתייחס לתהליך הפחתת השגיאה הכוללת במודל שלנו. עבור כל נקודת נתונים, אנו מודדים את המרחק האנכי (שנקרא שארית) בין הנקודה האמיתית והקו שלנו.
זה אופייני ל**רגרסיית ריבועים קטנים** לשרטט סוג כזה של קו. המונח 'ריבועים קטנים' מתייחס לכך שכל נקודות הנתונים שמסביב לקו הרגרסיה מרובעות ואז מסוכמות. באופן אידיאלי, הסכום הסופי הזה הוא קטן ככל האפשר, מכיוון שאנו רוצים מספר נמוך של שגיאות, או `ריבועים קטנים`.
אנו מרבעים מרחקים אלה משתי סיבות עיקריות:
אנו עושים זאת מכיוון שאנו רוצים לדגם קו שיש לו את המרחק המצטבר הקטן ביותר מכל נקודות הנתונים שלנו. אנו גם מרבעים את המונחים לפני הסכימה מכיוון שאנו מתמקדים בגודל שלהם ולא בכיוונם.
1. **מגמות גודל על פני כיוון:** אנו רוצים להתייחס לטעויות של -5 ו+5 באותה צורה. הריבוע הופך את כל הערכים לחיוביים.
> **🧮 תראו לי את המתמטיקה**
>
> הקו הזה, שנקרא _קו ההתאמה הטוב ביותר_, יכול להיות מבוטא על ידי [משוואה](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
2. **עונש לחריגים:** החישוב בריבוע נותן משקל רב יותר לטעויות גדולות ומאלץ את הקו להישאר קרוב לנקודות רחוקות.
לאחר מכן, אנו מוסיפים את כל הערכים המרובעים יחד. המטרה שלנו היא למצוא את הקו הספציפי שבו סכום זה הוא הכי נמוך (הערך הקטן ביותר האפשרי) — ומכאן השם "שאריות מינימליות".
> **🧮 הראו לי את המתמטיקה**
>
> הקו הזה, הנקרא _קו התאמה אופטימלי_, ניתן לביטוי באמצעות [משוואה](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` הוא המשתנה המסביר. `Y` הוא המשתנה התלוי. השיפוע של הקו הוא `b`ו-`a` הוא נקודת החיתוך עם ציר ה-Y, שמתייחסת לערך של `Y` כאשר `X = 0`.
> חשבו את הערך של Y. אם אתם משלמים בסביבות $4, זה חייב להיות אפריל! אינפוגרפיקה מאת [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 נתונים. באמצעות גרף פיזור, תוכלו לראות במהירות את מקדם המתאם. גרף עם נקודות נתונים מפוזרות בקו מסודר יש לו מתאם גבוה, אבל גרף עם נקודות נתונים מפוזרות בכל מקום בין X ל-Y יש לו מתאם נמוך.
מודל רגרסיה לינארית טוב יהיה כזה שיש לו מקדם מתאם גבוה (קרוב יותר ל-1 מאשר ל-0) באמצעות שיטת רגרסיית ריבועים קטנים עם קו רגרסיה.
✅ הריצו את המחברת המצורפת לשיעור הזה והסתכלו על גרף הפיזור של חודש מול מחיר. האם הנתונים שמקשרים בין חודש למחיר עבור מכירות דלעת נראים בעלי מתאם גבוה או נמוך, לפי הפרשנות הוויזואלית שלכם לגרף הפיזור? האם זה משתנה אם אתם משתמשים במדד מדויק יותר במקום `חודש`, למשל *יום בשנה* (כלומר מספר הימים מתחילת השנה)?
בקוד למטה, נניח שניקינו את הנתונים וקיבלנו מסגרת נתונים בשם `new_pumpkins`, דומה לזו הבאה:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> חשב את ערך Y. אם אתה משלם כ-4$, זה חייב להיות אפריל! אינפוגרפיקה מאת [ג'ן לופר](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 הניתנים. בעזרת גרף פיזור תוכלו במהירות להמחיש ויזואלית את המקדם הזה. גרף עם נקודות מפוזרות בקו מסודר יציג קורלציה גבוהה, ואילו גרף עם נקודות מפוזרות בכל מקום בין X ו-Y יציג קורלציה נמוכה.
מודל רגרסיה ליניארית טוב יהיה כזה שיש לו מקדם קורלציה גבוה (קרוב ל-1 יותר מאשר 0) בשימוש בשיטת רגרסיית שאריות מינימליות עם קו רגרסיה.
✅ הריצו את היומן הנלווה לשיעור הזה והסתכלו על גרף הפיזור של חודש מול מחיר. האם הנתונים המקשרים בין חודש למחיר במכירות הדלעות נראים עם קורלציה גבוהה או נמוכה, לפי הפרשנות הויזואלית שלכם של גרף הפיזור? האם זה משתנה אם תשתמשו במדידה מדויקת יותר במקום `חודש`, למשל *יום בשנה* (כלומר מספר הימים מתחילת השנה)?
בקוד למטה, נניח שניקינו את הנתונים, וקיבלנו מסגרת נתונים בשם `new_pumpkins`, כפי הבא:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> הקוד לניקוי הנתונים זמין ב-[`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). ביצענו את אותם שלבי ניקוי כמו בשיעור הקודם, וחישבנו את עמודת `DayOfYear` באמצעות הביטוי הבא:
> הקוד לניקוי הנתונים זמין ב-[`notebook.ipynb`](notebook.ipynb). ביצענו את אותם שלבי ניקוי כמו בשיעור הקודם, וחישבנו את עמודת `DayOfYear` באמצעות הביטוי הבא:
כעת כשברשותכם הבנה של המתמטיקה שמאחורי הרגרסיה הליניארית, ניצור מודל רגרסיה כדי לבדוק אם נוכל לחזות איזו חבילה של דלעות תהיה עם המחירים הטובים ביותר. מישהו שקונה דלעות לטובת חלקת דלעות לחג עשוי לרצות מידע זה על מנת לאפיין את רכישות חבילות הדלעות שלו.
עכשיו כשיש לכם הבנה של המתמטיקה שמאחורי רגרסיה לינארית, בואו ניצור מודל רגרסיה כדי לראות אם נוכל לחזות איזה מארז דלעות יציע את המחירים הטובים ביותר. מישהו שקונה דלעות עבור חוות דלעות לחג עשוי לרצות את המידע הזה כדי לייעל את רכישותיו של מארזי דלעות לחווה.
## חיפוש מתאם
## חיפוש קורלציה
[](https://youtu.be/uoRq-lW2eQo "למידת מכונה למתחילים - חיפוש מתאם: המפתח לרגרסיה לינארית")
[](https://youtu.be/uoRq-lW2eQo "למידת מכונה למתחילים - חיפוש קורלציה: המפתח לרגרסיה ליניארית")
> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על מתאם.
> 🎥 הקליקו על התמונה למעלה לסרטון קצר על קורלציה.
מהשיעור הקודם כנראה ראיתם שהמחיר הממוצע עבור חודשים שונים נראה כך:
בשיעור הקודם כנראה שראיתם שמחיר ממוצע לאורך חודשים שונים נראה כך:
<imgalt="מחיר ממוצע לפי חודש"src="../../../../translated_images/he/barchart.a833ea9194346d76.webp"width="50%"/>
זה מציע שיכול להיות מתאם, ואנו יכולים לנסות לאמן מודל רגרסיה לינארית כדי לחזות את הקשר בין `Month` ל-`Price`, או בין `DayOfYear` ל-`Price`. הנה גרף הפיזור שמראה את הקשר האחרון:
זה מצביע על כך שלפחות יש קורלציה כלשהי, ונוכל לנסות לאמן מודל רגרסיה ליניארית כדי לחזות את הקשר בין `חודש`ו-`מחיר`, או בין `DayOfYear` ל-`מחיר`. להלן גרף הפיזור שמציג את הקשר האחרון:
<imgalt="גרף פיזור של מחיר מול יום בשנה"src="../../../../translated_images/he/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="גרף פיזור של מחיר מול יום בשנה"src="../../../../translated_images/he/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
נראה שהמתאם די קטן, -0.15 לפי `Month`ו- -0.17 לפי `DayOfMonth`, אבל יכול להיות קשר חשוב אחר. נראה שיש קבוצות שונות של מחירים שמקבילות לזני דלעות שונים. כדי לאשר את ההשערה הזו, בואו נשרטט כל קטגוריית דלעות בצבע שונה. על ידי העברת פרמטר `ax` לפונקציית גרף הפיזור, נוכל לשרטט את כל הנקודות על אותו גרף:
נראה שהקורלציה די קטנה, -0.15 לפי `חודש`ו- -0.17 לפי `DayOfMonth`, אך יש עדיין קשר אחר שחשוב לקחת בחשבון. נראה שיש אשכולות שונים של מחירים המתאימים לסוגי דלעות שונים. כדי לאשר השערה זו, נצייר כל קטגוריית דלעות בצבע שונה. באמצעות העברת פרמטר `ax` לפונקציית הפיזור נוכל לצייר את כל הנקודות באותו גרף:
```python
ax=None
@ -127,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="גרף פיזור של מחיר מול יום בשנה" src="../../../../translated_images/he/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="גרף פיזור של מחיר מול יום בשנה לפי סוג pie" src="../../../../translated_images/he/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
אם עכשיו נחשב את המתאם בין `Price` ל-`DayOfYear` באמצעות פונקציית `corr`, נקבל משהו כמו `-0.27` - מה שאומר שאימון מודל חיזוי הגיוני.
אם נכנס לחשב את הקורלציה בין `מחיר`ו-`DayOfYear` באמצעות הפונקציה `corr`, נקבל משהו כמו `-0.27`– כלומר אימון מודל חיזוי הגיוני.
> לפני אימון מודל רגרסיה לינארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה לינארית לא עובדת טוב עם ערכים חסרים, ולכן הגיוני להיפטר מכל התאים הריקים:
> לפני אימון מודל רגרסיה ליניארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה ליניארית לא עובדת טוב עם ערכים חסרים, לכן הגיוני להיפטר מכל התאים הריקים:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
גישה נוספת תהיה למלא את אותם ערכים ריקים בערכי ממוצע מהעמודה המתאימה.
גישה נוספת תהיה למלא את הערכים הריקים בערכים ממוצעים מהעמודה המתאימה.
## רגרסיה ליניארית פשוטה
## רגרסיה לינארית פשוטה
[](https://youtu.be/e4c_UP2fSjg "למידת מכונה למתחילים - רגרסיה ליניארית ופולינומית באמצעות Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "למידת מכונה למתחילים - רגרסיה לינארית ופולינומית באמצעות Scikit-learn")
> 🎥 הקליקו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית ופולינומית.
> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על רגרסיה לינארית ופולינומית.
כדי לאמן את מודל הרגרסיה הלינארית שלנו, נשתמש בספריית **Scikit-learn**.
כדי לאמן את מודל הרגרסיה הליניארית שלנו, נשתמש בספריית **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
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 סנט ליום. אנו יכולים גם לגשת לנקודת החיתוך של הרגרסיה עם ציר ה-Y באמצעות `lin_reg.intercept_` - זה יהיה בסביבות `21` במקרה שלנו, מה שמעיד על המחיר בתחילת השנה.
האובייקט `LinearRegression` לאחר ביצוע `fit` מכיל את כל מקדמי הרגרסיה, שאליהם ניתן לגשת באמצעות המאפיין `.coef_`. במקרה שלנו, יש רק מקדם אחד, שצריך להיות בסביבות `-0.017`. זה אומר שהמחירים נראים כיורדים במקצת עם הזמן, אבל לא יותר מדי, בסביבות 2 סנטים ליום. ניתן גם לגשת לנקודת החיתוך של הרגרסיה עם ציר ה-Y באמצעות `lin_reg.intercept_` - היא תהיה בסביבות `21` במקרה שלנו, מה שמצביע על המחיר בתחילת השנה.
כדי לראות עד כמה המודל שלנו מדויק, אנו יכולים לחזות מחירים על מאגר נתוני הבדיקה, ואז למדוד עד כמה התחזיות שלנו קרובות לערכים הצפויים. ניתן לעשות זאת באמצעות מדד שגיאה ממוצעת ריבועית (MSE), שהוא הממוצע של כל ההבדלים הריבועיים בין הערך הצפוי לערך החזוי.
כדי לראות עד כמה המודל שלנו מדויק, נוכל לחזות מחירים על קבוצת נתוני מבחן, ואז למדוד עד כמה התחזיות שלנו קרובות לערכים הצפויים. ניתן לעשות זאת באמצעות מדד השגיאה הממוצעת הריבועית (MSE), שהוא הממוצע של כל ההבדלים הריבועים בין הערך הצפוי והערך החזוי.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
נראה שהשגיאה שלנו מתרכזת סביב 2 נקודות, שזה בערך 17%. לא כל כך טוב. אינדיקטור נוסף לאיכות המודל הוא **מקדם ההחלטיות**, שניתן לחשב כך:
השגיאה שלנו נראית בסביבות 2 נקודות, שזה כ־17%. לא כל כך טוב. מדד נוסף לאיכות המודל הוא **מקדם הקביעה**, שניתן לקבל כך:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
אם הערך הוא 0, זה אומר שהמודל לא מתחשב בנתוני הקלט ופועל כ*מנבא הליניארי הגרוע ביותר*, שהוא פשוט ממוצע של התוצאה. ערך של 1 אומר שאנחנו יכולים לנבא באופן מושלם את כל התוצאות הצפויות. במקרה שלנו, המקדם הוא בערך 0.06, שזה די נמוך.
```
אם הערך הוא 0, זה אומר שהמודל אינו מתחשב בנתוני הקלט, ופועל כ*התחזית הקווית הגרועה ביותר*, שהיא פשוט ערך ממוצע של התוצאה. ערך של 1 אומר שניתן לחזות באופן מושלם את כל התוצאות הצפויות. במקרה שלנו, המקדם הוא בסביבות 0.06, שזה יחסית נמוך.
ניתן גם לשרטט את נתוני הבדיקה יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה פועלת במקרה שלנו:
אנו יכולים גם לגרור את נתוני המבחן יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה פועלת במקרה שלנו:
סוג נוסף של רגרסיה ליניארית הוא רגרסיה פולינומית. בעוד שלפעמים יש קשר ליניארי בין משתנים - ככל שנפח הדלעת גדול יותר, כך המחיר גבוה יותר - לפעמים קשרים אלו לא יכולים להיות מיוצגים כמישור או כקו ישר.
סוג נוסף של רגרסיה לינארית הוא רגרסיה פולינומיאלית. בעוד שלפעמים יש קשר לינארי בין משתנים - ככל שהדלעת גדולה יותר בנפח, כך המחיר גבוה יותר - לפעמים יחסים אלו אינם ניתנים לייצוג במישור או בקו ישר.
✅ הנה [כמה דוגמאות נוספות](https://online.stat.psu.edu/stat501/lesson/9/9.8) לנתונים שיכולים להשתמש ברגרסיה פולינומית.
✅ הנה [כמה דוגמאות נוספות](https://online.stat.psu.edu/stat501/lesson/9/9.8) לנתונים שיכולים להשתמש ברגרסיה פולינומיאלית
תסתכלו שוב על הקשר בין תאריך למחיר. האם פיזור הנתונים נראה כאילו הוא חייב להיות מנותח באמצעות קו ישר? האם מחירים לא יכולים להשתנות? במקרה כזה, ניתן לנסות רגרסיה פולינומית.
הסתכל שוב על הקשר בין התאריך למחיר. האם נקודות הפיזור האלה נראות כמו שצריך להיות מנותחות בקו ישר? האם המחירים לא יכולים להשתנות? במקרה הזה, אפשר לנסות רגרסיה פולינומיאלית.
✅ פולינומים הם ביטויים מתמטיים שיכולים לכלול משתנה אחד או יותר ומקדמים.
✅ פולינומים הם ביטויים מתמטיים שעשויים לכלול משתנה אחד או יותר ומקדמים
רגרסיה פולינומית יוצרת קו מעוקל שמתאים טוב יותר לנתונים לא ליניאריים. במקרה שלנו, אם נכלול משתנה `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 כוללת [API צנרת](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) נוח לשילוב שלבי עיבוד נתונים שונים יחד. **צנרת** היא שרשרת של **אומדנים**. במקרה שלנו, ניצור צנרת שמוסיפה תחילה תכונות פולינומיאליות למודל, ואז מאמנת את הרגרסיה:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +254,62 @@ from sklearn.pipeline import make_pipeline
שימוש ב-`PolynomialFeatures(2)` אומר שנכלול את כל הפולינומים מדרגה שנייה מנתוני הקלט. במקרה שלנו זה פשוט אומר`DayOfYear`<sup>2</sup>, אבל אם ישנם שני משתני קלט X ו-Y, זה יוסיף X<sup>2</sup>, XY ו-Y<sup>2</sup>. ניתן גם להשתמש בפולינומים מדרגה גבוהה יותר אם רוצים.
שימוש ב־`PolynomialFeatures(2)` אומר שנכלול את כל הפולינומים מדרגה שנייה מתוך נתוני הקלט. במקרה שלנו זה פשוט יהיה`DayOfYear`<sup>2</sup>, אבל אם יש לנו שני משתני קלט X ו־Y, זה יוסיף X<sup>2</sup>, XY ו־Y<sup>2</sup>. ניתן גם להשתמש בפולינומים מדרגות גבוהות יותר אם רוצים.
ניתן להשתמש בצינורות באותו אופן כמו באובייקט `LinearRegression` המקורי, כלומר ניתן להשתמש ב-`fit` בצינור ואז ב-`predict` כדי לקבל את תוצאות הניבוי. הנה הגרף שמראה את נתוני הבדיקה ואת עקומת הקירוב:
ניתן להשתמש בצנרות באותו אופן כמו האובייקט `LinearRegression` המקורי, כלומר, נוכל לבצע `fit` לצנרת, ואז להשתמש ב־`predict` כדי לקבל את תוצאות התחזית. להלן הגרף המציג את נתוני המבחן, ועקומת ההתאמה:
שימוש ברגרסיה פולינומית מאפשר לנו לקבל MSE מעט נמוך יותר ומקדם החלטיות גבוה יותר, אך לא באופן משמעותי. יש לקחת בחשבון תכונות נוספות!
בשימוש ברגרסיה פולינומיאלית, אנחנו יכולים לקבל MSE נמוך יותר במעט ומקדם קביעה גבוה יותר, אבל לא באופן משמעותי. נצטרך לקחת בחשבון תכונות נוספות!
> ניתן לראות שהמחירים המינימליים של דלעות נצפים איפשהו סביב ליל כל הקדושים. איך אפשר להסביר את זה?
> ניתן לראות שמחירי הדלעות הנמוכים ביותר נצפים בסביבות ליל כל הקדושים. איך אפשר להסביר זאת?
🎃 כל הכבוד, יצרתם מודל שיכול לעזור לנבא את מחיר דלעות הפאי. כנראה שתוכלו לחזור על אותו תהליך עבור כל סוגי הדלעות, אבל זה יהיה מייגע. עכשיו נלמד איך לקחת בחשבון את סוג הדלעת במודל שלנו!
🎃 כל הכבוד, יצרת מודל שיכול לסייע לחזות את מחיר דלעת לפאי. כנראה שתוכל לחזור על אותו תהליך לכל סוגי הדלעות, אבל זה יהיה מעייף. בוא נלמד עכשיו איך לקחת בחשבון מגוון דלעת במודל שלנו!
## תכונות קטגוריות
בעולם האידיאלי, נרצה להיות מסוגלים לנבא מחירים עבור סוגי דלעות שונים באמצעות אותו מודל. עם זאת, העמודה`Variety` שונה במקצת מעמודות כמו `Month`, מכיווןשהיא מכילה ערכים לא מספריים. עמודות כאלה נקראות **קטגוריות**.
בעולם האידיאלי, אנחנו רוצים להיות מסוגלים לחזות מחירים לסוגים שונים של דלעות באמצעות אותו מודל. עם זאת, עמודת`Variety` שונה במקצת מעמודות כמו `Month`, כי היא מכילה ערכים לא מספריים. עמודות כאלה נקראות **קטגוריות**.
[](https://youtu.be/DYGliioIAE0 "ML למתחילים - ניבוי תכונות קטגוריות עם רגרסיה ליניארית")
[](https://youtu.be/DYGliioIAE0 "ML למתחילים - תחזיות תכונות קטגוריות עם רגרסיה לינארית")
> 🎥 לחצו על התמונה למעלה לסרטון קצר על שימוש בתכונות קטגוריות.
> 🎥 לחצו על התמונה למעלה לסרטון קצר שמסביר שימוש בתכונות קטגוריות.
כאן ניתן לראות איך המחיר הממוצע תלוי בסוג הדלעת:
כאן ניתן לראות כיצד המחיר הממוצע תלוי בסוג:
<imgalt="מחיר ממוצע לפי סוג" src="../../../../translated_images/he/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/he/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
כדי לקחת את סוג הדלעת בחשבון, תחילה עלינו להמיר אותו לצורה מספרית, או **לקודד** אותו. ישנן מספר דרכים לעשות זאת:
כדי לקחת בחשבון את הסוג, צריכים תחילה להמיר אותו לצורה מספרית, או **לקודד** אותו. קיימות כמה דרכים לעשות זאת:
* **קידוד מספרי פשוט** יבנה טבלה של סוגי דלעות שונים, ואז יחליף את שם הסוג במספר אינדקס בטבלה. זו לא הבחירה הטובה ביותר עבור רגרסיה ליניארית, מכיוון שרגרסיה ליניארית מתחשבת בערך המספרי של האינדקס ומוסיפה אותו לתוצאה, תוך הכפלה במקדם מסוים. במקרה שלנו, הקשר בין מספר האינדקס למחיר הוא בבירור לא ליניארי, גם אם נוודא שהאינדקסים מסודרים בצורה מסוימת.
* **קידוד One-hot** יחליף את העמודה`Variety` בארבע עמודות שונות, אחת לכל סוג. כל עמודה תכיל `1` אם השורה המתאימה היא מסוג מסוים, ו-`0` אחרת. זה אומר שיהיו ארבעה מקדמים ברגרסיה ליניארית, אחד לכל סוג דלעת, שאחראי על "מחיר התחלתי" (או ליתר דיוק "מחיר נוסף") עבור אותו סוג מסוים.
* **קידוד מספרי** פשוט יבנה טבלה של סוגים שונים, ואז יחליף את שם הסוג במספר אינדקס בטבלה הזו. זו לא רעיון טוב לרגרסיה לינארית, כי היא מתחשבת בערך המספרי האמיתי של האינדקס, ומוסיפה אותו לתוצאה אחרי הכפל במקדם כלשהו. במקרה שלנו, הקשר בין מספר האינדקס למחיר אינו לינארי, אפילו אם נסדר את האינדקסים בסדר מסוים.
* **קידוד One-hot** יחליף את עמודת`Variety` בארבע עמודות שונות, אחת לכל סוג. כל עמודה תכיל `1` אם השורה המתאימה היא של אותו סוג, ו־`0` אחרת. משמעות הדבר היא שיהיו ארבעה מקדמים ברגרסיה הלינארית, אחד לכל סוג דלעת, האחראיים ל"מחיר ההתחלתי" (או במדויק יותר "התווסף למחיר") עבור אותו סוג.
הקוד הבא מראה איך ניתן לקודד סוג דלעת בשיטת One-hot:
הקוד שלמטה מראה כיצד ניתן לקודד one-hot את הסוג:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
כדי לאמן רגרסיה ליניארית באמצעות סוג דלעת מקודד בשיטת One-hot כקלט, פשוט צריך לאתחל את נתוני `X`ו-`y` בצורה נכונה:
כדי לאמן רגרסיה לינארית תוך שימוש בסוג המקודד one-hot כקלט, צריך פשוט לאתחל את הנתונים `X` ו־`y` כראוי:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
שאר הקוד זהה למה שהשתמשנו בו קודם כדי לאמן רגרסיה ליניארית. אם תנסו זאת, תראו ש-Mean Squared Error נשאר בערך אותו דבר, אבל מקדם ההחלטיות עולה משמעותית (~77%). כדי לקבל ניבויים מדויקים יותר, ניתן לקחת בחשבון תכונות קטגוריות נוספות, כמו גם תכונות מספריות, כגון `Month` או `DayOfYear`. כדי לקבל מערך גדול של תכונות, ניתן להשתמש ב-`join`:
שאר הקוד זהה למה שהשתמשנו בו למעלה להכשרת רגרסיה לינארית. אם תנסו זאת, תראו שהשגיאה הממוצעת הריבועית (MSE) תהיה בערך זהה, אבל נקבל מקדם קביעה הרבה יותר גבוה (~77%). כדי לקבל תחזיות מדויקות יותר, נוכל לקחת בחשבון עוד תכונות קטגוריות, כמו גם תכונות מספריות, כמו `Month` או `DayOfYear`. כדי לקבל מערך תכונות גדול אחד, נוכל להשתמש ב־`join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,68 +317,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
כאן אנו לוקחים בחשבון גם את `City` ואת סוג האריזה, מה שמביא אותנו ל-MSE של 2.84 (10%) ולמקדם החלטיות של 0.94!
כאן אנחנו גם מתחשבים ב־`City` ובסוג `Package`, מה שמקנה לנו MSE של 2.84 (10%), ומקדם קביעה של 0.94!
## לשלב הכל יחד
כדי ליצור את המודל הטוב ביותר, ניתן להשתמש בנתונים משולבים (קטגוריות מקודדות בשיטת One-hot + נתונים מספריים) מהדוגמה לעיל יחד עם רגרסיה פולינומית. הנה הקוד המלא לנוחיותכם:
כדי ליצור את המודל הטוב ביותר, נוכל להשתמש בנתונים משולבים (קטגוריים מקודדים one-hot + מספריים) מהדוגמה למעלה יחד עם רגרסיה פולינומיאלית. להלן הקוד המלא לנוחיותכם:
```python
# set up training data
# להגדיר נתוני אימון
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# לבצע פיצול לאימון ובדיקה
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
🏆 כל הכבוד! יצרתם ארבעה מודלים של רגרסיה בשיעור אחד ושיפרתם את איכות המודל ל-97%. בחלק האחרון על רגרסיה תלמדו על רגרסיה לוגיסטית כדי לקבוע קטגוריות.
🏆 כל הכבוד! יצרת ארבעה מודלים של רגרסיה בשיעור אחד, ושיפרת את איכות המודל ל־97%. בחלק הסופי בנושא רגרסיה תלמד על רגרסיה לוגיסטית לקביעת קטגוריות.
---
## 🚀אתגר
בדקו משתנים שונים במחברת זו כדי לראות איך הקורלציה משפיעה על דיוק המודל.
בדוק כמה משתנים שונים במחברת זו כדי לראות כיצד מתאם מתייחס לדיוק המודל.
## [מבחן לאחר השיעור](https://ff-quizzes.netlify.app/en/ml/)
## [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## סקירה ולימוד עצמי
## סקירה ולמידה עצמית
בשיעור זה למדנו על רגרסיה ליניארית. ישנם סוגים חשובים נוספים של רגרסיה. קראו על טכניקות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמוד כדי להעמיק הוא [קורס הלמידה הסטטיסטית של סטנפורד](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
בשיעור זה למדנו על רגרסיה לינארית. יש סוגים חשובים נוספים של רגרסיה. קרא על שיטות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמידה נוספת הוא [קורס הלמידה הסטטיסטית של סטנפורד](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## משימה
[בנו מודל](assignment.md)
[בנה מודל](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**כתב ויתור**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). בעוד שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדייק, יש להיות מודעים לכך שתרגומים אוטומטיים עלולים להכיל שגיאות או אי דיוקים. יש לראות את המסמך המקורי בשפת המקור כמקור המוסמך והמהימן. למידע קריטי מומלץ להשתמש בתרגום מקצועי שנעשה על ידי אדם. אנו לא נושא באחריות לכל אי הבנה או פרשנות שגויה הנובעים משימוש בתרגום זה.
## [חידון לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
### דרישות מוקדמות
### דרישות מקדימות
אנו מניחים שסיימת את השיעורים הקודמים ויש לך מערך נתונים מנוקה בתיקיית `data` בשם _cleaned_cuisines.csv_ שנמצא בשורש תיקיית ארבעת השיעורים.
אנחנו מניחים שסיימת את השיעורים הקודמים ויש לך מערך נתונים נקי בתיקיית `data` בשם _cleaned_cuisines.csv_ בשורש תיקיית 4 השיעורים הזו.
### הכנה
טענו את קובץ _notebook.ipynb_ שלך עם מערך הנתונים המנוקה וחילקנו אותו למסגרות נתונים X ו-y, מוכנות לתהליך בניית המודל.
טענו את קובץ ה-_notebook.ipynb_ שלך עם מערך הנתונים הנקי וחילקנו אותו למסגרות נתונים X ו-y, מוכנות לתהליך בניית המודל.
## מפת סיווג
בשיעור הקודם, למדת על האפשרויות השונות שיש לך בעת סיווג נתונים באמצעות דף העזר של Microsoft. Scikit-learn מציעה דף עזר דומה אך מפורט יותר שיכול לעזור לצמצם את הבחירה במעריכים (מונח נוסף למסווגים):
קודם לכן, למדת על האפשרויות השונות שיש לך כאשר אתה מסווג נתונים באמצעות גיליון העזר של מיקרוסופט. Scikit-learn מציעה גיליון עזר דומה, אך מפורט יותר, שיכול לעזור לצמצם עוד יותר את האמדנים שלך (מונח נוסף למסווגים):

> טיפ: [בקר במפה הזו אונליין](https://scikit-learn.org/stable/tutorial/machine_learning_map/) ולחץ לאורך המסלול כדי לקרוא את התיעוד.

> טיפ: [בקר במפה זו אונליין](https://scikit-learn.org/stable/tutorial/machine_learning_map/) ולחץ לאורך המסלול כדי לקרוא תיעוד.
### התוכנית
המפה הזו מאוד מועילה ברגע שיש לך הבנה ברורה של הנתונים שלך, שכן ניתן 'ללכת' לאורך המסלולים שלה כדי להגיע להחלטה:
מפה זו מאוד מועילה ברגע שיש לך הבנה ברורה של הנתונים שלך, כי תוכל 'ללכת' לאורך הנתיבים שלה אל ההחלטה:
- יש לנו >50 דגימות
- אנחנו רוצים לחזות קטגוריה
- אנו רוצים לחזות קטגוריה
- יש לנו נתונים מתויגים
- יש לנו פחות מ-100K דגימות
- ✨ אנחנו יכולים לבחור ב-Linear SVC
- אם זה לא עובד, מכיוון שיש לנו נתונים מספריים
- אנחנויכולים לנסות ✨ KNeighbors Classifier
- אם זה לא עובד, לנסות ✨ SVC ו-✨ Ensemble Classifiers
- ✨ ניתן לבחור ב-Linear SVC
- אם זה לא עובד, כיוון שיש לנו נתונים מספריים
- נוכל לנסות ✨ KNeighbors Classifier
- אם זה לא עזר, נסה ✨ SVC ו-✨ Ensemble Classifiers
זהו מסלול מאוד מועיל לעקוב אחריו.
זה מסלול מאוד מועיל למעקב.
## תרגיל - חלוקת הנתונים
## תרגיל - פצל את הנתונים
בהתאם למסלול הזה, כדאי להתחיל בייבוא כמה ספריות לשימוש.
בהמשך למסלול זה, כדאי להתחיל בייבוא ספריות לשימוש.
סיווג באמצעות Support-Vector (SVC) הוא חלק ממשפחת טכניקות ה-ML של Support-Vector Machines (למידע נוסף על אלו למטה). בשיטה זו, ניתן לבחור 'גרעין' כדי להחליט כיצד לקבץ את התוויות. הפרמטר 'C' מתייחס ל'רגולריזציה' שמווסתת את השפעת הפרמטרים. הגרעין יכול להיות אחד מ-[כמה](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); כאן אנו מגדירים אותו כ'לינארי' כדי להבטיח שנשתמש ב-Linear SVC. ברירת המחדל של הסתברות היא 'false'; כאן אנו מגדירים אותה כ'true' כדי לקבל הערכות הסתברות. אנו מגדירים את מצב האקראיות כ-'0' כדי לערבב את הנתונים ולקבל הסתברויות.
Support-Vector clustering (SVC) הוא בן למשפחת Support-Vector machines של טכניקות למידת מכונה (למידע נוסף על אלה בהמשך). בשיטה הזו, ניתן לבחור 'kernel' להחליט איך לארגן את התוויות. הפרמטר 'C' מתייחס ל'רגולריזציה' שמווסת את ההשפעה של הפרמטרים. ה-kernel יכול להיות אחד מ[כמה](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); כאן הגדרנו אותו כ'linear' כדי לוודא שנעשה שימוש ב-Linear SVC. פרמטר ההסתברות (probability) ברירת המחדל הוא 'false'; כאן הגדרנו אותו ל-'true' כדי לאסוף הערכות הסתברות. קבענו את מצב האקראיות ל-'0' כדי לערבב את הנתונים ולקבל הסתברויות.
### תרגיל - יישום Linear SVC
### תרגיל - השתמש ב-Linear SVC
התחל ביצירת מערך מסווגים. תוסיף בהדרגה למערך הזה ככל שנבדוק.
התחל ביצירת מערך מסווגים. תוסיף למערך זה בהדרגה ככל שנבדוק.
K-Neighbors הוא חלק ממשפחת שיטות ה-ML של "שכנים", שניתן להשתמש בהן ללמידה מונחית ולא מונחית. בשיטה זו, נוצר מספר מוגדר מראש של נקודות, והנתונים נאספים סביב נקודות אלו כך שניתן לחזות תוויות כלליות עבור הנתונים.
K-Neighbors הוא חלק ממשפחת "הקהלים" של שיטות למידת המכונה, שיכולות לשמש ללמידה מפוקחת ולא מפוקחת. בשיטה זו, נוצר מספר מוגדר מראש של נקודות ואוספים סביבן נתונים כך שניתן לחזות תוויות כלליות עבור הנתונים.
### תרגיל - יישום מסווג K-Neighbors
### תרגיל - השתמש במסווג K-Neighbors
המסווג הקודם היה טוב ועבד היטב עם הנתונים, אבל אולי נוכל להשיג דיוק טוב יותר. נסה מסווג K-Neighbors.
המסווג הקודם היה טוב ועבד היטב עם הנתונים, אבל אולי ניתן להשיג דיוק טוב יותר. נסה מסווג K-Neighbors.
1. הוסף שורה למערך המסווגים שלך (הוסף פסיק אחרי הפריט של Linear SVC):
1. הוסף שורה למערך המסווגים שלך (הוסף פסיק אחרי פריט ה-Linear SVC):
```python
'KNN classifier': KNeighborsClassifier(C),
```
התוצאה קצת פחות טובה:
התוצאה מעט גרועה יותר:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -140,13 +140,13 @@ K-Neighbors הוא חלק ממשפחת שיטות ה-ML של "שכנים", שנ
## מסווג Support Vector
מסווגי Support-Vector הם חלק ממשפחת [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) של שיטות ML המשמשות למשימות סיווג ורגרסיה. SVMs "ממפים דוגמאות אימון לנקודות במרחב" כדי למקסם את המרחק בין שתי קטגוריות. נתונים עוקבים ממופים למרחב הזה כך שניתן לחזות את הקטגוריה שלהם.
מסווגי Support-Vector הם חלק ממשפחת שיטות למידת מכונה בשם [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) המשמשות למשימות סיווג ורגרסיה. SVMs "ממפים דוגמאות אימון לנקודות במרחב" כדי למקסם את המרחק בין שתי קטגוריות. נתונים הבאים ממופים למרחב זה כך שניתן לחזות את הקטגוריה שלהם.
### תרגיל - יישום מסווג Support Vector
### תרגיל - השתמש במסווג Support Vector
בואו ננסה להשיג דיוק קצת יותר טוב עם מסווג Support Vector.
בוא ננסה להשיג דיוק מעט טוב יותר עם מסווג Support Vector.
1. הוסף פסיק אחרי הפריט של K-Neighbors, ואז הוסף את השורה הזו:
1. הוסף פסיק אחרי פריט K-Neighbors, ואז הוסף את השורה הזאת:
```python
'SVC': SVC(),
@ -171,9 +171,9 @@ K-Neighbors הוא חלק ממשפחת שיטות ה-ML של "שכנים", שנ
✅ למד על [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## מסווגי Ensemble
## מסווגים Ensemble
בואו נעקוב אחרי המסלול עד הסוף, למרות שהבדיקה הקודמת הייתה די טובה. ננסה כמה מסווגי 'Ensemble', במיוחד Random Forest ו-AdaBoost:
בוא נלך לאורך המסלול עד הסוף, למרות שהבדיקה הקודמת הייתה די טובה. ננסה כמה 'Ensemble Classifiers', במיוחד Random Forest ו-AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ למד על [מסווגי Ensemble](https://scikit-learn.org/stable/modules/ensemble.html)
✅ למד על [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
שיטה זו של למידת מכונה "משלבת את התחזיות של כמה מעריכים בסיסיים" כדי לשפר את איכות המודל. בדוגמה שלנו, השתמשנו ב-Random Trees ו-AdaBoost.
שיטה זו בלמידת מכונה "משלבת את הערכות הבסיס של מספר אומדנים" כדי לשפר את איכות המודל. בדוגמה שלנו השתמשנו ב-Random Trees ו-AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), שיטה ממוצעת, בונה 'יער' של 'עצים החלטה' עם אקראיות כדי להימנע מהתאמת יתר. הפרמטר n_estimators מוגדר למספר העצים.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), שיטה ממוצעת, בונה 'יער' של 'עצים החלטיים' עם אלמנטים אקראיים כדי למנוע התאמת יתר. הפרמטר n_estimators מוגדר כמספר העצים.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) מתאים מסווג למערך נתונים ואז מתאים עותקים של אותו מסווג לאותו מערך נתונים. הוא מתמקד במשקל של פריטים שסווגו באופן שגוי ומכוונן את ההתאמה למסווג הבא כדי לתקן.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) מתאים מסווג למערך נתונים ואז מתאים עותקים של המסווג לאותו מערך נתונים. הוא מתמקד במשקלות של פריטים שסווגו שגוי ומעדכן את ההתאמה למסווג הבא כדי לתקן זאת.
---
## 🚀אתגר
לכל אחת מהטכניקות הללו יש מספר רב של פרמטרים שניתן לכוונן. חקור את פרמטרי ברירת המחדל של כל אחת מהן וחשוב על מה משמעות כוונון הפרמטרים הללו עבור איכות המודל.
לכל אחת מהטכניקות הללו יש מספר רב של פרמטרים שניתן לכוונן. מחקר את ברירות המחדל של הפרמטרים של כל אחת וחשוב מה פירוש כוונון הפרמטרים הללו עבור איכות המודל.
## [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## סקירה ולימוד עצמי
## סקירה ולמידה עצמית
יש הרבה מונחים מקצועיים בשיעורים האלה, אז קח רגע לעיין [ברשימה הזו](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) של מונחים שימושיים!
יש הרבה מונחים בשיעורים אלו, אז הקדש רגע לסקור [רשימה זו](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) של מונחים שימושיים!
## משימה
## מטלה
[משחק פרמטרים](assignment.md)
[משחק עם הפרמטרים](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). אף שאנו שואפים לדייק, יש לקחת בחשבון כי תרגומים אוטומטיים עלולים להכיל טעויות או אי-דיוקים. המסמך המקורי בשפת המקור שלו צריך להיחשב כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעים משימוש בתרגום זה.
"\n---\n\n**כתב ויתור**: \nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי בני אדם. איננו נושאים באחריות לאי-הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**הצהרת אחראיות**: \nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). אנו שואפים לדיוק, אך יש לשים לב כי תרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו הטבעית נחשב למקור הסמכותי. עבור מידע קריטי מומלץ להשתמש בתרגום מקצועי אנושי. אנו לא נושאים באחריות על אי-הבנות או פרשנויות שגויות הנובעות משימוש בתרגום זה.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**כתב ויתור**:\nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**כתב ויתור**:\nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. יש להתייחס למסמך המקורי בשפתו המקורית כמקור הסמכותי. לצורך מידע קריטי מומלץ להיעזר בתרגום מקצועי של מתרגם אנושי. איננו אחראים לכל הבנה שגויה או פרשנות שגויה הנובעת משימוש בתרגום זה.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
יש לנו סדרת לימוד בדיסקורד עם AI, למדו עוד והצטרפו אלינו ב-[Learn with AI Series](https://aka.ms/learnwithai/discord) בין התאריכים 18 עד 30 בספטמבר 2025. תקבלו טיפים וטריקים לשימוש ב-GitHub Copilot במדעי הנתונים.
יש לנו סדרת למידה ב-Discord בנושא AI, למדו והצטרפו אלינו ב-[סדרת למידה עם AI](https://aka.ms/learnwithai/discord) בין התאריכים 18-30 בספטמבר, 2025. תקבלו טיפים וטריקים לשימוש ב-GitHub Copilot לנתוני מדע.


# למידת מכונה למתחילים - תוכנית לימודים
# למידת מכונה למתחילים - תכנית לימודים
> 🌍 טוסוברחבי העולם תוך חקר למידת מכונה דרך תרבויות העולם 🌍
> 🌍 טוסוסביב העולם בזמן שאנו חוקרים למידת מכונה באמצעות תרבויות העולם 🌍
הסניפים לענן במיקרוסופט שמחים להציע תוכנית לימודים של 12 שבועות ו-26 שיעורים בנושא **למידת מכונה**. בתוכנית זו תלמדו על מה שלפעמים נקרא**למידת מכונה קלאסית**, תוך שימוש בעיקר בספריית Scikit-learn והימנעות מלמידה עמוקה, הנלמדת בתוכנית שלנו ל-[AI למתחילים](https://aka.ms/ai4beginners). שילבו את השיעורים האלה עם תכנית 'מדעי הנתונים למתחילים' שלנו ב-[https://aka.ms/ds4beginners](https://aka.ms/ds4beginners)!
מקדמי ענן במיקרוסופט שמחים להציע קורס בן 12 שבועות עם 26 שיעורים בנושא **למידת מכונה**. בקורס זה תלמדו על מה שנקרא לפעמים**למידת מכונה קלאסית**, תוך שימוש בעיקר בספריית Scikit-learn והימנעות מלמידה עמוקה, שמכוסה בתכנית הלימודים שלנו [AI למתחילים](https://aka.ms/ai4beginners). שלבו שיעורים אלו עם תכנית ['מדעי נתונים למתחילים'](https://aka.ms/ds4beginners) שלנו, גם כן!
טיילו איתנו ברחבי העולם כאשר אנו מיישמים את הטכניקות הקלאסיות על נתונים מאזורים שונים בעולם. כל שיעור כולל שאלוני מבחן לפני ואחרי, הוראות כתובות לסיום השיעור, פתרון, מטלה ועוד. שיטת הלמידה מבוססת הפרויקטים מאפשרת לכם ללמוד תוך כדי בנייה, דרך מוכחת לשימור יכולות חדשות.
טיילו איתנו ברחבי העולם בעוד אנו מיישמים את הטכניקות הקלאסיות הללו על נתונים מאזורים רבים בעולם. כל שיעור כולל מבחני ידע לפני ואחרי השיעור, הוראות כתובות להשלמת השיעור, פתרון, משימה ועוד. הפדגוגיה המבוססת פרויקטים מאפשרת לכם ללמוד תוך כדי בנייה, דרך מוכחת להטמעת מיומנויות חדשות.
**🙏 תודות מיוחדות 🙏 למחברי שגרירי הסטודנטים של מיקרוסופט, לסוקרים ולתורמי התוכן**, במיוחד רישיט דגלי, מוחמד סאקיב חאן אינאן, רוהאן רג', אלכסנדרו פטרסקו, אבישק ג'ייסוול, נאורין טבאסום, יואן סאמויולה, וסניגדה אגרוואל.
**🙏 תודה מיוחדת 🙏 למחברי, מבקרים ותורמי תוכן של שגרירי הסטודנטים של מיקרוסופט**, במיוחד רישיט דגלי, מוחמד סקיב חאן אינאן, רוחאן ראג', אלכסנדרו פטרסקו, אבישק ג’איסוואל, נאורין טאבסום, יואן סמואילה, וסניגדה אגרוול
**🤩 תודות נוספות לשגרירי הסטודנטים של מיקרוסופט אריק ואנג'או, ג'סלין סונדהי ווידושי גופטה על שיעורי R שלנו!**
**🤩 תודה מיוחדת לשגרירי הסטודנטים של מיקרוסופט אריק וואנג’או, ג’אסלין סונדי ווידושי גופטה על שיעורי R שלנו!**
# התחלה
# התחלנו
עקבו אחר השלבים הבאים:
1. **צור עותק של המאגר**: לחצו על כפתור "Fork" בצד ימין למעלה של הדף.
2. **שכפל את המאגר**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
עקבו אחר הצעדים הבאים:
1. **עשו Fork למאגר**: לחצו על כפתור "Fork" בפינה הימנית-עליונה של דף זה.
2. **שכפלו את המאגר**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [מצאו את כל המשאבים הנוספים לקורס זה באוסף Microsoft Learn שלנו](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **זקוקים לעזרה?** בדקו את [מדריך פתרון התקלות](TROUBLESHOOTING.md) לפתרונות לבעיות נפוצות בהתקנה, הגדרה והרצת שיעורים.
> 🔧 **צריכים עזרה?** בדקו את [מדריך פתרון בעיות](TROUBLESHOOTING.md) עבור פתרונות לבעיות נפוצות בהתקנה, הקמה והרצת שיעורים.
**[סטודנטים](https://aka.ms/student-page)**, כדי להשתמש בתוכנית זו, צרו פורק של כל המאגר לחשבון 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).
> ללימוד נוסף, מומלץ לעקוב אחרי [מודולים ונתיבי למידה של Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**מורים**, יש לנו [הצעות לשימוש בתוכנית זו](for-teachers.md).
חלק מהשיעורים זמינים כסרטונים קצרים. ניתן למצוא את כולם בקישורים בתוך השיעורים או ב[רשימת ההשמעה ML for Beginners בערוץ YouTube של מיקרוסופט דיבלופרס](https://aka.ms/ml-beginners-videos) על ידי לחיצה על התמונה למטה.
חלק מהשיעורים זמינים כסרטוני וידאו קצרים. ניתן למצוא אותם בקו בתוך השיעורים, או ברשימת ההשמעה ML for Beginners בערוץ מיקרוסופט לדבלופרים ב-YouTube בלחיצה על התמונה למטה.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
בחרנו שני עקרונות פדגוגיים בבניית תוכנית זו: להבטיח שהיא מבוססת פרויקט מעשי וכוללת מבחנים תכופים. בנוסף, לתוכנית נושא משותף המסייע בקוהרנטיות.
בחרנו שני עקרונות פדגוגיים בבניית תוכנית זו: להבטיח שהיא **מונחית פרויקטים** וכוללת **מבחני ידע תכופים**. בנוסף, לתוכנית יש **נושא משותף** אחד שמעניק לה קוהרנטיות.
על ידי התאמת התוכן לפרויקטים, התהליך הופך למרתק יותר לסטודנטים וההבנה של המושגים מחוזקת. גם מבחן נמוך סיכון לפני השיעור שם את הכוונה ללמידה, ומבחן נוסף לאחר השיעור מבטיח שימור נוסף. התוכנית גמישה ומהנה וניתן ללמוד אותה בשלמותה או חלקיה. הפרויקטים מתחילים קטנים והופכים מורכבים יותר לקראת סוף מחזור 12 השבועות. יש בתוכנית גם פרק סיום על יישומים אמיתיים של למידת מכונה, שיכול לשמש לקרדיט נוסף או כבסיס לדיון.
על ידי הבטחת התאמה של התוכן לפרויקטים, התהליך נעשה מעניין יותר לסטודנטים והחזקת המושגים משתפרת. בנוסף, מבחן קל לפני השיעור קובע את כוונת הסטודנט ללמוד נושא, בעוד מבחן שני אחרי השיעור מוודא המשך החזקה. תוכנית זו עוצבה להיות גמישה ומהנה וניתן לקחתה בשלמותה או בחלקיה. הפרויקטים מתחילים קטנים והופכים למורכבים יותר לקראת סוף מחזור ה-12 שבועות. התכנית כוללת גם נספח על יישומים בעולם האמיתי של למידת מכונה, שניתן להשתמש בו כאשראי נוסף או כבסיס לדיון.
> מצאו את [קוד ההתנהגות שלנו](CODE_OF_CONDUCT.md), [הנחיות לתרומה](CONTRIBUTING.md), [תרגומים](TRANSLATIONS.md) ו[פתרון תקלות](TROUBLESHOOTING.md). נשמח לקבל משוב בונה!
> מצאו את [קוד ההתנהגות שלנו](CODE_OF_CONDUCT.md), [הדרכת תרומה](CONTRIBUTING.md), [הדרכת תרגום](TRANSLATIONS.md) ו[פתרון בעיות](TROUBLESHOOTING.md). נשמח למשוב בונה שלכם!
## כל שיעור כולל
- סקיצת הערות אופציונלית
- וידאו נוסף אופציונלי
- הדרכת וידאו (בחלק מהשיעורים בלבד)
- [מבחן חימום לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
- סקיצת עזר אופציונלית
- וידאו משלים אופציונלי
- סרטון הדרכה (בחלק מהשיעורים בלבד)
- [מבחן חימום לפני השיעור](https://ff-quizzes.netlify.app/en/ml/)
- שיעור כתוב
- בשיעורים מבוססי פרויקט, מדריכים שלב-אחר-שלב לבניית הפרויקט
- לשיעורים מבוססי פרויקטים, מדריכים שלב-אחר-שלב לבניית הפרויקט
- בדיקות ידע
- אתגר
- קריאה משלימה
- מטלה
- [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
> **הערה לגבי שפות**: השיעורים כתובים בעיקר בפייתון אך רבים זמינים גם ב-R. כדי להשלים שיעור ב-R, עברו לתיקיית `/solution` וחפשו שיעורי R. הם כוללים סיומת .rmd שמייצגת קובץ **R Markdown** הנחשב למסגרת יוצרת לשילוב קטעי קוד (של R או שפות נוספות) וכותרת YAML (המנחה כיצד לעצב פלטים כגון PDF) במסמך Markdown. כך ניתן לשלב את הקוד, הפלט והמחשבות שלכם בכתיבה ב-Markdown. בנוסף, מסמכי R Markdown ניתנים להמרה לפורמטי פלט כמו PDF, HTML או Word.
> **הערה לגבי חידונים**: כל החידונים נמצאים בתיקיית [Quiz App folder](../../quiz-app), סה"כ 52 חידונים עם שלוש שאלות בכל אחד. הם מקושרים מתוך השיעורים, אך ניתן להפעיל את אפליקציית החידון באופן מקומי; יש לעקוב אחר ההוראות שבתיקיית `quiz-app` לארח או לפרוס ל-Azure באופן מקומי.
| מספר שיעור | נושא | קיבוץ שיעור | מטרות למידה | שיעור מקושר | מחבר |
| 01 | מבוא ללמידת מכונה | [Introduction](1-Introduction/README.md) | ללמוד את המושגים הבסיסיים מאחורי למידת מכונה | [Lesson](1-Introduction/1-intro-to-ML/README.md) | מוחמד |
| 02 | היסטוריה של למידת מכונה | [Introduction](1-Introduction/README.md) | ללמוד את ההיסטוריה שמאחורי תחום זה | [Lesson](1-Introduction/2-history-of-ML/README.md) | ג'ן ואיימי |
| 03 | הוגנות ולמידת מכונה | [Introduction](1-Introduction/README.md) | מהם הסוגיות הפילוסופיות החשובות סביב הוגנות שעל הסטודנטים לשקול כשבונים ומיישמים מודלי למידת מכונה? | [Lesson](1-Introduction/3-fairness/README.md) | טומומי |
| 04 | טכניקות ללמידת מכונה | [Introduction](1-Introduction/README.md) | אילו טכניקות חוקרי למידת מכונה משתמשים כדי לבנות מודלי למידה? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | כריס וג'ן |
| 05 | מבוא לרגרסיה | [Regression](2-Regression/README.md) | להתחיל עם Python ו-Scikit-learn עבור מודלי רגרסיה | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | ג'ן • אריק ואנג'או |
| 06 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | ויזואליזציה וניקוי נתונים כהכנה ללמידת מכונה | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ג'ן • אריק ואנג'או |
| 07 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודלי רגרסיה לינארית ופולינומיאלית | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ג'ן ודמיטרי • אריק ואנג'או |
| 08 | מחירי דלעות בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודל רגרסיה לוגיסטית | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ג'ן • אריק ואנג'או |
| 15 | חקירת טעימות מוזיקליות מניגריה 🎧 | [Clustering](5-Clustering/README.md) | חקר שיטת קי-מין לקיבוץ | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ג'ן • אריק ואנג'או |
| 16 | מבוא לעיבוד שפה טבעית ☕️ | [Natural language processing](6-NLP/README.md) | ללמוד את היסודות של NLP על ידי בניית בוט פשוט | [Python](6-NLP/1-Introduction-to-NLP/README.md) | סטיבן |
| 17 | משימות NLP נפוצות ☕️ | [Natural language processing](6-NLP/README.md) | להעמיק את הידע ב-NLP בהבנת המשימות הנפוצות הדרושות בעבודה עם מבני שפה | [Python](6-NLP/2-Tasks/README.md) | סטיבן |
| 18 | תרגום וניתוח סנטימנט ♥️ | [Natural language processing](6-NLP/README.md) | תרגום וניתוח סנטימנט עם ג'יין אוסטין | [Python](6-NLP/3-Translation-Sentiment/README.md) | סטיבן |
| 19 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנט עם ביקורות על בתי מלון 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | סטיבן |
| 20 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנט עם ביקורות על בתי מלון 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | סטיבן |
| 21 | מבוא לחזוי סדרות זמנים | [Time series](7-TimeSeries/README.md) | מבוא לחזוי סדרות זמנים | [Python](7-TimeSeries/1-Introduction/README.md) | פרנצ'סקה |
| 22 | ⚡️ צריכת חשמל עולמית ⚡️ - חזוי סדרות זמנים עם ARIMA | [Time series](7-TimeSeries/README.md) | חזוי סדרות זמנים עם ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | פרנצ'סקה |
| 23 | ⚡️ צריכת חשמל עולמית ⚡️ - חזוי סדרות זמנים עם SVR | [Time series](7-TimeSeries/README.md) | חזוי סדרות זמנים עם מפענח וקטור תמיכה | [Python](7-TimeSeries/3-SVR/README.md) | אנירבן |
| אפילוג | תרחישי למידת מכונה מהעולם האמיתי | [ML in the Wild](9-Real-World/README.md) | יישומים מאתגרים ומגרים של למידת מכונה קלאסית | [Lesson](9-Real-World/1-Applications/README.md) | צוות |
| אפילוג | איתור באגים במודלי למידת מכונה בשימוש בלוח RAI | [ML in the Wild](9-Real-World/README.md) | איתור באגים במודלי למידת מכונה באמצעות לוח בקרה של Responsible AI| [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | רות יקובו |
- משימה
- [מבחן לאחר השיעור](https://ff-quizzes.netlify.app/en/ml/)
> **הערה על שפות**: השיעורים האלו כתובים בעיקר בפייתון, אך רבים מהם זמינים גם ב-R. כדי להשלים שיעור ב-R, גשו לספריית `/solution` וחפשו שיעורים ב-R. הם כוללים סיומת .rmd המייצגת קובץ **R Markdown** שניתן להגדירו פשוט כהטמעה של `פרקי קוד` (של R או שפות אחרות) ו`כותרת YAML` (המנחה כיצד לעצב פלטים כגון PDF) בתוך `מסמך מרקדאון`. לכן, הוא משמש כמסגרת יצירת תוכן אידיאלית למדעי הנתונים מכיוון שהוא מאפשר לכם לשלב את הקוד שלכם, את הפלט שלו, ואת המחשבות שלכם באמצעות כתיבתם במרקדאון. בנוסף, מסמכי R Markdown ניתנים להמרה לפורמטי פלט כמו PDF, HTML או Word.
> **הערה על בחנים**: כל הבחנים נמצאים ב[תיקיית אפליקציית הבחן](../../quiz-app), הכוללת סך הכל 52 בחנים עם שלוש שאלות בכל אחד. הם מקושרים מתוך השיעורים אך ניתן להריץ את אפליקציית הבחנים באופן מקומי; עקבו אחר ההוראות בתיקיית `quiz-app` לאירוח מקומי או פריסה ב-Azure.
| מספר שיעור | נושא | קבוצת השיעור | מטרות הלמידה | שיעור מקושר | מחבר/ת |
| 01 | מבוא ללמידת מכונה | [Introduction](1-Introduction/README.md) | למדו את המושגים הבסיסיים שמאחורי למידת המכונה | [שיעור](1-Introduction/1-intro-to-ML/README.md) | מוחמד |
| 02 | ההיסטוריה של למידת מכונה | [Introduction](1-Introduction/README.md) | למדו את ההיסטוריה העומדת מאחורי התחום | [שיעור](1-Introduction/2-history-of-ML/README.md) | ג'ן ואיימי |
| 03 | צדק ולמידת מכונה | [Introduction](1-Introduction/README.md) | מהם הנושאים הפילוסופיים החשובים סביב צדק שהסטודנטים צריכים לשקול בבניית ויישום מודלים בלמידת מכונה? | [שיעור](1-Introduction/3-fairness/README.md) | טומומי |
| 04 | טכניקות ללמידת מכונה | [Introduction](1-Introduction/README.md) | אילו טכניקות חוקרי למידת מכונה משתמשים כדי לבנות מודלים? | [שיעור](1-Introduction/4-techniques-of-ML/README.md) | כריס וג'ן |
| 06 | מחירי דלועים בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | הציגו ונקו נתונים כהכנה ללמידת מכונה | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | ג'ן • אריק ואנדג’או |
| 07 | מחירי דלועים בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודלים של רגרסיה ליניארית ופולינומית | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | ג'ן ודמיטרי • אריק ואנדג’או |
| 08 | מחירי דלועים בצפון אמריקה 🎃 | [Regression](2-Regression/README.md) | בניית מודל רגרסיה לוגיסטית | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | ג'ן • אריק ואנדג’או |
| 15 | חקר הטעמים המוזיקליים של ניגריה 🎧 | [Clustering](5-Clustering/README.md) | חקר שיטת קיבוץ ה-K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | ג'ן • אריק ואנדג’או |
| 16 | מבוא לעיבוד שפה טבעית ☕️| [Natural language processing](6-NLP/README.md) | למדו את היסודות של עיבוד שפה טבעית על ידי בניית בוט פשוט | [Python](6-NLP/1-Introduction-to-NLP/README.md) | סטפן |
| 17 | משימות נפוצות בעיבוד שפה טבעית ☕️ | [Natural language processing](6-NLP/README.md) | העמיקו את הידע בעיבוד שפה טבעית על ידי הבנת משימות נפוצות הנדרשות בטיפול במבני שפה | [Python](6-NLP/2-Tasks/README.md) | סטפן |
| 18 | תרגום וניתוח סנטימנטים ♥️ | [Natural language processing](6-NLP/README.md) | תרגום וניתוח סנטימנטים עם ג’יין אוסטן | [Python](6-NLP/3-Translation-Sentiment/README.md) | סטפן |
| 19 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנטים עם ביקורות על מלונות 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | סטפן |
| 20 | בתי מלון רומנטיים באירופה ♥️ | [Natural language processing](6-NLP/README.md) | ניתוח סנטימנטים עם ביקורות על מלונות 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | סטפן |
| 21 | מבוא לתחזית סדרות זמן | [Time series](7-TimeSeries/README.md) | מבוא לתחזית סדרות זמן | [Python](7-TimeSeries/1-Introduction/README.md) | פרנצ’סקה |
| 22 | ⚡️ שימוש עולמי בכוח ⚡️ - תחזית סדרות זמן עם ARIMA | [Time series](7-TimeSeries/README.md) | תחזית סדרות זמן עם ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | פרנצ’סקה |
| 23 | ⚡️ שימוש עולמי בכוח ⚡️ - תחזית סדרות זמן עם SVR | [Time series](7-TimeSeries/README.md) | תחזית סדרות זמן עם רגרסור וקטור תמיכה | [Python](7-TimeSeries/3-SVR/README.md) | אנירבן |
| פרפראזה | תרחישים ויישומים בעולם האמיתי של ML | [ML in the Wild](9-Real-World/README.md) | יישומים מעניינים וחושפניים בעולם האמיתי של למידת מכונה קלאסית | [שיעור](9-Real-World/1-Applications/README.md) | צוות |
| פרפראזה | איתור באגים במודלים של ML באמצעות לוח בקרה RAI | [ML in the Wild](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/#/). עשו fork של המאגר הזה, [התקינו את Docsify](https://docsify.js.org/#/quickstart) במחשב המקומי שלכם, ואז בתיקיית השורש של מאגר זה, הקלידו `docsify serve`. האתר יוגש על פורט 3000 ב-localhost שלכם: `localhost:3000`.
ניתן להריץ תיעוד זה оффליין באמצעות [Docsify](https://docsify.js.org/#/). סעו על fork לרפו זה, [התקינו Docsify](https://docsify.js.org/#/quickstart) במחשב המקומי שלכם, ואז בתיקיית השורש של הרפו, הקלידו `docsify serve`. האתר יוגש על פורט 3000 במחשביכם המקומי: `localhost:3000`.
## קבצי PDF
## PDF-ים
מצאו קובץ pdf של תוכנית הלימודים עם קישורים [כאן](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
מצאו PDF של התכנית עם קישורים [כאן](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
אם אתה נתקל בקושי או יש לך שאלות לגבי בניית אפליקציות בינה מלאכותית. הצטרף ללומדים אחרים ולמפתחים מנוסים בדיונים על MCP. זוהי קהילה תומכת שבה שאלות מתקבלות בברכה והידע משותף בחופשיות.
אם נתקעת או יש לך שאלות לגבי בניית אפליקציות AI. הצטרף ללומדים אחרים ומפתחים מנוסים בדיונים על MCP. זו קהילה תומכת שבה שאלות מתקבלות בברכה והידע נחלק בחופשיות.
אם יש לך משוב על המוצר או שגיאות בזמן הבנייה בקר ב:
אם יש לך משוב על המוצר או שגיאות בזמן הבנייה בקר באתר:
[](https://aka.ms/foundry/forum)
- חקור מערכי נתונים מהעולם האמיתי תוך שימוש במושגים שנלמדו.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**הצהרת אחריות**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו משתדלים לדייק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל טעויות או אי־דיוקים. המסמך המקורי בשפת המקור שלו הוא המקור הרשמי והמהימן. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי אדם. אנו לא נושאים באחריות לכל טעות או אי־הבנה הנובעים משימוש בתרגום זה.
**כתב ויתור**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). אנו שואפים לדיוק, אך יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית מהווה את המקור הרשמי והמהימן. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.
In deze les heb je geleerd over de Responsible AI Toolbox, een "open-source, community-gedreven project om datawetenschappers te helpen AI-systemen te analyseren en verbeteren." Voor deze opdracht, verken een van de [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) van de RAI Toolbox en rapporteer je bevindingen in een paper of presentatie.
In deze les heb je geleerd over de Responsible AI Toolbox, een "open-source, community-gedreven project om datawetenschappers te helpen AI-systemen te analyseren en te verbeteren." Voor deze opdracht verken je een van RAI Toolbox's [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) en rapporteer je je bevindingen in een paper of presentatie.
| | Een paper of PowerPoint-presentatie wordt gepresenteerd waarin de systemen van Fairlearn, het uitgevoerde notebook en de conclusies die daaruit zijn getrokken worden besproken | Een paper wordt gepresenteerd zonder conclusies | Er wordt geen paper gepresenteerd |
| | Een paper of powerpointpresentatie wordt gepresenteerd die Fairlearn’s systemen bespreekt, de notebook die is uitgevoerd, en de conclusies die uit het uitvoeren zijn getrokken | Een paper wordt gepresenteerd zonder conclusies | Er wordt geen paper gepresenteerd |
---
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
# Bouw een regressiemodel met Scikit-learn: regressie op vier manieren

## Beginnersnotitie
Lineaire regressie wordt gebruikt wanneer we een **numerieke waarde** willen voorspellen (bijvoorbeeld de prijs van een huis, temperatuur of verkoopcijfers).
Het werkt door een rechte lijn te vinden die het beste de relatie tussen invoerkenmerken en de uitvoer weergeeft.
In deze les richten we ons op het begrijpen van het concept voordat we meer geavanceerde regressietechnieken verkennen.

> Infographic door [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/en/ml/)
> ### [Deze les is beschikbaar in R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introductie
> ### [Deze les is ook beschikbaar in R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Inleiding
Tot nu toe heb je onderzocht wat regressie is met voorbeeldgegevens uit de dataset over pompoenprijzen die we gedurende deze les zullen gebruiken. Je hebt het ook gevisualiseerd met behulp van Matplotlib.
Tot nu toe heb je verkend wat regressie is met voorbeeldgegevens verzameld uit de dataset van pompoenprijzen die we in deze les zullen gebruiken. Je hebt dit ook gevisualiseerd met Matplotlib.
Nu ben je klaar om dieper in te gaan op regressie voor machine learning. Hoewel visualisatie je helpt om gegevens te begrijpen, komt de echte kracht van machine learning voort uit _het trainen van modellen_. Modellen worden getraind op historische gegevens om automatisch afhankelijkheden in gegevens vast te leggen, en ze stellen je in staat om uitkomsten te voorspellen voor nieuwe gegevens die het model nog niet eerder heeft gezien.
Nu ben je klaar om dieper in regressie voor ML te duiken. Visualisatie helpt je om data te begrijpen, maar de echte kracht van Machine Learning komt van het _trainen van modellen_. Modellen worden getraind op historische data om automatisch afhankelijkheden in de data vast te leggen en stellen je in staat uitkomsten te voorspellen voor nieuwe data die het model nog niet eerder heeft gezien.
In deze les leer je meer over twee soorten regressie: _basis lineaire regressie_ en _polynomiale regressie_, samen met enkele wiskundige principes die aan deze technieken ten grondslag liggen. Met deze modellen kunnen we pompoenprijzen voorspellen op basis van verschillende invoergegevens.
In deze les leer je meer over twee soorten regressie: _basis lineaire regressie_ en _polynomiale regressie_, samen met wat van de wiskunde achter deze technieken. Deze modellen stellen ons in staat om pompoenprijzen te voorspellen op basis van verschillende invoerdata.
[](https://youtu.be/CRxFT8oTDMg "ML voor beginners - Begrip van lineaire regressie")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van lineaire regressie.
> Door deze hele cursus gaan we uit van minimale wiskundige kennis en proberen we het toegankelijk te maken voor studenten uit andere vakgebieden. Let daarom op notities, 🧮 oproepen, diagrammen en andere leermiddelen om het begrip te vergemakkelijken.
> Gedurende dit curriculum gaan we uit van minimale wiskundige voorkennis, en streven we ernaar het toegankelijk te maken voor studenten uit andere disciplines. Let daarom op notities, 🧮 uitlegpaaltjes, diagrammen en andere leermiddelen om het begrip te ondersteunen.
### Vereisten
Je zou inmiddels bekend moeten zijn met de structuur van de pompoengegevens die we onderzoeken. Je kunt deze gegevens vooraf geladen en schoongemaakt vinden in het _notebook.ipynb_-bestand van deze les. In het bestand wordt de pompoenprijs per bushel weergegeven in een nieuwe data frame. Zorg ervoor dat je deze notebooks kunt uitvoeren in kernels in Visual Studio Code.
Je zou nu bekend moeten zijn met de structuur van de pompoen data die we onderzoeken. Je kunt deze vooraf geladen en voorbewerkt vinden in het bestand _notebook.ipynb_ van deze les. In het bestand wordt de pompoenprijs per bushel weergegeven in een nieuw DataFrame. Zorg ervoor dat je deze notebooks kunt draaien in kernels in Visual Studio Code.
### Voorbereiding
Ter herinnering: je laadt deze gegevens in om er vragen over te stellen.
Even ter herinnering, je laadt deze data om er vragen over te kunnen stellen.
- Wanneer is de beste tijd om pompoenen te kopen?
- Welke prijs kan ik verwachten voor een doos miniatuurpompoenen?
- Moet ik ze kopen in halve bushelmanden of in een 1 1/9 busheldoos?
Laten we verder graven in deze gegevens.
- Wanneer is het beste moment om pompoenen te kopen?
- Welke prijs kan ik verwachten van een doos mini-pompoenen?
- Moet ik ze kopen in halve bushel manden of per 1 1/9 bushel doos?
Laten we deze data verder onderzoeken.
In de vorige les heb je een Pandas data frame gemaakt en gevuld met een deel van de oorspronkelijke dataset, waarbij je de prijzen standaardiseerde per bushel. Door dat te doen, kon je echter slechts ongeveer 400 datapunten verzamelen en alleen voor de herfstmaanden.
In de vorige les maakte je een Pandas DataFrame en vulde je die met een deel van de originele dataset, waarbij je de prijzen standaardiseerde per bushel. Daarmee kon je echter slechts ongeveer 400 datapunten ophalen en alleen voor de herfstmaanden.
Bekijk de gegevens die we vooraf hebben geladen in het notebook dat bij deze les hoort. De gegevens zijn vooraf geladen en een eerste spreidingsdiagram is gemaakt om maandgegevens te tonen. Misschien kunnen we iets meer detail krijgen over de aard van de gegevens door ze verder te schonen.
Bekijk de data die we vooraf geladen hebben in het bijbehorende notebook van deze les. De gegevens zijn vooraf geladen en er is een eerste scatterplot gemaakt om maanddata te tonen. Misschien kunnen we meer details over de aard van de data krijgen door deze verder te schonen.
## Een lineaire regressielijn
Zoals je hebt geleerd in Les 1, is het doel van een lineaire regressieoefening om een lijn te kunnen plotten om:
Zoals je in les 1 hebt geleerd, is het doel van een lineaire regressie oefening het kunnen plotten van een lijn om:
- **Relaties tussen variabelen te tonen**. Toon de relatie tussen variabelen
- **Voorspellingen te maken**. Maak accurate voorspellingen waar een nieuw datapunt zou vallen ten opzichte van die lijn.
Typisch voor de **Least-Squares Regression** is om dit soort lijn te tekenen. De term "Least-Squares" verwijst naar het proces van het minimaliseren van de totale fout in ons model. Voor elk datapunt meten we de verticale afstand (residueel genoemd) tussen het daadwerkelijke punt en onze regressielijn.
We kwadrateren deze afstanden om twee belangrijke redenen:
1. **Grootte boven richting:** We willen een fout van -5 hetzelfde behandelen als een fout van +5. Kwadrateren zorgt ervoor dat alle waarden positief worden.
- **Variabele relaties te tonen**. De relatie tussen variabelen te tonen
- **Voorspellingen te maken**. Nauwkeurige voorspellingen te maken over waar een nieuw datapunt zou vallen in relatie tot die lijn.
Het is typisch voor **Least-Squares Regression** om dit type lijn te tekenen. De term 'least-squares' betekent dat alle datapunten rondom de regressielijn worden gekwadrateerd en vervolgens opgeteld. Idealiter is die uiteindelijke som zo klein mogelijk, omdat we een laag aantal fouten willen, of `least-squares`.
2. **Straffen van uitschieters:** Kwadrateren geeft meer gewicht aan grotere fouten, waardoor de lijn dichter bij veraf liggende punten blijft.
We doen dit omdat we een lijn willen modelleren die de minste cumulatieve afstand heeft tot al onze datapunten. We kwadrateren de termen voordat we ze optellen, omdat we ons bezighouden met de grootte ervan en niet met de richting.
We tellen vervolgens al deze gekwadrateerde waarden op. Ons doel is om die specifieke lijn te vinden waarbij deze som het kleinst is (de kleinste mogelijke waarde)—vandaar de naam "Least-Squares".
> **🧮 Laat me de wiskunde zien**
>
> Deze lijn, de _lijn van beste fit_, kan worden uitgedrukt door [een vergelijking](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> **🧮 Laat me de wiskunde zien**
>
> Deze lijn, genaamd de _line of best fit_, kan worden uitgedrukt door [een vergelijking](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` is de 'verklarende variabele'. `Y` is de 'afhankelijke variabele'. De helling van de lijn is `b` en `a` is het snijpunt met de y-as, wat verwijst naar de waarde van `Y` wanneer `X = 0`.
>
>
>
> Bereken eerst de helling `b`. Infographic door [Jen Looper](https://twitter.com/jenlooper)
>
> Met andere woorden, en verwijzend naar de oorspronkelijke vraag over pompoengegevens: "voorspel de prijs van een pompoen per bushel per maand", zou `X` verwijzen naar de prijs en `Y` naar de verkoopmaand.
>
>
>
> Bereken de waarde van Y. Als je ongeveer $4 betaalt, moet het april zijn! Infographic door [Jen Looper](https://twitter.com/jenlooper)
>
> De wiskunde die de lijn berekent, moet de helling van de lijn aantonen, die ook afhankelijk is van het snijpunt, of waar `Y` zich bevindt wanneer `X = 0`.
>
> Je kunt de methode van berekening voor deze waarden bekijken op de [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) website. Bezoek ook [deze Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) om te zien hoe de waarden van de getallen de lijn beïnvloeden.
>
> `X` is de 'verklarende variabele'. `Y` is de 'afhankelijke variabele'. De helling van de lijn is `b` en `a` is het snijpunt met de y-as, wat verwijst naar de waarde van `Y` wanneer `X = 0`.
>
>
>
> Bereken eerst de helling `b`. Infographic door [Jen Looper](https://twitter.com/jenlooper)
>
> Met andere woorden, en verwijzend naar onze oorspronkelijke pompoendata-vraag: "voorspel de prijs van een pompoen per bushel per maand", zou `X` verwijzen naar de prijs en `Y` naar de verkoopmaand.
>
>
>
> Bereken de waarde van Y. Als je rond de $4 betaalt, moet het april zijn! Infographic door [Jen Looper](https://twitter.com/jenlooper)
>
> De wiskunde die de lijn berekent moet de helling van de lijn tonen, die ook afhankelijk is van het intercept, oftewel waar `Y` ligt als `X = 0`.
>
> Je kunt de methode voor het berekenen van deze waarden zien op de website [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Bezoek ook [deze Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) om te zien hoe de waardes van getallen de lijn beïnvloeden.
## Correlatie
Een andere term om te begrijpen is de **correlatiecoëfficiënt** tussen gegeven X- en Y-variabelen. Met een spreidingsdiagram kun je deze coëfficiënt snel visualiseren. Een diagram met datapunten die netjes in een lijn liggen, heeft een hoge correlatie, maar een diagram met datapunten die overal tussen X en Y verspreid zijn, heeft een lage correlatie.
Nog een term om te begrijpen is de **Correlatiecoëfficiënt** tussen gegeven X- en Y-variabelen. Met een scatterplot kun je deze coëfficiënt snel visualiseren. Een plot met datapunten netjes op een lijn wijzen op hoge correlatie, terwijl een plot waar punten overal verspreid liggen tussen X en Y op lage correlatie wijst.
Een goed lineair regressiemodel is er een met een hoge (dichter bij 1 dan bij 0) correlatiecoëfficiënt, gebruikmakend van de Least-Squares Regression-methode met een regressielijn.
Een goed lineair regressiemodel is er een met een hoge Correlatiecoëfficiënt (dichter bij 1 dan bij 0) met behulp van de Least-Squares Regression methode met een regressielijn.
✅ Voer het notebook uit dat bij deze les hoort en bekijk het spreidingsdiagram van Maand naar Prijs. Lijkt de data die Maand aan Prijs koppelt voor pompoenverkopen een hoge of lage correlatie te hebben, volgens jouw visuele interpretatie van het spreidingsdiagram? Verandert dat als je een meer verfijnde maatstaf gebruikt in plaats van `Maand`, bijvoorbeeld *dag van het jaar* (d.w.z. aantal dagen sinds het begin van het jaar)?
✅ Draai het notebook bij deze les en bekijk de scatterplot van Maand tegen Prijs. Lijkt de data die Maand aan Prijs koppelt voor pompoenverkopen een hoge of lage correlatie te hebben, volgens jouw visuele interpretatie van de scatterplot? Verandert dat als je een fijnmaziger maat gebruikt in plaats van `Maand`, bijvoorbeeld *dag van het jaar* (d.w.z. aantal dagen sinds begin van het jaar)?
In de onderstaande code gaan we ervan uit dat we de gegevens hebben opgeschoond en een data frame hebben verkregen genaamd `new_pumpkins`, vergelijkbaar met het volgende:
In onderstaande code gaan we ervan uit dat we de data hebben opgeschoond, en een DataFrame `new_pumpkins` hebben verkregen, vergelijkbaar met het volgende:
ID | Maand | DagVanJaar | Soort | Stad | Verpakking | Lage Prijs | Hoge Prijs | Prijs
> De code om de gegevens te schonen is beschikbaar in [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). We hebben dezelfde schoonmaakstappen uitgevoerd als in de vorige les en hebben de kolom `DagVanJaar` berekend met behulp van de volgende expressie:
> De code om de data te schonen is beschikbaar in [`notebook.ipynb`](notebook.ipynb). We hebben dezelfde schoonmaakstappen uitgevoerd als in de vorige les, en hebben de kolom `DagVanHetJaar` berekend met de volgende expressie:
Nu je een begrip hebt van de wiskunde achter lineaire regressie, laten we een regressiemodel maken om te zien of we kunnen voorspellen welk pakket pompoenen de beste pompoenprijzen zal hebben. Iemand die pompoenen koopt voor een feestelijke pompoenveld wil deze informatie misschien om zijn aankopen van pompoenpakketten voor het veld te optimaliseren.
Nu je inzicht hebt in de wiskunde achter lineaire regressie, laten we een regressiemodel maken om te zien of we kunnen voorspellen welke verpakking van pompoenen de beste pompoenprijzen zal hebben. Iemand die pompoenen koopt voor een pompoenveld voor de feestdagen wil deze informatie mogelijk gebruiken om hun aankopen van pompoenverpakkingen voor het veld te optimaliseren.
## Op zoek naar correlatie
[](https://youtu.be/uoRq-lW2eQo "ML voor beginners - Op zoek naar correlatie: De sleutel tot lineaire regressie")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van correlatie.
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht over correlatie.
Uit de vorige les heb je waarschijnlijk gezien dat de gemiddelde prijs voor verschillende maanden er als volgt uitziet:
In de vorige les heb je waarschijnlijk gezien dat de gemiddelde prijs voor verschillende maanden er zo uitziet:
<imgalt="Gemiddelde prijs per maand"src="../../../../translated_images/nl/barchart.a833ea9194346d76.webp"width="50%"/>
Dit suggereert dat er enige correlatie zou moeten zijn, en we kunnen proberen een lineair regressiemodel te trainen om de relatie tussen `Maand` en `Prijs`, of tussen `DagVanJaar` en `Prijs` te voorspellen. Hier is het spreidingsdiagram dat de laatste relatie toont:
Dit suggereert dat er enige correlatie zou moeten zijn, en we kunnen proberen een lineair regressiemodel te trainen om de relatie tussen `Maand` en `Prijs` te voorspellen, of tussen `DagVanHetJaar` en `Prijs`. Hier is de scatterplot die de laatste relatie toont:
<imgalt="Spreidingsdiagram van Prijs vs. Dag van het Jaar" src="../../../../translated_images/nl/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatterplot van Prijs versus Dag van het Jaar" src="../../../../translated_images/nl/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Laten we kijken of er een correlatie is met behulp van de `corr`-functie:
Laten we kijken of er een correlatie is met de `corr`functie:
Het lijkt erop dat de correlatie vrij klein is, -0.15 bij `Maand` en -0.17 bij `DagVanJaar`, maar er kan een andere belangrijke relatie zijn. Het lijkt erop dat er verschillende clusters van prijzen zijn die overeenkomen met verschillende pompoensoorten. Om deze hypothese te bevestigen, laten we elke pompoencategorie plotten met een andere kleur. Door een `ax`-parameter door te geven aan de `scatter`-plotfunctie kunnen we alle punten op hetzelfde diagram plotten:
Het lijkt erop dat de correlatie vrij klein is, -0.15 op basis van `Maand` en -0.17 op basis van `DagVanHetJaar`, maar er zou een andere belangrijke relatie kunnen zijn. Het lijkt erop dat er verschillende clusters van prijzen zijn die overeenkomen met verschillende pompoenvariëteiten. Om deze hypothese te bevestigen, laten we elke pompoencategorie met een andere kleur plotten. Door een `ax` parameter door te geven aan de `scatter` plotfunctie kunnen we alle punten op dezelfde grafiek weergeven:
```python
ax=None
@ -127,75 +139,76 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Scatterplot van Prijs versus Dag van het Jaar"src="../../../../translated_images/nl/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Spreidingsdiagram van Prijs vs. Dag van het Jaar"src="../../../../translated_images/nl/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Ons onderzoek suggereert dat de soort meer invloed heeft op de totale prijs dan de daadwerkelijke verkoopdatum. We kunnen dit zien met een staafdiagram:
Ons onderzoek suggereert dat variëteit meer effect heeft op de totale prijs dan de daadwerkelijke verkoopdatum. Dit kunnen we zien met een staafgrafiek:
<imgalt="Spreidingsdiagram van Prijs vs. Dag van het Jaar"src="../../../../translated_images/nl/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatterplot van Prijs versus Dag van het Jaar"src="../../../../translated_images/nl/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Als we nu de correlatie tussen `Prijs` en `DagVanJaar` berekenen met behulp van de `corr`-functie, krijgen we iets als `-0.27` - wat betekent dat het trainen van een voorspellend model zinvol is.
Als we nu de correlatie berekenen tussen `Prijs` en `DagVanHetJaar` met de `corr`functie, krijgen we iets als `-0.27` - wat betekent dat het trainen van een voorspellend model zinvol is.
> Voordat je een lineair regressiemodel traint, is het belangrijk om ervoor te zorgen dat onze gegevens schoon zijn. Lineaire regressie werkt niet goed met ontbrekende waarden, dus het is logisch om alle lege cellen te verwijderen:
> Voordat je een lineair regressiemodel traint, is het belangrijk om ervoor te zorgen dat onze data schoon is. Lineaire regressie werkt niet goed met ontbrekende waarden, dus het is logisch om alle lege cellen kwijt te raken:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Een andere aanpak zou zijn om die lege waarden in te vullen met gemiddelde waarden uit de corresponderende kolom.
Een andere aanpak is om die lege waarden op te vullen met gemiddelde waardes uit de corresponderende kolom.
## Eenvoudige lineaire regressie
[](https://youtu.be/e4c_UP2fSjg "ML voor beginners - Lineaire en polynomiale regressie met Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van lineaire en polynomiale regressie.
Om ons lineaire regressiemodel te trainen, gebruiken we de **Scikit-learn** bibliotheek.
Om ons Lineaire Regressiemodel te trainen, gebruiken we de **Scikit-learn** bibliotheek.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
We beginnen met het scheiden van invoerwaarden (features) en de verwachte output (label) in afzonderlijke numpy-arrays:
We beginnen met het scheiden van invoerwaarden (kenmerken) en de verwachte uitvoer (label) in aparte numpy arrays:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Let op dat we `reshape` op de invoerdata moesten uitvoeren zodat het Linear Regression-pakket het correct begrijpt. Lineaire Regressie verwacht een 2D-array als invoer, waarbij elke rij van de array overeenkomt met een vector van invoerkenmerken. In ons geval, omdat we maar één invoer hebben, hebben we een array nodig met vorm N×1, waarbij N de datasetgrootte is.
> Merk op dat we `reshape` moesten uitvoeren op de invoergegevens zodat het lineaire regressiepakket ze correct begrijpt. Lineaire regressie verwacht een 2D-array als invoer, waarbij elke rij van de array overeenkomt met een vector van invoerfeatures. In ons geval, aangezien we slechts één invoer hebben, hebben we een array nodig met vorm N×1, waarbij N de datasetgrootte is.
Vervolgens moeten we de gegevens splitsen in trainings- en testdatasets, zodat we ons model na training kunnen valideren:
Vervolgens moeten we de data splitsen in train- en testdatasets, zodat we ons model na het trainen kunnen valideren:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Het trainen van het daadwerkelijke lineaire regressiemodel kost uiteindelijk slechts twee regels code. We definiëren het `LinearRegression`-object en passen het aan onze gegevens aan met de `fit`-methode:
Tot slot neemt het trainen van het daadwerkelijke Lineaire Regressiemodel slechts twee regels code in beslag. We definiëren het `LinearRegression` object, en passen het toe op onze data met de `fit`methode:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Het `LinearRegression`-object bevat na het toepassen van `fit` alle coëfficiënten van de regressie, die toegankelijk zijn via de `.coef_`-eigenschap. In ons geval is er slechts één coëfficiënt, die ongeveer `-0.017` zou moeten zijn. Dit betekent dat de prijzen met de tijd lijken te dalen, maar niet veel, ongeveer 2 cent per dag. We kunnen ook het snijpunt van de regressie met de Y-as benaderen met `lin_reg.intercept_` - dit zal ongeveer `21` zijn in ons geval, wat de prijs aan het begin van het jaar aangeeft.
Het `LinearRegression`-object na het `fit`-ten bevat alle coëfficiënten van de regressie, die toegankelijk zijn via de `.coef_`-eigenschap. In ons geval is er maar één coëfficiënt, die ongeveer `-0.017` zou moeten zijn. Dit betekent dat de prijzen iets lijken te dalen in de loop van de tijd, maar niet te veel, ongeveer 2 cent per dag. We kunnen ook het snijpunt van de regressie met de Y-as benaderen met `lin_reg.intercept_` - dit zal in ons geval rond `21` liggen, wat de prijs aan het begin van het jaar aangeeft.
Om te zien hoe nauwkeurig ons model is, kunnen we prijzen voorspellen op een testdataset en vervolgens meten hoe dicht onze voorspellingen bij de verwachte waarden liggen. Dit kan worden gedaan met behulp van de mean square error (MSE)-metriek, die het gemiddelde is van alle gekwadrateerde verschillen tussen de verwachte en voorspelde waarde.
Om te zien hoe nauwkeurig ons model is, kunnen we prijzen voorspellen op een testdataset en vervolgens meten hoe dicht onze voorspellingen bij de verwachte waarden liggen. Dit kan worden gedaan met behulp van de mean square error (MSE) metriek, wat het gemiddelde is van alle gekwadrateerde verschillen tussen verwachte en voorspelde waarde.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +216,37 @@ pred = lin_reg.predict(X_test)
Onze fout lijkt te liggen rond 2 punten, wat ongeveer 17% is. Niet al te goed. Een andere indicator van modelkwaliteit is de **coëfficiënt van determinatie**, die als volgt kan worden verkregen:
Onze fout lijkt ongeveer 2 punten te zijn, wat ~17% is. Niet zo goed. Een andere indicator van modelkwaliteit is de **coëfficiënt van determinatie**, die op deze manier verkregen kan worden:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Als de waarde 0 is, betekent dit dat het model geen rekening houdt met invoergegevens en fungeert als de *slechtste lineaire voorspeller*, wat simpelweg een gemiddelde waarde van het resultaat is. De waarde 1 betekent dat we alle verwachte uitkomsten perfect kunnen voorspellen. In ons geval is de coëfficiënt ongeveer 0,06, wat vrij laag is.
```
Als de waarde 0 is, betekent dit dat het model de invoergegevens niet meeneemt en fungeert als de *slechtste lineaire voorspeller*, wat gewoon de gemiddelde waarde van het resultaat is. De waarde 1 betekent dat we perfect alle verwachte uitkomsten kunnen voorspellen. In ons geval is de coëfficiënt ongeveer 0.06, wat vrij laag is.
We kunnen ook de testgegevens samen met de regressielijn plotten om beter te zien hoe regressie in ons geval werkt:
We kunnen ook de testgegevens plotten samen met de regressielijn om beter te zien hoe regressie in ons geval werkt:
Een ander type lineaire regressie is polynomiale regressie. Hoewel er soms een lineaire relatie is tussen variabelen - hoe groter de pompoen in volume, hoe hoger de prijs - kunnen deze relaties soms niet worden weergegeven als een vlak of rechte lijn.
Een ander type lineaire regressie is polynomiale regressie. Soms is er een lineair verband tussen variabelen - hoe groter de pompoen qua volume, hoe hoger de prijs - maar soms kunnen deze relaties niet worden weergegeven als een vlak of rechte lijn.
✅ Hier zijn [enkele voorbeelden](https://online.stat.psu.edu/stat501/lesson/9/9.8) van gegevens die polynomiale regressie kunnen gebruiken
✅ Hier zijn [nog meer voorbeelden](https://online.stat.psu.edu/stat501/lesson/9/9.8) van gegevens die baat zouden hebben bij polynomiale regressie
Bekijk de relatie tussen Datum en Prijs nog eens. Lijkt deze scatterplot noodzakelijkerwijs te moeten worden geanalyseerd met een rechte lijn? Kunnen prijzen niet fluctueren? In dit geval kun je polynomiale regressie proberen.
Kijk nog eens goed naar het verband tussen Datum en Prijs. Lijkt deze spreidingsgrafiek per se door een rechte lijn te moeten worden geanalyseerd? Kunnen prijzen niet schommelen? In dat geval kun je polynomiale regressie proberen.
✅ Polynomen zijn wiskundige uitdrukkingen die kunnen bestaan uit één of meer variabelen en coëfficiënten
✅ Polynomiale uitdrukkingen zijn wiskundige uitdrukkingen die uit een of meer variabelen en coëfficiënten kunnen bestaan
Polynomiale regressie creëert een gebogen lijn om niet-lineaire gegevens beter te passen. In ons geval, als we een kwadratische `DayOfYear`-variabele toevoegen aan de invoergegevens, zouden we onze gegevens moeten kunnen passen met een parabool, die een minimum heeft op een bepaald punt in het jaar.
Polynomiale regressie creëert een gebogen lijn om niet-lineaire data beter te passen. In ons geval, als we een kwadratische `DayOfYear` variabele toevoegen aan de invoergegevens, zouden we onze data moeten kunnen passen met een parabolische kromme, die een minimumpunt heeft op een bepaald punt binnen het jaar.
Scikit-learn bevat een handige [pipelineAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) om verschillende stappen van gegevensverwerking samen te voegen. Een **pipeline** is een keten van **schatters**. In ons geval zullen we een pipeline maken die eerst polynomiale kenmerken toevoegt aan ons model en vervolgens de regressie traint:
Scikit-learn bevat een handige [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) om verschillende stappen van gegevensverwerking te combineren. Een **pipeline** is een keten van **schatters**. In ons geval maken we een pipeline die eerst polynomiale kenmerken toevoegt aan ons model en vervolgens de regressie traint:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +255,62 @@ from sklearn.pipeline import make_pipeline
Het gebruik van `PolynomialFeatures(2)` betekent dat we alle tweedegraads polynomen uit de invoergegevens zullen opnemen. In ons geval betekent dit gewoon `DayOfYear`<sup>2</sup>, maar gegeven twee invoervariabelen X en Y, zal dit X<sup>2</sup>, XY en Y<sup>2</sup> toevoegen. We kunnen ook polynomen van hogere graden gebruiken als we dat willen.
Met `PolynomialFeatures(2)` wordt bedoeld dat we alle tweedegraads polynomen van de invoergegevens opnemen. In ons geval betekent dat alleen `DayOfYear`<sup>2</sup>, maar gegeven twee invoervariabelen X en Y, worden ook X<sup>2</sup>, XY en Y<sup>2</sup> toegevoegd. We kunnen ook hogere graads polynomen gebruiken als we dat willen.
Pipelines kunnen op dezelfde manier worden gebruikt als het oorspronkelijke `LinearRegression`-object, d.w.z. we kunnen de pipeline `fitten` en vervolgens `predict` gebruiken om de voorspelde resultaten te krijgen. Hier is de grafiek die testgegevens en de benaderingscurve toont:
Pipelines kunnen op dezelfde manier worden gebruikt als het oorspronkelijke `LinearRegression`-object, d.w.z. we kunnen de pipeline `fit`ten en vervolgens `predict` gebruiken om de voorspellingen te krijgen. Hier is de grafiek met testgegevens en de benaderingscurve:
Met polynomiale regressie kunnen we een iets lagere MSE en hogere determinatie krijgen, maar niet significant. We moeten rekening houden met andere kenmerken!
Met polynomiale regressie kunnen we iets lagere MSE en hogere determinatie krijgen, maar niet significant. We moeten andere kenmerken inrekening brengen!
> Je kunt zien dat de minimale pompoenprijzen ergens rond Halloween worden waargenomen. Hoe kun je dit verklaren?
> Je kunt zien dat de minimale pompoenprijzen ergens rond Halloween worden waargenomen. Hoe kun je dat verklaren?
🎃 Gefeliciteerd, je hebt zojuist een model gemaakt dat kan helpen de prijs van taartpompoenen te voorspellen. Je kunt waarschijnlijk dezelfde procedure herhalen voor alle pompoensoorten, maar dat zou tijdrovend zijn. Laten we nu leren hoe we pompoenvariëteiten in ons model kunnen opnemen!
🎃 Gefeliciteerd, je hebt zojuist een model gemaakt dat kan helpen de prijs van taartpompoenen te voorspellen. Waarschijnlijk kun je dezelfde procedure herhalen voor alle pompoentypes, maar dat zou saai zijn. Laten we nu leren hoe we rekening kunnen houden met pompoensoorten in ons model!
## Categorische Kenmerken
## Categorische kenmerken
In een ideale wereld willen we prijzen voor verschillende pompoenvariëteiten kunnen voorspellen met hetzelfde model. De kolom `Variety` is echter enigszins anders dan kolommen zoals `Month`, omdat deze niet-numerieke waarden bevat. Dergelijke kolommen worden **categorisch** genoemd.
In een ideale wereld willen we prijzen voor verschillende pompoensoorten voorspellen met hetzelfde model. Echter, de kolom `Variety` is anders dan kolommen zoals `Month`, omdat deze niet-numerieke waarden bevat. Dergelijke kolommen worden **categorisch** genoemd.
[](https://youtu.be/DYGliioIAE0 "ML voor beginners - Categorische Kenmerken Voorspellingen met Lineaire Regressie")
[](https://youtu.be/DYGliioIAE0 "ML voor beginners - Categorievoorspellingen met lineaire regressie")
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van het gebruik van categorische kenmerken.
> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van het gebruik van categorische kenmerken.
Hier kun je zien hoe de gemiddelde prijs afhankelijk is van de variëteit:
Hier zie je hoe de gemiddelde prijs afhangt van de soort:
<imgalt="Gemiddelde prijs per variëteit" src="../../../../translated_images/nl/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/nl/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Om rekening te houden met variëteit, moeten we deze eerst omzetten naar numerieke vorm, of **coderen**. Er zijn verschillende manieren waarop we dit kunnen doen:
Om rekening te houden met de soort, moeten we deze eerst omzetten in numerieke vorm, of **encoderen**. Er zijn verschillende manieren om dat te doen:
* Eenvoudige **numerieke codering**zal een tabel maken van verschillende variëteiten en vervolgens de variëteitsnaam vervangen door een index in die tabel. Dit is niet de beste optie voor lineaire regressie, omdat lineaire regressie de werkelijke numerieke waarde van de index neemt en deze toevoegt aan het resultaat, vermenigvuldigd met een coëfficiënt. In ons geval is de relatie tussen het indexnummer en de prijs duidelijk niet-lineair, zelfs als we ervoor zorgen dat indices op een specifieke manier worden gerangschikt.
* **One-hot encoding**zal de kolom `Variety` vervangen door 4 verschillende kolommen, één voor elke variëteit. Elke kolom bevat `1` als de corresponderende rij van een bepaalde variëteit is, en `0` anders. Dit betekent dat er vier coëfficiënten zullen zijn in lineaire regressie, één voor elke pompoenvariëteit, verantwoordelijk voor de "startprijs" (of eerder "extra prijs") voor die specifieke variëteit.
* Eenvoudige **numerieke codering**bouwt een tabel van verschillende soorten, en vervangt dan de soortnaam door een index in die tabel. Dit is niet het beste idee voor lineaire regressie, omdat lineaire regressie de numerieke waarde van de index neemt en optelt bij het resultaat, maal een coëfficiënt. In ons geval is de relatie tussen het indexnummer en de prijs duidelijk niet-lineair, zelfs als we de indices in een specifieke volgorde plaatsen.
* **One-hot encoding**vervangt de kolom `Variety` door 4 verschillende kolommen, een voor elke soort. Elke kolom bevat `1` als de overeenkomstige rij van die betreffende soort is, en `0` anders. Dit betekent dat er vier coëfficiënten in lineaire regressie zijn, één voor elke pompoensoort, verantwoordelijk voor de "startprijs" (of liever gezegd "extra prijs") voor die specifieke soort.
De onderstaande code laat zien hoe we een variëteit kunnen one-hot encoden:
De onderstaande code toont hoe we een soort one-hot kunnen encoderen:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
Om lineaire regressie te trainen met one-hot encoded variëteit als invoer, hoeven we alleen de `X`- en `y`-gegevens correct te initialiseren:
Om lineaire regressie te trainen met one-hot gecodeerde variëteit als invoer, hoeven we alleen `X` en `y` correct te initialiseren:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
De rest van de code is hetzelfde als wat we hierboven hebben gebruikt om lineaire regressie te trainen. Als je het probeert, zul je zien dat de gemiddelde kwadratische fout ongeveer hetzelfde is, maar we krijgen een veel hogere coëfficiënt van determinatie (~77%). Om nog nauwkeurigere voorspellingen te krijgen, kunnen we meer categorische kenmerken in rekening brengen, evenals numerieke kenmerken zoals `Month` of `DayOfYear`. Om één grote array van kenmerken te krijgen, kunnen we `join` gebruiken:
De rest van de code is hetzelfde als wat we hierboven gebruikten om lineaire regressie te trainen. Als je het probeert, zul je zien dat de mean squared error ongeveer hetzelfde is, maar we krijgen een veel hogere coëfficiënt van determinatie (~77%). Om nog nauwkeurigere voorspellingen te krijgen, kunnen we nog meer categorische kenmerken overwegen, evenals numerieke kenmerken zoals `Month` of `DayOfYear`. Om één grote array van features te krijgen, kunnen we `join` gebruiken:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,68 +318,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
Hier nemen we ook `City` en `Package` type in rekening, wat ons een MSE van 2,84 (10%) en een determinatie van 0,94 geeft!
Hier nemen we ook `City` en het type `Package` mee, wat ons een MSE van 2.84 (10%) en een determinatie van 0.94 geeft!
## Alles samenvoegen
## Alles samenvoegen
Om het beste model te maken, kunnen we gecombineerde (one-hot encoded categorische + numerieke) gegevens uit het bovenstaande voorbeeld gebruiken samen met polynomiale regressie. Hier is de volledige code voor je gemak:
Om het beste model te maken, kunnen we gecombineerde (one-hot gecodeerde categorische + numerieke) gegevens uit het bovenstaande voorbeeld samen met polynomiale regressie gebruiken. Hier is de volledige code voor jouw gemak:
```python
# set up training data
# trainingsgegevens instellen
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# maak train-test splitsing
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Dit zou ons de beste determinatiecoëfficiënt van bijna 97% moeten geven, en MSE=2,23 (~8% voorspellingsfout).
Dit zou ons de beste determinatiecoëfficiënt van bijna 97% en MSE=2.23 (~8% voorspellingsfout) moeten geven.
| Model | MSE | Determinatie |
|-------|-----|---------------|
| `DayOfYear` Lineair | 2,77 (17,2%) | 0,07 |
| `DayOfYear` Polynomiaal | 2,73 (17,0%) | 0,08 |
| `Variety` Lineair | 5,24 (19,7%) | 0,77 |
| Alle kenmerken Lineair | 2,84 (10,5%) | 0,94 |
| Alle kenmerken Polynomiaal | 2,23 (8,25%) | 0,97 |
| Model | MSE | Determinatie |
|-------|-----|--------------|
| `DayOfYear` Lineair | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polynomiaal | 2.73 (17.0%) | 0.08 |
| `Variety` Lineair | 5.24 (19.7%) | 0.77 |
| Alle kenmerken Lineair | 2.84 (10.5%) | 0.94 |
| Alle kenmerken Polynomiaal | 2.23 (8.25%) | 0.97 |
🏆 Goed gedaan! Je hebt vier regressiemodellen gemaakt in één les en de modelkwaliteit verbeterd tot 97%. In het laatste deel over regressie leer je over logistische regressie om categorieën te bepalen.
🏆 Goed gedaan! Je hebt vier regressiemodellen gemaakt in één les en de modelkwaliteit verbeterd tot 97%. In de laatste sectie over regressie leer je over logistische regressie om categorieën te bepalen.
---
## 🚀Uitdaging
---
## 🚀Uitdaging
Test verschillende variabelen in dit notebook om te zien hoe correlatie overeenkomt met modelnauwkeurigheid.
Test verschillende variabelen in dit notebook om te zien hoe correlatie overeenkomt met modelnauwkeurigheid.
## [Quiz na de les](https://ff-quizzes.netlify.app/en/ml/)
## Review & Zelfstudie
## Review & Zelfstudie
In deze les hebben we geleerd over lineaire regressie. Er zijn andere belangrijke soorten regressie. Lees over Stepwise, Ridge, Lasso en Elasticnet technieken. Een goede cursus om meer te leren is de [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
In deze les hebben we geleerd over lineaire regressie. Er zijn ook andere belangrijke soorten regressie. Lees over Stepwise, Ridge, Lasso en Elasticnet technieken. Een goede cursus om meer te leren is de [Stanford Statistical Learning cursus](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Opdracht
## Opdracht
[Maak een model](assignment.md)
[Maak een model](assignment.md)
---
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het oorspronkelijke document in de oorspronkelijke taal moet als gezaghebbende bron worden beschouwd. Voor belangrijke informatie wordt een professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
In deze tweede les over classificatie ga je meer manieren verkennen om numerieke gegevens te classificeren. Je leert ook over de gevolgen van het kiezen van de ene classifier boven de andere.
In deze tweede classificatieles verken je meer manieren om numerieke gegevens te classificeren. Je leert ook over de gevolgen van het kiezen van de ene classifier boven de andere.
We gaan ervan uit dat je de vorige lessen hebt voltooid en een opgeschoonde dataset hebt in je `data` map genaamd _cleaned_cuisines.csv_ in de hoofdmap van deze 4-lessen folder.
We gaan ervan uit dat je de vorige lessen hebt afgerond en een opgeschoonde dataset hebt in je `data` map met de naam _cleaned_cuisines.csv_ in de root van deze map met 4 lessen.
### Voorbereiding
We hebben je _notebook.ipynb_ bestand geladen met de opgeschoonde dataset en deze verdeeld in X- en y-dataframes, klaar voor het modelbouwproces.
We hebben je _notebook.ipynb_ bestand geladen met de opgeschoonde dataset en deze verdeeld in X en y dataframes, klaar voor het bouwproces van het model.
## Een classificatiekaart
Eerder heb je geleerd over de verschillende opties die je hebt bij het classificeren van gegevens met behulp van Microsoft's cheat sheet. Scikit-learn biedt een vergelijkbare, maar meer gedetailleerde cheat sheet die je verder kan helpen bij het verfijnen van je keuzes voor classifiers (ook wel estimators genoemd):
Eerder heb je geleerd over de verschillende opties die je hebt bij het classificeren van gegevens met behulp van Microsoft's cheat sheet. Scikit-learn biedt een soortgelijke, maar meer gedetailleerde cheat sheet die je verder kan helpen je schatters (een andere term voor classifiers) te verfijnen:

> Tip: [bezoek deze kaart online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) en klik langs het pad om documentatie te lezen.

> Tip: [bezoek deze kaart online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) en klik door het pad om de documentatie te lezen.
### Het plan
Deze kaart is erg handig zodra je een goed begrip hebt van je gegevens, omdat je langs de paden kunt 'wandelen' naar een beslissing:
Deze kaart is erg behulpzaam zodra je een duidelijk begrip van je gegevens hebt, want je kunt ‘wandelen’ langs de paden naar een beslissing:
- We hebben >50 samples
- We hebben >50 voorbeelden
- We willen een categorie voorspellen
- We hebben gelabelde gegevens
- We hebben minder dan 100K samples
- ✨ We kunnen een Linear SVC kiezen
- Als dat niet werkt, omdat we numerieke gegevens hebben:
- We hebben gelabelde data
- We hebben minder dan 100K voorbeelden
- ✨ We kunnen kiezen voor een Linear SVC
- Als dat niet werkt, omdat we numerieke data hebben
- Kunnen we een ✨ KNeighbors Classifier proberen
- Als dat niet werkt, probeer ✨ SVC en ✨ Ensemble Classifiers
Dit is een zeer nuttig pad om te volgen.
Dit is een zeer behulpzaam pad om te volgen.
## Oefening - splits de gegevens
## Oefening - splits de data
Volgens dit pad moeten we beginnen met het importeren van enkele bibliotheken die we gaan gebruiken.
Volgend op dit pad, beginnen we met het importeren van enkele benodigde libraries.
1. Importeer de benodigde bibliotheken:
1. Importeer de benodigde libraries:
```python
from sklearn.neighbors import KNeighborsClassifier
@ -50,25 +50,25 @@ Volgens dit pad moeten we beginnen met het importeren van enkele bibliotheken di
Support-Vector clustering (SVC) is een onderdeel van de Support-Vector machines familie van ML-technieken (leer meer hierover hieronder). Bij deze methode kun je een 'kernel' kiezen om te bepalen hoe de labels worden gegroepeerd. De 'C'-parameter verwijst naar 'regularisatie', wat de invloed van parameters reguleert. De kernel kan een van [meerdere](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) zijn; hier stellen we deze in op 'linear' om ervoor te zorgen dat we gebruik maken van lineaire SVC. Probability staat standaard op 'false'; hier stellen we deze in op 'true' om waarschijnlijkheidschattingen te verzamelen. We stellen de random state in op '0' om de gegevens te schudden en waarschijnlijkheden te verkrijgen.
Support-Vector clustering (SVC) is een onderdeel van de Support-Vector machines familie van ML-technieken (lees hieronder meer over deze technieken). Bij deze methode kies je een 'kernel' om te beslissen hoe labels geclusterd worden. De parameter 'C' verwijst naar 'regularisatie' wat de invloed van parameters reguleert. De kernel kan een van [verschillende](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) zijn; hier zetten we deze op 'linear' om linear SVC te gebruiken. De standaardwaarde voor probability is 'false'; hier zetten we het op 'true' om waarschijnlijkheidsinschattingen te verzamelen. We stellen de random state in op '0' om de data te schudden en zo waarschijnlijkheden te verkrijgen.
### Oefening - pas een lineaire SVC toe
### Oefening - pas een linear SVC toe
Begin met het maken van een array van classifiers. Je zult deze array geleidelijk uitbreiden terwijl we testen.
Begin met het maken van een array van classifiers. Je voegt hier steeds meer classifiers aan toe terwijl we testen.
@ -88,7 +88,7 @@ Begin met het maken van een array van classifiers. Je zult deze array geleidelij
print(classification_report(y_test,y_pred))
```
Het resultaat is behoorlijk goed:
Het resultaat is vrij goed:
```output
Accuracy (train) for Linear SVC: 78.6%
@ -107,11 +107,11 @@ Begin met het maken van een array van classifiers. Je zult deze array geleidelij
## K-Neighbors classifier
K-Neighbors is onderdeel van de "neighbors" familie van ML-methoden, die zowel voor supervised als unsupervised learning kunnen worden gebruikt. Bij deze methode wordt een vooraf bepaald aantal punten gecreëerd en worden gegevens verzameld rond deze punten, zodat gegeneraliseerde labels kunnen worden voorspeld voor de gegevens.
K-Neighbors maakt deel uit van de "neighbors" familie van ML-methoden, die kunnen worden gebruikt voor zowel supervised als unsupervised learning. Bij deze methode wordt een vooraf bepaald aantal punten gecreëerd en data worden rond deze punten verzameld zodat gegeneraliseerde labels voorspeld kunnen worden voor de data.
### Oefening - pas de K-Neighbors classifier toe
De vorige classifier was goed en werkte goed met de gegevens, maar misschien kunnen we een betere nauwkeurigheid behalen. Probeer een K-Neighbors classifier.
De vorige classifier was goed en werkte goed met de data, maar misschien kunnen we een betere nauwkeurigheid bereiken. Probeer een K-Neighbors classifier.
1. Voeg een regel toe aan je classifier array (voeg een komma toe na het Linear SVC item):
@ -136,23 +136,23 @@ De vorige classifier was goed en werkte goed met de gegevens, maar misschien kun
weighted avg 0.76 0.74 0.74 1199
```
✅ Leer meer over [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Leer over [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support Vector Classifier
Support-Vector classifiers zijn onderdeel van de [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) familie van ML-methoden die worden gebruikt voor classificatie- en regressietaken. SVMs "mappen trainingsvoorbeelden naar punten in de ruimte" om de afstand tussen twee categorieën te maximaliseren. Vervolgens worden gegevens in deze ruimte gemapt zodat hun categorie kan worden voorspeld.
Support-Vector classifiers zijn onderdeel van de [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) familie van ML-methoden die gebruikt worden voor classificatie- en regressietaken. SVM's "mappen trainingsvoorbeelden naar punten in de ruimte" om de afstand tussen twee categorieën te maximaliseren. Volgende data worden in deze ruimte gemapt zodat hun categorie kan worden voorspeld.
### Oefening - pas een Support Vector Classifier toe
Laten we proberen een iets betere nauwkeurigheid te behalen met een Support Vector Classifier.
1. Voeg een komma toe na het K-Neighbors item en voeg vervolgens deze regel toe:
1. Voeg een komma toe na het K-Neighbors item, en voeg dan deze regel toe:
```python
'SVC': SVC(),
```
Het resultaat is behoorlijk goed!
Het resultaat is vrij goed!
```output
Accuracy (train) for SVC: 83.2%
@ -169,11 +169,11 @@ Laten we proberen een iets betere nauwkeurigheid te behalen met een Support Vect
weighted avg 0.84 0.83 0.83 1199
```
✅ Leer meer over [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Leer over [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ensemble Classifiers
Laten we het pad helemaal volgen, ook al was de vorige test behoorlijk goed. Laten we enkele 'Ensemble Classifiers' proberen, specifiek Random Forest en AdaBoost:
Laten we het pad volgen tot het einde, ook al was de vorige test al goed. Laten we wat 'Ensemble Classifiers' proberen, specifiek Random Forest en AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Leer meer over [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Leer over [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
Deze methode van Machine Learning "combineert de voorspellingen van verschillende basisestimators" om de kwaliteit van het model te verbeteren. In ons voorbeeld hebben we Random Trees en AdaBoost gebruikt.
Deze methode van Machine Learning "combineert de voorspellingen van meerdere basis-schatters" om de kwaliteit van het model te verbeteren. In ons voorbeeld gebruikten we Random Trees en AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), een gemiddelde methode, bouwt een 'forest' van 'decision trees' met willekeurigheid om overfitting te voorkomen. De n_estimators parameter wordt ingesteld op het aantal bomen.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), een gemiddeldemethode, bouwt een 'bos' van 'beslissingsbomen' met toegevoegde willekeurigheid om overfitting te voorkomen. De parameter n_estimators staat voor het aantal bomen.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) past een classifier toe op een dataset en past vervolgens kopieën van die classifier toe op dezelfde dataset. Het richt zich op de gewichten van verkeerd geclassificeerde items en past de fit aan voor de volgende classifier om correcties aan te brengen.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) past een classifier toe op een dataset en past vervolgens kopieën van die classifier toe op dezelfde dataset. Het richt zich op de gewichten van verkeerd geclassificeerde items en past de fit aan voor de volgende classifier om te corrigeren.
---
## 🚀Uitdaging
Elk van deze technieken heeft een groot aantal parameters die je kunt aanpassen. Onderzoek de standaardparameters van elk en denk na over wat het aanpassen van deze parameters zou betekenen voor de kwaliteit van het model.
Elk van deze technieken heeft een groot aantal parameters die je kunt aanpassen. Onderzoek de standaardparameters van elk en denk na over wat het bijstellen van deze parameters zou betekenen voor de kwaliteit van het model.
Er is veel jargon in deze lessen, dus neem even de tijd om [deze lijst](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) met nuttige terminologie te bekijken!
Er zit veel jargon in deze lessen, dus neem even de tijd om [deze lijst](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) van nuttige terminologie te bekijken!
## Opdracht
## Opdracht
[Parameter spelen](assignment.md)
[Spelen met parameters](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het oorspronkelijke document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt een professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
"\n---\n\n**Disclaimer**:\nDit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, willen we u erop wijzen dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nDit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel wij streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onjuistheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor kritieke informatie wordt een professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Disclaimer**: \nDit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**: \nDit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel wij streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het oorspronkelijke document in de oorspronkelijke taal dient als de gezaghebbende bron te worden beschouwd. Voor kritieke informatie wordt een professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Deze repository bevat meer dan 50 taalvertalingen, waardoor de downloadgrootte aanzienlijk toeneemt. Om zonder vertalingen te klonen, gebruik je sparse checkout:
> **Liever lokaal klonen?**
>
> Deze repository bevat vertalingen in meer dan 50 talen, wat de downloadgrootte aanzienlijk vergroot. Om te klonen zonder vertalingen, gebruik je sparse checkout:
We hebben een doorlopende Discord leer met AI-serie, leer meer en doe mee op [Learn with AI Series](https://aka.ms/learnwithai/discord) van 18 - 30 september 2025. Je krijgt tips en trucs voor het gebruik van GitHub Copilot voor Data Science.
We hebben een Discord learn with AI-serie die momenteel loopt, leer meer en doe mee via [Learn with AI Series](https://aka.ms/learnwithai/discord) van 18 - 30 september 2025. Je krijgt tips en trucs voor het gebruik van GitHub Copilot voor Data Science.

# Machine Learning voor Beginners - Een curriculum
# Machine Learning voor Beginners - Een Curriculum
> 🌍 Reis rond de wereld terwijl we Machine Learning verkennen via wereldculturen 🌍
Cloud Advocates bij Microsoft bieden met plezier een 12-weekse, 26-les curriculum aan over **Machine Learning**. In dit curriculum leer je over wat soms wordt genoemd **klassieke machine learning**, waarbij voornamelijk Scikit-learn als bibliotheek wordt gebruikt en deep learning wordt vermeden, dat wordt behandeld in ons [AI voor Beginners' curriculum](https://aka.ms/ai4beginners). Combineer deze lessen ook met ons ['Data Science voor Beginners' curriculum](https://aka.ms/ds4beginners)!
Cloud Advocates bij Microsoft bieden met plezier een 12-weeks, 26-lessen curriculum over **Machine Learning** aan. In dit curriculum leer je over wat soms **klassieke machine learning** wordt genoemd, waarbij hoofdzakelijk gebruik wordt gemaakt van Scikit-learn als bibliotheek en waarbij diepe leerprocessen worden vermeden, die aan bod komen in ons [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Combineer deze lessen ook met ons ['Data Science voor Beginners' curriculum](https://aka.ms/ds4beginners)!
Reis met ons rond de wereld terwijl we deze klassieke technieken toepassen op data uit vele delen van de wereld. Elke les bevat voorafgaande en nagekomen quizzen, geschreven instructies om de les te voltooien, een oplossing, een opdracht en meer. Onze project-gebaseerde pedagogiek stelt je in staat te leren terwijl je bouwt, een bewezen manier om nieuwe vaardigheden te laten 'plakken'.
Reis met ons mee rond de wereld terwijl we deze klassieke technieken toepassen op data uit vele gebieden van de wereld. Elke les bevat quizzen vóór en na de les, geschreven instructies om de les te voltooien, een oplossing, een opdracht en meer. Onze projectgebaseerde didactiek stelt je in staat te leren terwijl je bouwt, een bewezen manier om nieuwe vaardigheden te laten beklijven.
**✍️ Hartelijke dank aan onze auteurs** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu en Amy Boyd
**🎨 Dank ook aan onze illustratoren** Tomomi Imura, Dasani Madipalli en Jen Looper
**🎨 Dank eveneens aan onze illustratoren** Tomomi Imura, Dasani Madipalli en Jen Looper
**🙏 Speciale dank 🙏 aan onze Microsoft Student Ambassador auteurs, reviewers en inhoudbijdragers**, in het bijzonder Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila en Snigdha Agarwal
**🙏 Speciale dank 🙏 aan onze Microsoft Student Ambassador-auteurs, reviewers en inhoudsbijdragers**, met name Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila en Snigdha Agarwal
**🤩 Extra dank aan Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi en Vidushi Gupta voor onze R-lessen!**
# Aan de slag
Volg deze stappen:
1. **Fork de Repository**: Klik op de knop "Fork" rechtsboven op deze pagina.
2. **Clone de Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **Fork de Repository**: Klik op de knop "Fork" in de rechterbovenhoek van deze pagina.
2. **Clone de Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [vind alle extra bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Hulp nodig?** Bekijk onze [Probleemoplossingsgids](TROUBLESHOOTING.md) voor oplossingen voor veelvoorkomende problemen met installatie, setup en het uitvoeren van lessen.
> [vind alle aanvullende bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Hulp nodig?** Bekijk onze [Probleemoplossingsgids](TROUBLESHOOTING.md) voor oplossingen bij veelvoorkomende problemen met installatie, setup en het uitvoeren van lessen.
**[Studenten](https://aka.ms/student-page)**, om dit curriculum te gebruiken, fork je de hele repo naar je eigen GitHub-account en maak je de oefeningen zelf of met een groep:
**[Studenten](https://aka.ms/student-page)**, om dit curriculum te gebruiken, fork je de volledige repo naar je eigen GitHub-account en voltooi je de oefeningen zelf of met een groep:
- Begin met een quiz voorafgaand aan de les.
- Lees de les en maak de activiteiten, pauzeer en reflecteer bij elke kenniscontrole.
- Probeer de projecten te maken door de lessen te begrijpen in plaats van de oplossingcode uit te voeren; die code is echter beschikbaar in de `/solution` mappen bij elke projectgerichte les.
- Begin met een quiz vóór de les.
- Lees de les en voltooi de activiteiten, pauzeer en reflecteer bij elke kennischeck.
- Probeer de projecten te maken door de lessen te begrijpen in plaats van simpelweg de oplossing te draaien; die code is echter beschikbaar in de `/solution`-mappen in elke projectgerichte les.
- Maak de quiz na de les.
- Maak de uitdaging.
- Maak de opdracht.
- Na het afronden van een lesgroep, bezoek het [Discussiebord](https://github.com/microsoft/ML-For-Beginners/discussions) en "leer hardop" door de gepaste PAT-rubric in te vullen. Een 'PAT' is een Progress Assessment Tool die een rubric is die je invult om je leren te verdiepen. Je kunt ook reageren op andere PAT's zodat we samen kunnen leren.
- Voltooi de challenge.
- Voltooi de opdracht.
- Na het voltooien van een groep lessen, bezoek het [Discussiebord](https://github.com/microsoft/ML-For-Beginners/discussions) en "leer hardop" door het passende PAT-rubriek in te vullen. Een 'PAT' is een Progress Assessment Tool die je invult om je leren te bevorderen. Je kunt ook reageren op andere PAT's zodat we samen kunnen leren.
> Voor verdere studie raden we aan deze [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules en leerroutes te volgen.
> Voor verdere studie bevelen we aan om deze [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modules en leerpaden te volgen.
**Docenten**, we hebben [enkele suggesties opgenomen](for-teachers.md) over hoe dit curriculum te gebruiken.
**Docenten**, we hebben [enkele suggesties](for-teachers.md) opgenomen over hoe je dit curriculum kunt gebruiken.
---
## Video walkthroughs
Sommige lessen zijn beschikbaar als korte video's. Je kunt ze allemaal inline vinden in de lessen, of op de [ML voor Beginners afspeellijst op het Microsoft Developer YouTube-kanaal](https://aka.ms/ml-beginners-videos) door op de onderstaande afbeelding te klikken.
Sommige lessen zijn beschikbaar als korte video's. Je kunt ze allemaal inline in de lessen vinden, of in de [ML for Beginners-afspeellijst op het Microsoft Developer YouTube-kanaal](https://aka.ms/ml-beginners-videos) door op de onderstaande afbeelding te klikken.
[](https://aka.ms/ml-beginners-videos)
@ -95,92 +104,92 @@ Sommige lessen zijn beschikbaar als korte video's. Je kunt ze allemaal inline vi
---
## Pedagogiek
## Didactiek
We hebben twee pedagogische principes gekozen tijdens het bouwen van dit curriculum: ervoor zorgen dat het hands-on **project-gebaseerd** is en dat het **frequente quizzen** bevat. Daarnaast heeft dit curriculum een gemeenschappelijk **thema** om het samenhangend te maken.
We hebben twee didactische principes gekozen bij het ontwikkelen van dit curriculum: ervoor zorgen dat het hands-on **projectgebaseerd** is en dat het **frequente quizzen** bevat. Bovendien heeft dit curriculum een gemeenschappelijk **thema** voor samenhang.
Door ervoor te zorgen dat de inhoud aansluit bij projecten, wordt het proces aantrekkelijker voor studenten en wordt het onthouden van concepten versterkt. Daarnaast zet een quiz met lage inzet vóór een les de intentie van de student op het leren van een onderwerp, terwijl een tweede quiz na de les verdere retentie waarborgt. Dit curriculum is ontworpen om flexibel en leuk te zijn en kan geheel of gedeeltelijk worden gevolgd. De projecten beginnen klein en worden steeds complexer tegen het einde van de 12-weekse cyclus. Dit curriculum bevat ook een naschrift over toepassingen in de echte wereld van ML, wat kan worden gebruikt als extra krediet of als basis voor discussie.
Door ervoor te zorgen dat de inhoud aansluit bij projecten, wordt het proces boeiender voor studenten en wordt de retentie van concepten verhoogd. Daarnaast stelt een quiz met lage inzet vóór de les de intentie van de student in op het leren van een onderwerp, terwijl een tweede quiz na de les verdere retentie bevordert. Dit curriculum is ontworpen om flexibel en leuk te zijn en kan geheel of gedeeltelijk gevolgd worden. De projecten starten klein en worden steeds complexer aan het einde van de 12-weekse cyclus. Dit curriculum bevat ook een epiloog over toepassingen van ML in de echte wereld, die gebruikt kan worden als extra opdracht of als basis voor discussie.
> Raadpleeg onze [Gedragscode](CODE_OF_CONDUCT.md), [Bijdragen](CONTRIBUTING.md), [Vertalingen](TRANSLATIONS.md) en [Probleemoplossing](TROUBLESHOOTING.md) richtlijnen. We verwelkomen je constructieve feedback!
> Vind onze [Gedragscode](CODE_OF_CONDUCT.md), [Bijdragen](CONTRIBUTING.md), [Vertaling](TRANSLATIONS.md) en [Probleemoplossing](TROUBLESHOOTING.md) richtlijnen. We verwelkomen je constructieve feedback!
## Elke les bevat
- optionele sketchnote
- optionele schetsnotitie
- optionele aanvullende video
- video walkthrough (slechts sommige lessen)
- [quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/en/ml/)
- video walkthrough (alleen sommige lessen)
- [quiz om op te warmen vóór de les](https://ff-quizzes.netlify.app/en/ml/)
- geschreven les
- voor project-gebaseerde lessen, stapsgewijze gidsen voor het bouwen van het project
- voor projectgebaseerde lessen, stapsgewijze handleidingen om het project te bouwen
- kenniscontroles
- een uitdaging
- een challenge
- aanvullende lectuur
- opdracht
- [quiz na de les](https://ff-quizzes.netlify.app/en/ml/)
> **Een opmerking over talen**: Deze lessen zijn hoofdzakelijk geschreven in Python, maar veel zijn ook beschikbaar in R. Om een R-les te voltooien, ga je naar de `/solution` map en zoek je naar R-lessen. Deze bevatten een .rmd extensie die een **R Markdown**-bestand betekent, wat eenvoudig kan worden gedefinieerd als een embedding van `codeblokken` (van R of andere talen) en een `YAML-header` (die bepaalt hoe de uitvoer zoals PDF wordt opgemaakt) in een `Markdown document`. Hierdoor dient het als een voorbeeld autoringskader voor data science, omdat het je in staat stelt je code, de uitvoer daarvan en je gedachten te combineren door ze op te schrijven in Markdown. Bovendien kunnen R Markdown-documenten worden gerenderd naar uitvoerformaten als PDF, HTML of Word.
> **Een opmerking over quizzen**: Alle quizzen bevinden zich in de [Quiz App-map](../../quiz-app), met in totaal 52 quizzen van elk drie vragen. Ze worden gekoppeld vanuit de lessen, maar de quiz-app kan lokaal worden uitgevoerd; volg de instructies in de `quiz-app`-map om lokaal te hosten of te implementeren op Azure.
| 01 | Introductie tot machine learning | [Introductie](1-Introduction/README.md) | Leer de basisconcepten achter machine learning | [Les](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | De geschiedenis van machine learning | [Introductie](1-Introduction/README.md) | Leer de geschiedenis achter dit vakgebied | [Les](1-Introduction/2-history-of-ML/README.md) | Jen en Amy |
| 03 | Eerlijkheid en machine learning | [Introductie](1-Introduction/README.md) | Wat zijn de belangrijke filosofische kwesties rond eerlijkheid waar studenten aan moeten denken bij het bouwen en toepassen van ML modellen? | [Les](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Technieken voor machine learning | [Introductie](1-Introduction/README.md) | Welke technieken gebruiken ML-onderzoekers om ML-modellen te bouwen? | [Les](1-Introduction/4-techniques-of-ML/README.md) | Chris en Jen |
| 05 | Introductie tot regressie | [Regressie](2-Regression/README.md) | Begin met Python en Scikit-learn voor regressiemodellen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Visualiseer en reinig data ter voorbereiding op ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw lineaire en polynomiale regressiemodellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen en Dmitry • Eric Wanjau |
| 08 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw een logistisch regressiemodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Een webapp 🔌 | [Web-app](3-Web-App/README.md) | Bouw een webapp om je getrainde model te gebruiken | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introductie tot classificatie | [Classificatie](4-Classification/README.md) | Reinig, bereid voor en visualiseer je data; introductie tot classificatie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen en Cassie • Eric Wanjau |
| 11 | Heerlijk Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Introductie tot classificators | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen en Cassie • Eric Wanjau |
| 12 | Heerlijk Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Meer classificators | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen en Cassie • Eric Wanjau |
| 13 | Heerlijk Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Bouw een aanbevolen webapp met je model | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introductie tot clustering | [Clustering](5-Clustering/README.md) | Reinig, bereid voor en visualiseer je data; introductie tot clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Verkenning van Nigeriaanse muzikale smaken 🎧 | [Clustering](5-Clustering/README.md) | Verken de K-Means clusteringmethode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introductie tot natuurlijke taalverwerking ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Leer de basis over NLP door een eenvoudige bot te bouwen | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Veelvoorkomende NLP-taken ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Verdiep je NLP-kennis door veelvoorkomende taken te begrijpen die nodig zijn bij het omgaan met taalstructuren | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Vertaling en sentimentanalyse ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Vertaling en sentimentanalyse met Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantische hotels in Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelrecensies 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantische hotels in Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelrecensies 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introductie tot tijdreeksvoorspelling | [Tijdreeksen](7-TimeSeries/README.md) | Introductie tot tijdreeksvoorspelling | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Wereldwijde energieverbruik ⚡️ - tijdreeksvoorspelling met SVR | [Tijdreeksen](7-TimeSeries/README.md) | Tijdreeksvoorspelling met Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introductie tot reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introductie tot reinforcement learning met Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Help Peter de wolf vermijden! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Nawoord | Reële ML-scenario's en toepassingen | [ML in het Wild](9-Real-World/README.md) | Interessante en onthullende toepassingen uit de praktijk van klassieke ML | [Les](9-Real-World/1-Applications/README.md) | Team |
| Nawoord | Modeldebugging in ML met RAI-dashboard | [ML in het Wild](9-Real-World/README.md) | Modeldebugging in Machine Learning met componenten van Responsible AI-dashboard | [Les](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> **Een opmerking over talen**: Deze lessen zijn voornamelijk geschreven in Python, maar veel zijn ook beschikbaar in R. Om een les in R te voltooien, ga naar de map `/solution` en zoek naar R-lessen. Deze bevatten een .rmd-extensie die staat voor een **R Markdown**-bestand, wat eenvoudig kan worden gedefinieerd als een inbedding van `codeblokken` (van R of andere talen) en een `YAML-header` (die aangeeft hoe uitvoerformaten zoals PDF moeten worden opgemaakt) in een `Markdown-document`. Als zodanig dient het als een voorbeeldige auteurstool voor datawetenschap omdat het je in staat stelt je code, de uitvoer ervan en je gedachten te combineren door ze op te schrijven in Markdown. Bovendien kunnen R Markdown-documenten worden gerenderd naar uitvoerformaten zoals PDF, HTML of Word.
> **Een opmerking over quizzen**: Alle quizzen zijn opgenomen in de map [Quiz App folder](../../quiz-app), voor in totaal 52 quizzen van elk drie vragen. Ze zijn gekoppeld vanuit de lessen, maar de quiz-app kan lokaal worden uitgevoerd; volg de instructies in de map `quiz-app` om lokaal te hosten of te deployen naar Azure.
| Lesnummer | Onderwerp | Les Groepering | Leerdoelen | Gekoppelde Les | Auteur |
| 01 | Introductie tot machine learning | [Introductie](1-Introduction/README.md) | Leer de basisconcepten achter machine learning | [Les](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | De geschiedenis van machine learning | [Introductie](1-Introduction/README.md) | Leer de geschiedenis achter dit vakgebied| [Les](1-Introduction/2-history-of-ML/README.md) | Jen en Amy |
| 03 | Rechtvaardigheid en machine learning | [Introductie](1-Introduction/README.md) | Wat zijn de belangrijke filosofische kwesties rondom rechtvaardigheid waar studenten rekening mee moeten houden bij het bouwen en toepassen van ML-modellen? | [Les](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Technieken voor machine learning | [Introductie](1-Introduction/README.md) | Welke technieken gebruiken ML-onderzoekers om ML-modellen te bouwen? | [Les](1-Introduction/4-techniques-of-ML/README.md) | Chris en Jen |
| 05 | Introductie tot regressie | [Regressie](2-Regression/README.md) | Aan de slag met Python en Scikit-learn voor regressiemodellen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Gegevens visualiseren en opschonen ter voorbereiding van ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw lineaire en polynomiale regressiemodellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen en Dmitry • Eric Wanjau |
| 08 | Noord-Amerikaanse pompoenprijzen 🎃 | [Regressie](2-Regression/README.md) | Bouw een logistisch regressiemodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Een webapp 🔌 | [Web App](3-Web-App/README.md) | Bouw een webapp om je getrainde model te gebruiken | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introductie tot classificatie | [Classificatie](4-Classification/README.md) | Reinig, bereid voor en visualiseer je data; introductie tot classificatie | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen en Cassie • Eric Wanjau |
| 11 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Introductie tot classifiers | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen en Cassie • Eric Wanjau |
| 12 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Meer classifiers | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen en Cassie • Eric Wanjau |
| 13 | Heerlijke Aziatische en Indiase keukens 🍜 | [Classificatie](4-Classification/README.md) | Bouw een aanbevelingswebapp met behulp van je model | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introductie tot clustering | [Clustering](5-Clustering/README.md) | Reinig, bereid voor en visualiseer je data; introductie tot clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Verkenning van Nigeriaanse muzikale smaken 🎧 | [Clustering](5-Clustering/README.md) | Verken de K-Means clusteringmethode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introductie tot natuurlijke taalverwerking ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Leer de basis van NLP door het bouwen van een eenvoudige bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Veelvoorkomende NLP-taken ☕️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Verdiep je NLP-kennis door veelvoorkomende taken te begrijpen die nodig zijn bij het werken met taalstructuren | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Vertaling en sentimentanalyse ♥️| [Natuurlijke taalverwerking](6-NLP/README.md) | Vertaling en sentimentanalyse met Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantische hotels van Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantische hotels van Europa ♥️ | [Natuurlijke taalverwerking](6-NLP/README.md) | Sentimentanalyse met hotelbeoordelingen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introductie tot tijdreeksvoorspelling | [Tijdreeksen](7-TimeSeries/README.md) | Introductie tot tijdreeksvoorspelling | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Wereldwijd stroomverbruik ⚡️ - tijdreeksvoorspelling met SVR | [Tijdreeksen](7-TimeSeries/README.md) | Tijdreeksvoorspelling met Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introductie tot reinforcement learning | [Reinforcement learning](8-Reinforcement/README.md) | Introductie tot reinforcement learning met Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Help Peter om de wolf te ontlopen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Naschrift | Praktijkvoorbeelden en toepassingen van ML | [ML in het Wild](9-Real-World/README.md) | Interessante en onthullende toepassingen uit de echte wereld van klassieke ML | [Les](9-Real-World/1-Applications/README.md) | Team |
| Naschrift | Model debugging in ML met RAI-dashboard | [ML in het Wild](9-Real-World/README.md) | Model debugging in Machine Learning met Responsible AI dashboardcomponenten | [Les](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [vind alle aanvullende bronnen voor deze cursus in onze Microsoft Learn-collectie](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline toegang
Je kunt deze documentatie offline gebruiken met behulp van [Docsify](https://docsify.js.org/#/). Fork deze repo, [installeer Docsify](https://docsify.js.org/#/quickstart) op je lokale machine, en typ vervolgens in de hoofdmap van deze repo `docsify serve`. De website wordt geserveerd op poort 3000 op je localhost: `localhost:3000`.
Je kunt deze documentatie offline uitvoeren met behulp van [Docsify](https://docsify.js.org/#/). Fork deze repo, [installeer Docsify](https://docsify.js.org/#/quickstart) op je lokale machine en typ vervolgens in de hoofdmap van deze repo `docsify serve`. De website wordt geserveerd op poort 3000 op je localhost: `localhost:3000`.
## PDF-bestanden
## PDFs
Vind een pdf van het curriculum met links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Vind een pdf van het lesprogramma met links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andere cursussen
## 🎒 Andere cursussen
Ons team produceert andere cursussen! Bekijk:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generatieve AI-serie
### Generatieve AI Serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -199,7 +208,7 @@ Ons team produceert andere cursussen! Bekijk:
---
### Copilot-serie
### Copilot Serie
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
@ -207,17 +216,22 @@ Ons team produceert andere cursussen! Bekijk:
## Hulp krijgen
Als je vastloopt of vragen hebt over het bouwen van AI-apps. Doe mee met mede-leerlingen en ervaren ontwikkelaars in discussies over MCP. Het is een ondersteunende gemeenschap waar vragen welkom zijn en kennis vrij wordt gedeeld.
Als je vastloopt of vragen hebt over het bouwen van AI-apps. Doe mee met mede-lerenden en ervaren ontwikkelaars in discussies over MCP. Het is een ondersteunende gemeenschap waar vragen welkom zijn en kennis vrij wordt gedeeld.
- Bekijk aantekeningen na elke les voor een beter begrip.
- Oefen met het zelf implementeren van algoritmen.
- Verken echte datasets met de geleerde concepten.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel wij streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
Dit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel wij streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal geldt als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
Trong bài học này, bạn đã tìm hiểu về Bộ công cụ AI có trách nhiệm, một "dự án mã nguồn mở, được cộng đồng thúc đẩy nhằm giúp các nhà khoa học dữ liệu phân tích và cải thiện các hệ thống AI." Đối với bài tập này, hãy khám phá một trong các [notebook](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) của RAI Toolbox và báo cáo những phát hiện của bạn trong một bài viết hoặc bài thuyết trình.
Trong bài học này, bạn đã tìm hiểu về Bộ công cụ AI Có trách nhiệm, một "dự án mã nguồn mở do cộng đồng phát triển nhằm giúp các nhà khoa học dữ liệu phân tích và cải thiện các hệ thống AI." Đối với bài tập này, hãy khám phá một trong các [notebook](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) của RAI Toolbox và báo cáo kết quả của bạn trong một bài viết hoặc bài thuyết trình.
## Tiêu chí đánh giá
| Tiêu chí | Xuất sắc | Đạt yêu cầu | Cần cải thiện |
| | Một bài viết hoặc bài thuyết trình PowerPoint được trình bày, thảo luận về các hệ thống của Fairlearn, notebook đã chạy, và các kết luận rút ra từ việc chạy nó | Một bài viết được trình bày nhưng không có kết luận | Không có bài viết nào được trình bày |
| | Một bài viết hoặc bài thuyết trình powerpoint được trình bày thảo luận về các hệ thống của Fairlearn, notebook đã chạy, và các kết luận rút ra từ việc chạy nó | Một bài viết được trình bày nhưng không có kết luận | Không có bài viết được trình bày |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Tuyên bố miễn trừ trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn chính xác và có thẩm quyền. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.
# Xây dựng mô hình hồi quy sử dụng Scikit-learn: hồi quy theo bốn cách
# Xây dựng mô hình hồi quy sử dụng Scikit-learn: hồi quy bốn cách

> Đồ họa thông tin bởi [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## Ghi chú dành cho người mới bắt đầu
Hồi quy tuyến tính được sử dụng khi chúng ta muốn dự đoán một **giá trị số** (ví dụ: giá nhà, nhiệt độ hoặc doanh số bán hàng).
Nó hoạt động bằng cách tìm một đường thẳng đại diện tốt nhất cho mối quan hệ giữa các đặc trưng đầu vào và đầu ra.
Trong bài học này, chúng ta tập trung vào việc hiểu khái niệm trước khi khám phá các kỹ thuật hồi quy nâng cao hơn.

> Infographic bởi [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Trắc nghiệm trước bài giảng](https://ff-quizzes.netlify.app/en/ml/)
> ### [Bài học này có sẵn bằng R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Giới thiệu
### Giới thiệu
Cho đến nay, bạn đã tìm hiểu hồi quy là gì với dữ liệu mẫu thu thập từ tập dữ liệu giá bí ngô mà chúng ta sẽ sử dụng xuyên suốt bài học này. Bạn cũng đã trực quan hóa nó bằng Matplotlib.
Cho đến nay bạn đã khám phá hồi quy là gì với dữ liệu mẫu lấy từ bộ dữ liệu giá bí ngô mà chúng ta sẽ sử dụng xuyên suốt bài học này. Bạn cũng đã trực quan hóa nó bằng Matplotlib.
Bây giờ bạn đã sẵn sàng đi sâu hơn vào hồi quy cho ML. Trong khi trực quan hóa giúp bạn hiểu dữ liệu, sức mạnh thực sự của Machine Learning đến từ việc _huấn luyện mô hình_. Các mô hình được huấn luyện trên dữ liệu lịch sử để tự động nắm bắt các mối quan hệ dữ liệu, và chúng cho phép bạn dự đoán kết quả cho dữ liệu mới mà mô hình chưa từng thấy trước đó.
Bây giờ bạn đã sẵn sàng để đi sâu hơn vào hồi quy trong ML. Trong khi việc trực quan hóa giúp bạn hiểu dữ liệu, sức mạnh thực sự của Machine Learning đến từ _việc huấn luyện mô hình_. Các mô hình được huấn luyện trên dữ liệu lịch sử để tự động nắm bắt các phụ thuộc dữ liệu, và cho phép bạn dự đoán kết quả cho dữ liệu mới mà mô hình chưa từng thấy trước đó.
Trong bài học này, bạn sẽ tìm hiểu thêm về hai loại hồi quy: _hồi quy tuyến tính cơ bản_ và _hồi quy đa thức_, cùng với một số toán học cơ bản của các kỹ thuật này. Những mô hình này sẽ cho phép chúng ta dự đoán giá bí ngô dựa trên các dữ liệu đầu vào khác nhau.
Trong bài học này, bạn sẽ học thêm về hai loại hồi quy: _hồi quy tuyến tính cơ bản_ và _hồi quy đa thức_, cùng với một số phép toán nền tảng của các kỹ thuật này. Những mô hình đó sẽ giúp chúng ta dự đoán giá bí ngô dựa trên các dữ liệu đầu vào khác nhau.
[](https://youtu.be/CRxFT8oTDMg "ML cho người mới bắt đầu - Hiểu về hồi quy tuyến tính")
[](https://youtu.be/CRxFT8oTDMg "Học máy cho người mới - Hiểu về hồi quy tuyến tính")
> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về hồi quy tuyến tính.
> 🎥 Nhấn vào hình ảnh trên để xem video giới thiệu ngắn về hồi quy tuyến tính.
> Trong suốt chương trình học này, chúng tôi giả định kiến thức toán học tối thiểu và cố gắng làm cho nó dễ tiếp cận đối với học sinh đến từ các lĩnh vực khác, vì vậy hãy chú ý đến các ghi chú, 🧮 các điểm nhấn, sơ đồ và các công cụ học tập khác để hỗ trợ việc hiểu bài.
> Xuyên suốt chương trình học này, chúng tôi giả định kiến thức toán học tối thiểu, và cố gắng làm cho nó dễ tiếp cận với học viên đến từ các lĩnh vực khác, vì vậy hãy chú ý đến các ghi chú, 🧮 phần tóm tắt, sơ đồ và các công cụ học tập khác để hỗ trợ hiểu bài.
### Điều kiện tiên quyết
### Yêu cầu trước
Đến giờ bạn đã quen thuộc với cấu trúc của dữ liệu bí ngô mà chúng ta đang xem xét. Bạn có thể tìm thấy nó được tải sẵn và làm sạch trước trong tệp _notebook.ipynb_ của bài học này. Trong tệp, giá bí ngô được hiển thị theo giạ trong một khung dữ liệu mới. Hãy đảm bảo rằng bạn có thể chạy các notebook này trong các kernel của Visual Studio Code.
Bạn nên đã quen thuộc với cấu trúc dữ liệu bí ngô mà chúng ta đang xem xét. Bạn có thể tìm thấy nó được tải sẵn và đã được làm sạch trong tập _notebook.ipynb_ của bài học này. Trong tập đó, giá bí ngô được hiển thị theo từng bushel trong một bảng dữ liệu mới. Đảm bảo bạn có thể chạy các notebook này trong các kernel của Visual Studio Code.
### Chuẩn bị
Như một lời nhắc nhở, bạn đang tải dữ liệu này để đặt câu hỏi về nó.
Như lời nhắc nhở, bạn đang tải dữ liệu này để đặt câu hỏi cho nó.
- Khi nào là thời điểm tốt nhất để mua bí ngô?
- Giá của một thùng bí ngô nhỏ sẽ là bao nhiêu?
- Tôi nên mua chúng trong giạ nửa hay trong hộp 1 1/9 giạ?
- Tôi có thể kỳ vọng giá bao nhiêu cho một thùng bí ngô mini?
- Tôi có nên mua chúng theo giỏ nửa bushel hay theo hộp 1 1/9 bushel?
Hãy tiếp tục khám phá dữ liệu này.
Trong bài học trước, bạn đã tạo một khung dữ liệu Pandas và điền vào nó một phần của tập dữ liệu gốc, chuẩn hóa giá theo giạ. Tuy nhiên, bằng cách làm như vậy, bạn chỉ có thể thu thập khoảng 400 điểm dữ liệu và chỉ cho các tháng mùa thu.
Trong bài học trước, bạn đã tạo một Pandas data frame và điền dữ liệu từ một phần của bộ dữ liệu gốc, chuẩn hóa giá theo bushel. Tuy nhiên, bằng cách đó bạn chỉ có thể lấy được khoảng 400 điểm dữ liệu và chỉ cho các tháng mùa thu.
Hãy xem dữ liệu mà chúng tôi đã tải sẵn trong notebook đi kèm bài học này. Dữ liệu đã được tải sẵn và một biểu đồ phân tán ban đầu đã được vẽ để hiển thị dữ liệu theo tháng. Có lẽ chúng ta có thể tìm hiểu thêm về bản chất của dữ liệu bằng cách làm sạch nó nhiều hơn.
Hãy xem dữ liệu mà chúng tôi đã tải sẵn trong notebook kèm bài học này. Dữ liệu được tải sẵn và một biểu đồ phân tán ban đầu được vẽ để hiển thị dữ liệu theo tháng. Có thể chúng ta sẽ có thêm thông tin chi tiết về bản chất của dữ liệu bằng cách làm sạch nó kỹ hơn.
## Đường hồi quy tuyến tính
Như bạn đã học trong Bài học 1, mục tiêu của một bài tập hồi quy tuyến tính là có thể vẽ một đường để:
Như bạn đã học trong Bài 1, mục tiêu của bài tập hồi quy tuyến tính là có thể vẽ được một đường để:
- **Hiển thị mối quan hệ giữa các biến.** Hiển thị mối quan hệ giữa các biến
- **Dự đoán.** Dự đoán chính xác vị trí của một điểm dữ liệu mới so với đường đó.
- **Hiển thị mối quan hệ giữa các biến**. Hiển thị mối quan hệ giữa các biến
- **Dự đoán**. Dự đoán chính xác nơi một điểm dữ liệu mới sẽ nằm trong mối quan hệ với đường đó.
Điều phổ biến trong **Hồi quy bình phương tối thiểu** là vẽ kiểu đường như thế này. Thuật ngữ "Bình phương tối thiểu" đề cập đến quá trình giảm thiểu tổng sai số trong mô hình. Với mỗi điểm dữ liệu, chúng ta đo khoảng cách theo chiều dọc (gọi là phần dư) giữa điểm thực tế và đường hồi quy của chúng ta.
Thông thường, **Hồi quy Bình phương Tối thiểu** được sử dụng để vẽ loại đường này. Thuật ngữ 'bình phương tối thiểu' có nghĩa là tất cả các điểm dữ liệu xung quanh đường hồi quy được bình phương và sau đó cộng lại. Lý tưởng nhất, tổng cuối cùng này càng nhỏ càng tốt, vì chúng ta muốn số lỗi thấp, hay `bình phương tối thiểu`.
Chúng ta bình phương các khoảng cách này vì hai lý do chính:
Chúng ta làm như vậy vì muốn mô hình hóa một đường có khoảng cách tích lũy nhỏ nhất từ tất cả các điểm dữ liệu của chúng ta. Chúng ta cũng bình phương các giá trị trước khi cộng chúng vì chúng ta quan tâm đến độ lớn của chúng hơn là hướng của chúng.
1. **Độ lớn hơn Hướng:** Chúng ta muốn coi sai số -5 giống như sai số +5. Việc bình phương biến tất cả giá trị thành số dương.
> **🧮 Hiển thị toán học**
2. **Phạt các ngoại lệ:** Việc bình phương làm tăng trọng số cho các sai số lớn hơn, buộc đường phải nằm gần những điểm nằm xa hơn.
Sau đó, chúng ta cộng tất cả các giá trị bình phương này lại với nhau. Mục tiêu là tìm đường cụ thể mà tổng này đạt giá trị nhỏ nhất (giá trị nhỏ nhất có thể) — do đó gọi là "Bình phương tối thiểu".
> **🧮 Cho tôi xem toán học**
>
> Đường này, được gọi là _đường phù hợp nhất_, có thể được biểu diễn bằng [một phương trình](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Đường này, gọi là _đường phù hợp tốt nhất_, có thể biểu diễn bằng [một phương trình](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` là 'biến giải thích'. `Y` là 'biến phụ thuộc'. Độ dốc của đường là `b` và `a` là giao điểm với trục y, tức là giá trị của `Y` khi `X = 0`.
> `X` là biến 'giải thích'. `Y` là biến 'phụ thuộc'. Độ dốc của đường là `b` và `a` là giao điểm y, tức giá trị của `Y` khi `X = 0`.
>
>
>
>
> Đầu tiên, tính độ dốc `b`. Đồ họa thông tin bởi [Jen Looper](https://twitter.com/jenlooper)
> Đầu tiên, tính độ dốc `b`. Infographic bởi [Jen Looper](https://twitter.com/jenlooper)
>
> Nói cách khác, và liên quan đến câu hỏi ban đầu về dữ liệu bí ngô của chúng ta: "dự đoán giá của một giạ bí ngô theo tháng", `X` sẽ là giá và `Y` sẽ là tháng bán.
> Nói cách khác, và liên quan đến câu hỏi gốc của dữ liệu bí ngô: "dự đoán giá bí ngô theo bushel theo tháng", `X` sẽ là giá và `Y` sẽ là tháng bán.
>
>
>
>
> Tính giá trị của Y. Nếu bạn đang trả khoảng $4, chắc hẳn là tháng Tư! Đồ họa thông tin bởi [Jen Looper](https://twitter.com/jenlooper)
> Tính giá trị của Y. Nếu bạn trả khoảng 4 đô la, chắc chắn là tháng Tư rồi! Infographic bởi [Jen Looper](https://twitter.com/jenlooper)
>
> Toán học tính toán đường này phải thể hiện độ dốc của đường, cũng phụ thuộc vào giao điểm, hoặc vị trí của `Y` khi `X = 0`.
> Phép toán tính đường phải thể hiện độ dốc đường, cũng phụ thuộc vào giao điểm, hay vị trí của `Y` khi `X = 0`.
>
> Bạn có thể quan sát phương pháp tính toán các giá trị này trên trang web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Cũng ghé thăm [máy tính Bình phương Tối thiểu này](https://www.mathsisfun.com/data/least-squares-calculator.html) để xem cách các giá trị số ảnh hưởng đến đường.
> Bạn có thể xem phương pháp tính các giá trị này trên trang web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Cũng hãy ghé thăm [máy tính bình phương tối thiểu này](https://www.mathsisfun.com/data/least-squares-calculator.html) để xem cách các giá trị số gây ảnh hưởng cho đường như thế nào.
## Tương quan
Một thuật ngữ khác cần hiểu là **Hệ số Tương quan** giữa các biến X và Y cho trước. Sử dụng biểu đồ phân tán, bạn có thể nhanh chóng hình dung hệ số này. Một biểu đồ với các điểm dữ liệu phân tán theo một đường gọn gàng có tương quan cao, nhưng một biểu đồ với các điểm dữ liệu phân tán khắp nơi giữa X và Y có tương quan thấp.
Một thuật ngữ nữa cần hiểu là **Hệ số tương quan** giữa các biến X và Y cho trước. Sử dụng biểu đồ phân tán, bạn có thể nhanh chóng hình dung hệ số này. Một biểu đồ với các điểm dữ liệu nằm gần một đường thẳng thể hiện tương quan cao, còn biểu đồ với các điểm phân tán khắp nơi giữa X và Y thì thể hiện tương quan thấp.
Một mô hình hồi quy tuyến tính tốt sẽ là mô hình có Hệ số Tương quan cao (gần 1 hơn 0) sử dụng phương pháp Hồi quy Bình phương Tối thiểu với một đường hồi quy.
Một mô hình hồi quy tuyến tính tốt sẽ có Hệ số tương quan cao (gần 1 hơn 0) sử dụng phương pháp Hồi quy bình phương tối thiểu với một đường hồi quy.
✅ Chạy notebook đi kèm bài học này và xem biểu đồ phân tán Giá theo Tháng. Dữ liệu liên kết Tháng với Giá bán bí ngô có vẻ có tương quan cao hay thấp, theo cách bạn diễn giải trực quan biểu đồ phân tán? Điều đó có thay đổi nếu bạn sử dụng thước đo chi tiết hơn thay vì `Tháng`, ví dụ như *ngày trong năm* (tức là số ngày kể từ đầu năm)?
✅ Hãy chạy notebook kèm theo bài học này và xem biểu đồ phân tán Tháng với Giá. Dữ liệu liên kết Tháng với Giá cho doanh số bí ngô có vẻ có tương quan cao hay thấp, theo cách bạn quan sát biểu đồ phân tán? Điều này có thay đổi nếu bạn dùng phép đo chi tiết hơn thay vì `Month`, ví dụ *ngày của năm* (tức số ngày kể từ đầu năm)?
Trong đoạn mã dưới đây, chúng ta sẽ giả định rằng chúng ta đã làm sạch dữ liệu và thu được một khung dữ liệu gọi là `new_pumpkins`, tương tự như sau:
Trong đoạn mã dưới đây, chúng ta giả định đã làm sạch dữ liệu, và thu được data frame gọi là `new_pumpkins`, tương tự như sau:
ID | Tháng | NgàyTrongNăm | Loại | Thành phố | Gói | Giá thấp | Giá cao | Giá
> Đoạn mã để làm sạch dữ liệu có sẵn trong [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Chúng tôi đã thực hiện các bước làm sạch tương tự như trong bài học trước và đã tính toán cột `NgàyTrongNăm` bằng cách sử dụng biểu thức sau:
> Mã để làm sạch dữ liệu có trong [`notebook.ipynb`](notebook.ipynb). Chúng tôi đã thực hiện các bước làm sạch tương tự như bài học trước, và đã tính cột `DayOfYear` bằng biểu thức sau:
Bây giờ bạn đã hiểu toán học đằng sau hồi quy tuyến tính, hãy tạo một mô hình Hồi quy để xem liệu chúng ta có thể dự đoán gói bí ngô nào sẽ có giá tốt nhất. Ai đó mua bí ngô cho một khu vườn bí ngô vào dịp lễ có thể muốn thông tin này để tối ưu hóa việc mua các gói bí ngô cho khu vườn.
Bây giờ bạn đã hiểu toán học phía sau hồi quy tuyến tính, hãy tạo một mô hình hồi quy để xem liệu chúng ta có thể dự đoán gói bí ngô nào sẽ có giá tốt nhất không. Ai đó mua bí ngô cho mùa lễ hội có thể muốn thông tin này để tối ưu hóa việc mua các gói bí ngô cho mùa lễ.
## Tìm kiếm Tương quan
## Tìm kiếm tương quan
[](https://youtu.be/uoRq-lW2eQo "ML cho người mới bắt đầu - Tìm kiếm Tương quan: Chìa khóa cho Hồi quy Tuyến tính")
[](https://youtu.be/uoRq-lW2eQo "Học máy cho người mới - Tìm kiếm tương quan: Chìa khóa của hồi quy tuyến tính")
> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về tương quan.
> 🎥 Nhấn vào hình ảnh trên để xem video tóm tắt về tương quan.
Từ bài học trước, bạn có thể đã thấy rằng giá trung bình cho các tháng khác nhau trông như thế này:
Từ bài học trước bạn có thể đã thấy giá trung bình theo các tháng trông như sau:
<imgalt="Giá trung bình theo tháng"src="../../../../translated_images/vi/barchart.a833ea9194346d76.webp"width="50%"/>
Điều này gợi ý rằng có thể có một số tương quan, và chúng ta có thể thử huấn luyện mô hình hồi quy tuyến tính để dự đoán mối quan hệ giữa `Tháng` và `Giá`, hoặc giữa `NgàyTrongNăm` và `Giá`. Đây là biểu đồ phân tán cho thấy mối quan hệ sau:
Điều này cho thấy có thể có một số tương quan, và chúng ta có thể thử huấn luyện mô hình hồi quy tuyến tính để dự đoán mối quan hệ giữa `Month` và `Price`, hoặc giữa `DayOfYear` và `Price`. Dưới đây là biểu đồ phân tán cho thấy mối quan hệ sau:
<imgalt="Biểu đồ phân tán Giá vs. Ngày trong Năm" src="../../../../translated_images/vi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Biểu đồ phân tán Giá so với Ngày trong năm" src="../../../../translated_images/vi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Hãy xem liệu có tương quan nào không bằng cách sử dụng hàm `corr`:
Hãy xem có tương quan bằng cách sử dụng hàm `corr`:
Có vẻ như tương quan khá nhỏ, -0.15 theo `Tháng` và -0.17 theo `NgàyTrongNăm`, nhưng có thể có một mối quan hệ quan trọng khác. Có vẻ như có các cụm giá khác nhau tương ứng với các loại bí ngô khác nhau. Để xác nhận giả thuyết này, hãy vẽ từng loại bí ngô bằng một màu khác nhau. Bằng cách truyền tham số `ax` vào hàm vẽ biểu đồ phân tán, chúng ta có thể vẽ tất cả các điểm trên cùng một biểu đồ:
Có vẻ như tương quan khá nhỏ, -0.15 theo `Month` và -0.17 theo `DayOfMonth`, nhưng có thể có mối quan hệ quan trọng khác. Có vẻ như có các cụm giá khác nhau tương ứng với các loại bí ngô khác nhau. Để xác nhận giả thuyết này, hãy vẽ từng loại bí ngô với màu khác nhau. Bằng cách truyền tham số `ax` cho hàm `scatter` chúng ta có thể vẽ tất cả điểm trên cùng một biểu đồ:
```python
ax=None
@ -128,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Biểu đồ phân tán Giá vs. Ngày trong Năm" src="../../../../translated_images/vi/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Biểu đồ phân tán Giá so với Ngày trong năm với màu sắc" src="../../../../translated_images/vi/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Cuộc điều tra của chúng ta gợi ý rằng loại bí ngô có ảnh hưởng lớn hơn đến giá tổng thể so với ngày bán thực tế. Chúng ta có thể thấy điều này với biểu đồ cột:
Cuộc điều tra cho thấy loại bí ngô ảnh hưởng nhiều hơn đến giá tổng thể so với ngày bán thực tế. Ta có thể thấy điều này với biểu đồ thanh:
<imgalt="Biểu đồ phân tán Giá vs. Ngày trong Năm" src="../../../../translated_images/vi/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Biểu đồ phân tán Giá so với Ngày trong năm - loại pie pumpkins" src="../../../../translated_images/vi/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Nếu bây giờ chúng ta tính toán tương quan giữa `Giá` và `NgàyTrongNăm` bằng cách sử dụng hàm `corr`, chúng ta sẽ nhận được giá trị khoảng `-0.27` - điều này có nghĩa là việc huấn luyện một mô hình dự đoán là hợp lý.
Nếu chúng ta tính tương quan giữa `Price` và `DayOfYear` sử dụng hàm `corr`, ta sẽ thu được giá trị khoảng `-0.27` - nghĩa là việc huấn luyện một mô hình dự đoán là có ý nghĩa.
> Trước khi huấn luyện mô hình hồi quy tuyến tính, điều quan trọng là phải đảm bảo rằng dữ liệu của chúng ta đã được làm sạch. Hồi quy tuyến tính không hoạt động tốt với các giá trị bị thiếu, do đó, hợp lý để loại bỏ tất cả các ô trống:
> Trước khi huấn luyện mô hình hồi quy tuyến tính, điều quan trọng là đảm bảo dữ liệu sạch. Hồi quy tuyến tính không hoạt động tốt với các giá trị thiếu, nên nên loại bỏ tất cả ô trống:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Một cách tiếp cận khác là điền các giá trị trống bằng giá trị trung bình từ cột tương ứng.
Một cách khác là điền các giá trị thiếu bằng giá trị trung bình của cột tương ứng.
## Hồi quy Tuyến tính Đơn giản
## Hồi quy tuyến tính đơn giản
[](https://youtu.be/e4c_UP2fSjg "ML cho người mới bắt đầu - Hồi quy Tuyến tính và Đa thức sử dụng Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "Học máy cho người mới - Hồi quy tuyến tính và đa thức sử dụng Scikit-learn")
> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về hồi quy tuyến tính và đa thức.
> 🎥 Nhấn vào hình ảnh trên để xem video giới thiệu ngắn về hồi quy tuyến tính và đa thức.
Để huấn luyện mô hình Hồi quy Tuyến tính của chúng ta, chúng ta sẽ sử dụng thư viện **Scikit-learn**.
Để huấn luyện mô hình hồi quy tuyến tính, chúng ta sẽ sử dụng thư viện **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Chúng ta bắt đầu bằng cách tách các giá trị đầu vào (đặc trưng) và đầu ra mong đợi (nhãn) thành các mảng numpy riêng biệt:
Chúng ta bắt đầu bằng cách tách giá trị đầu vào (đặc trưng) và đầu ra dự kiến (nhãn) thành các mảng numpy riêng biệt:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Lưu ý rằng chúng ta phải thực hiện `reshape` trên dữ liệu đầu vào để gói Hồi quy Tuyến tính hiểu đúng. Hồi quy Tuyến tính yêu cầu một mảng 2D làm đầu vào, trong đó mỗi hàng của mảng tương ứng với một vector của các đặc trưng đầu vào. Trong trường hợp của chúng ta, vì chỉ có một đầu vào - chúng ta cần một mảng có hình dạng N×1, trong đó N là kích thước tập dữ liệu.
> Lưu ý rằng chúng ta phải thực hiện thao tác `reshape` trên dữ liệu đầu vào để gói Linear Regression hiểu đúng. Linear Regression yêu cầu đầu vào là mảng 2 chiều, trong đó mỗi hàng tương ứng với một vector đặc trưng đầu vào. Trường hợp của chúng ta chỉ có một đầu vào, nên cần mảng có kích thước N×1, với N là số lượng data.
Sau đó, chúng ta cần chia dữ liệu thành tập huấn luyện và tập kiểm tra, để có thể xác thực mô hình sau khi huấn luyện:
Sau đó, chúng ta cần chia dữ liệu thành tập huấn luyện và tập kiểm thử để có thể kiểm tra mô hình sau khi huấn luyện:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Cuối cùng, việc huấn luyện mô hình Hồi quy Tuyến tính thực tế chỉ mất hai dòng mã. Chúng ta định nghĩa đối tượng `LinearRegression`, và khớp nó với dữ liệu của chúng ta bằng phương thức`fit`:
Cuối cùng, việc huấn luyện mô hình hồi quy tuyến tính thực sự chỉ cần hai dòng lệnh. Chúng ta tạo đối tượng `LinearRegression`, rồi điều chỉnh nó với dữ liệu bằng phương pháp`fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Đối tượng `LinearRegression` sau khi được khớp chứa tất cả các hệ số của hồi quy, có thể truy cập bằng thuộc tính `.coef_`. Trong trường hợp của chúng ta, chỉ có một hệ số, giá trị này sẽ khoảng `-0.017`. Điều này có nghĩa là giá dường như giảm một chút theo thời gian, nhưng không quá nhiều, khoảng 2 xu mỗi ngày. Chúng ta cũng có thể truy cập điểm giao của hồi quy với trục Y bằng `lin_reg.intercept_` - giá trị này sẽ khoảng `21` trong trường hợp của chúng ta, chỉ ra giá vào đầu năm.
Đối tượng `LinearRegression` sau khi thực hiện `fit` chứa tất cả các hệ số của hồi quy, có thể được truy cập thông qua thuộc tính `.coef_`. Trong trường hợp của chúng ta, chỉ có một hệ số, khoảng `-0.017`. Điều này có nghĩa là giá cả có vẻ giảm một chút theo thời gian, nhưng không quá nhiều, khoảng 2 xu mỗi ngày. Chúng ta cũng có thể truy cập điểm cắt của đường hồi quy với trục Y bằng cách sử dụng `lin_reg.intercept_` - nó sẽ khoảng `21` trong trường hợp của chúng ta, cho thấy giá vào đầu năm.
Để xem mô hình của chúng ta chính xác đến mức nào, chúng ta có thể dự đoán giá trên tập kiểm tra, và sau đó đo lường mức độ gần gũi giữa dự đoán và giá trị mong đợi. Điều này có thể được thực hiện bằng cách sử dụng chỉ số lỗi bình phương trung bình (MSE), là trung bình của tất cả các sai lệch bình phương giữa giá trị mong đợi và giá trị dự đoán.
Để xem mô hình của chúng ta chính xác như thế nào, ta có thể dự đoán giá trên một tập dữ liệu kiểm tra, sau đó đo lường mức độ gần với giá trị mong đợi. Điều này có thể được thực hiện bằng cách sử dụng chỉ số lỗi bình phương trung bình (MSE), là trung bình của tất cả các hiệu số bình phương giữa giá trị mong đợi và giá trị dự đoán.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
Lỗi của chúng ta dường như nằm ở khoảng 2 điểm, tương đương ~17%. Không quá tốt. Một chỉ số khác để đánh giá chất lượng mô hình là **hệ số xác định**, có thể được tính như sau:
Lỗi của chúng ta có vẻ khoảng 2 điểm, tức khoảng ~17%. Không quá tốt. Một chỉ số khác về chất lượng mô hình là **hệ số xác định**, có thể được lấy như sau:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Nếu giá trị là 0, điều đó có nghĩa là mô hình không xem xét dữ liệu đầu vào và hoạt động như *dự đoán tuyến tính tệ nhất*, chỉ đơn giản là giá trị trung bình của kết quả. Giá trị 1 có nghĩa là chúng ta có thể dự đoán hoàn hảo tất cả các đầu ra mong đợi. Trong trường hợp của chúng ta, hệ số xác định khoảng 0.06, khá thấp.
Nếu giá trị là 0, điều đó có nghĩa mô hình không xem xét dữ liệu đầu vào, và hoạt động như *bộ dự đoán tuyến tính tệ nhất*, là giá trị trung bình của kết quả. Giá trị 1 có nghĩa là chúng ta có thể dự đoán chính xác tất cả các kết quả mong đợi. Trong trường hợp của chúng ta, hệ số này khoảng 0.06, khá thấp.
Chúng ta cũng có thể vẽ dữ liệu kiểm tra cùng với đường hồi quy để thấy rõ hơn cách hồi quy hoạt động trong trường hợp này:
Chúng ta cũng có thể vẽ dữ liệu kiểm tra cùng với đường hồi quy để thấy rõ cách hồi quy hoạt động trong trường hợp này:
Một loại hồi quy tuyến tính khác là hồi quy đa thức. Mặc dù đôi khi có mối quan hệ tuyến tính giữa các biến - ví dụ, bí ngô có thể tích lớn hơn thì giá cao hơn - nhưng đôi khi những mối quan hệ này không thể được biểu diễn bằng mặt phẳng hoặc đường thẳng.
Một loại khác của Hồi Quy Tuyến Tính là Hồi Quy Đa Thức. Trong khi đôi khi có mối quan hệ tuyến tính giữa các biến - quả bí ngô càng to về thể tích thì giá càng cao - đôi khi những mối quan hệ này không thể biểu diễn bằng mặt phẳng hoặc đường thẳng.
✅ Đây là [một số ví dụ](https://online.stat.psu.edu/stat501/lesson/9/9.8) về dữ liệu có thể sử dụng hồi quy đa thức.
✅ Đây là [một vài ví dụ khác](https://online.stat.psu.edu/stat501/lesson/9/9.8) về dữ liệu có thể sử dụng Hồi Quy Đa Thức
Hãy xem lại mối quan hệ giữa Ngày và Giá. Biểu đồ phân tán này có nhất thiết phải được phân tích bằng một đường thẳng không? Giá cả không thể dao động sao? Trong trường hợp này, bạn có thể thử hồi quy đa thức.
Hãy nhìn lại mối quan hệ giữa Date và Price. Biểu đồ phân tán này có nhất thiết phải được phân tích bằng một đường thẳng không? Giá cả có thể dao động phải không? Trong trường hợp này, bạn có thể thử hồi quy đa thức.
✅ Đa thức là các biểu thức toán học có thể bao gồm một hoặc nhiều biến và hệ số.
✅ Đa thức là biểu thức toán học có thể bao gồm một hoặc nhiều biến và hệ số
Hồi quy đa thức tạo ra một đường cong để phù hợp hơn với dữ liệu phi tuyến tính. Trong trường hợp của chúng ta, nếu chúng ta thêm biến `DayOfYear` bình phương vào dữ liệu đầu vào, chúng ta có thể phù hợp với dữ liệu bằng một đường cong parabol, có điểm cực tiểu tại một thời điểm nhất định trong năm.
Hồi quy đa thức tạo ra một đường cong để phù hợp hơn với dữ liệu phi tuyến. Trong trường hợp của chúng ta, nếu thêm biến `DayOfYear` bình phương vào dữ liệu đầu vào, ta có thể phù hợp dữ liệu bằng một đường parabol, sẽ có điểm cực tiểu tại một thời điểm nhất định trong năm.
Scikit-learn bao gồm một [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) hữu ích để kết hợp các bước xử lý dữ liệu khác nhau. Một **pipeline** là một chuỗi các **bộ ước lượng**. Trong trường hợp của chúng ta, chúng ta sẽ tạo một pipeline đầu tiên thêm các đặc trưng đa thức vào mô hình, sau đó huấn luyện hồi quy:
Scikit-learn bao gồm một [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) hữu ích để kết hợp các bước xử lý dữ liệu khác nhau với nhau. Một **pipeline** là chuỗi các **estimator**. Trong trường hợp này, ta sẽ tạo pipeline trước tiên thêm các đặc trưng đa thức vào mô hình, sau đó đào tạo hồi quy:
```python
from sklearn.preprocessing import PolynomialFeatures
Sử dụng `PolynomialFeatures(2)` có nghĩa là chúng ta sẽ bao gồm tất cả các đa thức bậc hai từ dữ liệu đầu vào. Trong trường hợp của chúng ta, điều này chỉ có nghĩa là`DayOfYear`<sup>2</sup>, nhưng với hai biến đầu vào X và Y, điều này sẽ thêm X<sup>2</sup>, XY và Y<sup>2</sup>. Chúng ta cũng có thể sử dụng các đa thức bậc cao hơn nếu muốn.
Sử dụng `PolynomialFeatures(2)` có nghĩa là ta sẽ bao gồm tất cả các đa thức bậc hai từ dữ liệu đầu vào. Trong trường hợp của chúng ta chỉ có `DayOfYear`<sup>2</sup>, nhưng nếu có hai biến đầu vào X và Y, nó sẽ thêm X<sup>2</sup>, XY và Y<sup>2</sup>. Ta cũng có thể sử dụng đa thức bậc cao hơn nếu muốn.
Pipeline có thể được sử dụng theo cách tương tự như đối tượng `LinearRegression` ban đầu, tức là chúng ta có thể `fit` pipeline, sau đó sử dụng `predict` để nhận kết quả dự đoán. Đây là biểu đồ hiển thị dữ liệu kiểm tra và đường cong xấp xỉ:
Pipeline có thể được sử dụng giống như đối tượng `LinearRegression` gốc, tức là có thể `fit` pipeline, sau đó dùng `predict` để có kết quả dự đoán. Dưới đây là đồ thị thể hiện dữ liệu kiểm tra và đường cong xấp xỉ:
Sử dụng hồi quy đa thức, chúng ta có thể đạt được MSE thấp hơn một chút và hệ số xác định cao hơn, nhưng không đáng kể. Chúng ta cần xem xét các đặc trưng khác!
Sử dụng Hồi Quy Đa Thức, ta có thể thu được MSE thấp hơn một chút và hệ số xác định cao hơn, nhưng không đáng kể. Ta cần xem xét các đặc trưng khác!
> Bạn có thể thấy rằng giá bí ngô thấp nhất được quan sát vào khoảng Halloween. Làm thế nào bạn giải thích điều này?
> Bạn có thể thấy giá bí ngô thấp nhất được quan sát vào khoảng dịp Halloween. Bạn giải thích điều này như thế nào?
🎃 Chúc mừng, bạn vừa tạo một mô hình giúp dự đoán giá bí ngô làm bánh. Bạn có thể lặp lại quy trình tương tự cho tất cả các loại bí ngô, nhưng điều đó sẽ rất tẻ nhạt. Hãy cùng học cách đưa loại bí ngô vào mô hình của chúng ta!
🎃 Chúc mừng, bạn vừa tạo một mô hình có thể dự đoán giá bí ngô làm bánh. Bạn có thể làm tương tự cho tất cả các loại bí ngô, nhưng điều đó sẽ khá tẻ nhạt. Bây giờ hãy học cách xem xét loại bí ngô trong mô hình của chúng ta!
## Đặc trưng phân loại
## Đặc Trưng Phân Loại (Categorical Features)
Trong thế giới lý tưởng, chúng ta muốn có thể dự đoán giá cho các loại bí ngô khác nhau bằng cùng một mô hình. Tuy nhiên, cột `Variety` hơi khác so với các cột như `Month`, vì nó chứa các giá trị không phải số. Những cột như vậy được gọi là **phân loại**.
Trong thế giới lý tưởng, chúng ta muốn dự đoán giá cho các giống bí ngô khác nhau dùng cùng một mô hình. Tuy nhiên, cột `Variety` hơi khác với các cột như `Month`, vì nó chứa các giá trị không phải số. Những cột như vậy được gọi là **categorical**.
[](https://youtu.be/DYGliioIAE0 "ML cho người mới bắt đầu - Dự đoán đặc trưng phân loại với hồi quy tuyến tính")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về cách sử dụng đặc trưng phân loại.
> 🎥 Nhấp vào hình ảnh trên để xem video tổng quan ngắn về cách dùng đặc trưng phân loại.
Dưới đây là cách giá trung bình phụ thuộc vào loại bí ngô:
Ở đây bạn có thể thấy giá trung bình phụ thuộc vào giống:
<imgalt="Giá trung bình theo loại" src="../../../../translated_images/vi/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/vi/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Để đưa loại bí ngô vào mô hình, trước tiên chúng ta cần chuyển đổi nó sang dạng số, hoặc **mã hóa**. Có một số cách để thực hiện:
Để xem xét giống, trước tiên ta cần chuyển nó sang dạng số, hay còn gọi là **mã hóa**. Có vài cách để làm điều này:
* **Mã hóa số đơn giản** sẽ tạo một bảng các loại khác nhau, sau đó thay thế tên loại bằng một chỉ số trong bảng đó. Đây không phải là ý tưởng tốt nhất cho hồi quy tuyến tính, vì hồi quy tuyến tính sử dụng giá trị số thực của chỉ số và thêm nó vào kết quả, nhân với một hệ số nào đó. Trong trường hợp của chúng ta, mối quan hệ giữa số chỉ số và giá rõ ràng là không tuyến tính, ngay cả khi chúng ta đảm bảo rằng các chỉ số được sắp xếp theo một cách cụ thể.
* **Mã hóa one-hot** sẽ thay thế cột `Variety` bằng 4 cột khác nhau, mỗi cột cho một loại. Mỗi cột sẽ chứa `1` nếu hàng tương ứng thuộc loại đó, và `0` nếu không. Điều này có nghĩa là sẽ có bốn hệ số trong hồi quy tuyến tính, mỗi hệ số cho một loại bí ngô, chịu trách nhiệm cho "giá khởi điểm" (hoặc "giá bổ sung") cho loại cụ thể đó.
* **Mã hóa số đơn giản** sẽ xây dựng bảng các giống khác nhau, rồi thay thế tên giống bằng chỉ số trong bảng đó. Đây không phải ý tưởng tốt cho hồi quy tuyến tính vì hồi quy tuyến tính lấy giá trị số của chỉ số, và cộng nó vào kết quả nhân với hệ số tương ứng. Trong trường hợp này, mối quan hệ giữa số chỉ mục và giá là phi tuyến rõ ràng, ngay cả khi chúng ta sắp xếp chỉ mục theo 1 cách cụ thể.
* **Mã hóa one-hot** sẽ thay thế cột `Variety` bằng 4 cột khác nhau, mỗi cột dành một giống. Mỗi cột sẽ chứa `1` nếu dòng tương ứng thuộc giống đó, và `0` nếu không. Điều này có nghĩa hồi quy tuyến tính sẽ có bốn hệ số, mỗi hệ số ứng với một giống bí ngô, đại diện cho "giá khởi điểm" (hay chính xác hơn là "giá cộng thêm") của giống đó.
Dưới đây là mã để mã hóa one-hot một loại:
Đoạn mã dưới đây cho thấy cách ta mã hóa one-hot cho giống:
Để huấn luyện hồi quy tuyến tính sử dụng loại mã hóa one-hot làm đầu vào, chúng ta chỉ cần khởi tạo dữ liệu `X` và `y` một cách chính xác:
Để huấn luyện hồi quy tuyến tính sử dụng dạng one-hot mã hóa giống làm đầu vào, ta chỉ cần khởi tạo dữ liệu `X` và `y` đúng cách:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Phần còn lại của mã giống như những gì chúng ta đã sử dụng ở trên để huấn luyện hồi quy tuyến tính. Nếu bạn thử, bạn sẽ thấy rằng sai số bình phương trung bình gần như giống nhau, nhưng chúng ta đạt được hệ số xác định cao hơn (~77%). Để có dự đoán chính xác hơn, chúng ta có thể xem xét thêm các đặc trưng phân loại khác, cũng như các đặc trưng số như `Month` hoặc `DayOfYear`. Để có một mảng lớn các đặc trưng, chúng ta có thể sử dụng `join`:
Phần còn lại của mã giống như đã dùng trên để huấn luyện hồi quy tuyến tính. Nếu bạn thử, sẽ thấy lỗi bình phương trung bình (MSE) gần như không đổi, nhưng hệ số xác định tăng lên đáng kể (~77%). Để có dự đoán chính xác hơn nữa, ta có thể thêm các đặc trưng phân loại khác cũng như các đặc trưng số, như `Month` hay `DayOfYear`. Để có một mảng đặc trưng lớn, ta có thể dùng `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Ở đây chúng ta cũng xem xét `City` và loại `Package`, điều này cho chúng ta MSE 2.84 (10%) và hệ số xác định 0.94!
Tại đây ta cũng xem xét `City` và loại `Package`, cho kết quả MSE 2.84 (10%), và hệ số xác định 0.94!
## Tổng hợp tất cả
## Kết Hợp Toàn Bộ
Để tạo mô hình tốt nhất, chúng ta có thể sử dụng dữ liệu kết hợp (mã hóa one-hot phân loại + số) từ ví dụ trên cùng với hồi quy đa thức. Dưới đây là mã hoàn chỉnh để bạn tiện tham khảo:
Để có mô hình tốt nhất, ta có thể dùng dữ liệu kết hợp (mã hóa one-hot các đặc trưng phân loại + đặc trưng số) từ ví dụ trên cùng với Hồi Quy Đa Thức. Dưới đây là đoạn mã hoàn chỉnh để thuận tiện sử dụng:
```python
# set up training data
# thiết lập dữ liệu huấn luyện
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# thực hiện chia tập huấn luyện và kiểm tra
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Điều này sẽ cho chúng ta hệ số xác định tốt nhất gần 97% và MSE=2.23 (~8% lỗi dự đoán).
Điều này sẽ cho hệ số xác định tốt nhất gần 97%, và MSE=2.23 (~8% lỗi dự đoán).
| Mô hình | MSE | Hệ số xác định |
|---------|-----|----------------|
| `DayOfYear` Tuyến tính | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Đa thức | 2.73 (17.0%) | 0.08 |
| `Variety` Tuyến tính | 5.24 (19.7%) | 0.77 |
| Tất cả đặc trưng Tuyến tính | 2.84 (10.5%) | 0.94 |
| Tất cả đặc trưng Đa thức | 2.23 (8.25%) | 0.97 |
| Hồi Quy Tuyến Tính với `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Hồi Quy Đa Thức với `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Hồi Quy Tuyến Tính với `Variety` | 5.24 (19.7%) | 0.77 |
| Hồi Quy Tuyến Tính với tất cả đặc trưng | 2.84 (10.5%) | 0.94 |
| Hồi Quy Đa Thức với tất cả đặc trưng | 2.23 (8.25%) | 0.97 |
🏆 Chúc mừng! Bạn đã tạo bốn mô hình hồi quy trong một bài học và cải thiện chất lượng mô hình lên 97%. Trong phần cuối về hồi quy, bạn sẽ học về hồi quy Logistic để xác định các danh mục.
🏆 Làm tốt lắm! Bạn đã tạo bốn mô hình hồi quy trong một bài học, và cải thiện chất lượng mô hình lên 97%. Trong phần cuối cùng về hồi quy, bạn sẽ học về Hồi Quy Logistic để phân loại.
---
## 🚀Thử thách
## 🚀Thách Thức
Thử nghiệm một số biến khác nhau trong notebook này để xem mối tương quan ảnh hưởng như thế nào đến độ chính xác của mô hình.
Thử nghiệm nhiều biến khác nhau trong sổ tay này để xem mức độ tương quan ảnh hưởng thế nào đến độ chính xác mô hình.
## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## Ôn tập & Tự học
Trong bài học này, chúng ta đã học về hồi quy tuyến tính. Có những loại hồi quy quan trọng khác. Đọc về các kỹ thuật Stepwise, Ridge, Lasso và Elasticnet. Một khóa học tốt để học thêm là [khóa học Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
Trong bài học này, chúng ta học về Hồi Quy Tuyến Tính. Có những loại hồi quy quan trọng khác. Hãy đọc về các kỹ thuật Stepwise, Ridge, Lasso và Elasticnet. Một khóa học tốt để học thêm là [Khóa học Học thống kê của Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Bài tập
[Phát triển một mô hình](assignment.md)
[Xây dựng một Mô hình](assignment.md)
---
**Tuyên bố miễn trừ trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Tuyên bố từ chối trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, vui lòng lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sai sót. Văn bản gốc bằng ngôn ngữ nguyên bản nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm đối với bất kỳ sự hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.
Trong bài học phân loại thứ hai này, bạn sẽ khám phá thêm các cách để phân loại dữ liệu số. Bạn cũng sẽ tìm hiểu về hậu quả của việc chọn một bộ phân loại này thay vì bộ phân loại khác.
Trong bài học phân loại thứ hai này, bạn sẽ khám phá thêm nhiều cách để phân loại dữ liệu số. Bạn cũng sẽ tìm hiểu về những hệ quả khi chọn một bộ phân loại thay vì bộ phân loại khác.
## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## [Quiz trước bài giảng](https://ff-quizzes.netlify.app/en/ml/)
### Điều kiện tiên quyết
Chúng tôi giả định rằng bạn đã hoàn thành các bài học trước và có một tập dữ liệu đã được làm sạch trong thư mục `data` của bạn, được gọi là _cleaned_cuisines.csv_ trong thư mục gốc của bài học gồm 4 phần này.
Chúng tôi giả định rằng bạn đã hoàn thành các bài học trước và có một bộ dữ liệu đã làm sạch trong thư mục `data` của bạn có tên là _cleaned_cuisines.csv_ trong thư mục gốc của bộ 4 bài học này.
### Chuẩn bị
Chúng tôi đã tải tệp _notebook.ipynb_ của bạn với tập dữ liệu đã được làm sạch và đã chia nó thành các dataframe X và y, sẵn sàng cho quá trình xây dựng mô hình.
Chúng tôi đã tải tệp _notebook.ipynb_ của bạn với bộ dữ liệu đã làm sạch và chia nó thành các dataframe X và y, sẵn sàng cho quá trình xây dựng mô hình.
## Bản đồ phân loại
Trước đây, bạn đã tìm hiểu về các tùy chọn khác nhau khi phân loại dữ liệu bằng bảng cheat sheet của Microsoft. Scikit-learn cung cấp một bảng cheat sheet tương tự nhưng chi tiết hơn, giúp bạn thu hẹp các bộ ước lượng (một thuật ngữ khác cho bộ phân loại):
Trước đây, bạn đã học về các tùy chọn khác nhau khi phân loại dữ liệu bằng cheat sheet của Microsoft. Scikit-learn cung cấp một cheat sheet tương tự nhưng chi tiết hơn, giúp thu hẹp các bộ ước lượng của bạn (cũng gọi là bộ phân loại):

> Mẹo: [truy cập bản đồ này trực tuyến](https://scikit-learn.org/stable/tutorial/machine_learning_map/) và nhấp vào các đường dẫn để đọc tài liệu.

> Tip: [truy cập bản đồ này trực tuyến](https://scikit-learn.org/stable/tutorial/machine_learning_map/) và nhấp dọc theo các đường đi để đọc tài liệu.
### Kế hoạch
Bản đồ này rất hữu ích khi bạn đã hiểu rõ về dữ liệu của mình, vì bạn có thể 'đi bộ' dọc theo các đường dẫn để đưa ra quyết định:
Bản đồ này rất hữu ích khi bạn đã nắm rõ dữ liệu của mình, vì bạn có thể ‘đi’ theo các đường dẫn của nó đến một quyết định:
- Chúng ta có >50 mẫu
- Chúng ta muốn dự đoán một danh mục
- Chúng ta có dữ liệu được gắn nhãn
- Chúng ta có dữ liệu được gán nhãn
- Chúng ta có ít hơn 100K mẫu
- ✨ Chúng ta có thể chọn Linear SVC
- Nếu điều đó không hiệu quả, vì chúng ta có dữ liệu số
- Chúng ta có thể thử ✨ KNeighbors Classifier
- Nếu điều đó không hiệu quả, thử ✨ SVC và ✨ Ensemble Classifiers
- Chúng ta có thể thử ✨ KNeighbors Classifier
- Nếu vẫn không hiệu quả, thử ✨ SVC và ✨ Ensemble Classifiers
Đây là một lộ trình rất hữu ích để làm theo.
Đây là một con đường rất hữu ích để theo dõi.
## Bài tập - chia dữ liệu
Theo lộ trình này, chúng ta nên bắt đầu bằng cách nhập một số thư viện cần thiết.
Theo con đường này, chúng ta nên bắt đầu bằng cách nhập một số thư viện để sử dụng.
1. Nhập các thư viện cần thiết:
@ -50,25 +50,25 @@ Theo lộ trình này, chúng ta nên bắt đầu bằng cách nhập một s
Support-Vector clustering (SVC) là một nhánh của gia đình các kỹ thuật máy học Support-Vector machines (tìm hiểu thêm về chúng bên dưới). Trong phương pháp này, bạn có thể chọn một 'kernel' để quyết định cách phân cụm các nhãn. Tham số 'C' đề cập đến 'regularization', điều chỉnh ảnh hưởng của các tham số. Kernel có thể là một trong [nhiều loại](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); ở đây chúng ta đặt nó là 'linear' để đảm bảo rằng chúng ta sử dụng Linear SVC. Xác suất mặc định là 'false'; ở đây chúng ta đặt nó là 'true' để thu thập các ước tính xác suất. Chúng ta đặt random state là '0' để xáo trộn dữ liệu nhằm thu được xác suất.
Support-Vector clustering (SVC) là một loại trong gia đình kỹ thuật máy học Support-Vector machines (tìm hiểu thêm về chúng bên dưới). Trong phương pháp này, bạn có thể chọn một ‘kernel’ để quyết định cách nhóm nhãn. Tham số ‘C’ liên quan đến ‘regularization’ giúp điều chỉnh ảnh hưởng của các tham số. Kernel có thể là một trong [nhiều](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); ở đây chúng ta đặt là ‘linear’ để đảm bảo sử dụng linear SVC. Giá trị probability mặc định là 'false'; ở đây chúng ta đặt thành 'true' để thu thập ước lượng xác suất. Chúng ta đặt random state là '0' để xáo trộn dữ liệu cho việc tính xác suất.
### Bài tập - áp dụng Linear SVC
### Bài tập - áp dụng linear SVC
Bắt đầu bằng cách tạo một mảng các bộ phân loại. Bạn sẽ thêm dần vào mảng này khi chúng ta thử nghiệm.
Bắt đầu bằng việc tạo một mảng các bộ phân loại. Bạn sẽ thêm dần vào mảng này khi chúng ta thử nghiệm.
@ -107,11 +107,11 @@ Bắt đầu bằng cách tạo một mảng các bộ phân loại. Bạn sẽ
## Bộ phân loại K-Neighbors
K-Neighbors là một phần của gia đình các phương pháp máy học "neighbors", có thể được sử dụng cho cả học có giám sát và không giám sát. Trong phương pháp này, một số điểm được xác định trước và dữ liệu được thu thập xung quanh các điểm này để dự đoán các nhãn tổng quát cho dữ liệu.
K-Neighbors là một phần của gia đình phương pháp "neighbors" trong ML, có thể được sử dụng cho cả học có giám sát và không giám sát. Trong phương pháp này, một số điểm được xác định trước được tạo ra và dữ liệu được gom quanh các điểm này sao cho các nhãn tổng quát có thể được dự đoán cho dữ liệu.
### Bài tập - áp dụng bộ phân loại K-Neighbors
Bộ phân loại trước đó khá tốt và hoạt động tốt với dữ liệu, nhưng có thể chúng ta có thể đạt được độ chính xác tốt hơn. Thử bộ phân loại K-Neighbors.
Bộ phân loại trước đó hoạt động tốt và thích hợp với dữ liệu, nhưng có thể chúng ta có thể cải thiện độ chính xác hơn. Thử dùng bộ phân loại K-Neighbors.
1. Thêm một dòng vào mảng bộ phân loại của bạn (thêm dấu phẩy sau mục Linear SVC):
@ -119,7 +119,7 @@ Bộ phân loại trước đó khá tốt và hoạt động tốt với dữ l
'KNN classifier': KNeighborsClassifier(C),
```
Kết quả hơi kém hơn:
Kết quả hơi kém hơn một chút:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -140,13 +140,13 @@ Bộ phân loại trước đó khá tốt và hoạt động tốt với dữ l
## Bộ phân loại Support Vector
Bộ phân loại Support-Vector là một phần của gia đình [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) các phương pháp máy học được sử dụng cho các nhiệm vụ phân loại và hồi quy. SVMs "ánh xạ các ví dụ huấn luyện thành các điểm trong không gian" để tối đa hóa khoảng cách giữa hai danh mục. Dữ liệu tiếp theo được ánh xạ vào không gian này để dự đoán danh mục của chúng.
Support-Vector classifiers là một phần của gia đình phương pháp [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) trong ML, được sử dụng cho các nhiệm vụ phân loại và hồi quy. SVM "ánh xạ các ví dụ huấn luyện thành các điểm trong không gian" để tối đa hóa khoảng cách giữa hai danh mục. Dữ liệu kế tiếp được ánh xạ vào không gian này để dự đoán danh mục của chúng.
### Bài tập - áp dụng bộ phân loại Support Vector
Hãy thử đạt độ chính xác tốt hơn một chút với bộ phân loại Support Vector.
Chúng ta thử cải thiện độ chính xác một chút bằng bộ phân loại Support Vector.
1. Thêm dấu phẩy sau mục K-Neighbors, sau đó thêm dòng này:
@ -173,14 +173,14 @@ Hãy thử đạt độ chính xác tốt hơn một chút với bộ phân lo
## Bộ phân loại Ensemble
Hãy đi theo lộ trình đến cuối cùng, mặc dù thử nghiệm trước đó khá tốt. Hãy thử một số bộ phân loại 'Ensemble', cụ thể là Random Forest và AdaBoost:
Hãy tiếp tục theo đường dẫn đến cuối cùng, mặc dù thử nghiệm trước khá tốt. Hãy thử một số 'Bộ phân loại Ensemble', cụ thể là Random Forest và AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
Kết quả rất tốt, đặc biệt là với Random Forest:
Kết quả rất tốt, đặc biệt với Random Forest:
```output
Accuracy (train) for RFST: 84.5%
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Tìm hiểu về [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Tìm hiểu về [Bộ phân loại Ensemble](https://scikit-learn.org/stable/modules/ensemble.html)
Phương pháp máy học này "kết hợp các dự đoán của một số bộ ước lượng cơ bản" để cải thiện chất lượng mô hình. Trong ví dụ của chúng ta, chúng ta đã sử dụng Random Trees và AdaBoost.
Phương pháp học máy này "kết hợp dự đoán của nhiều bộ ước lượng cơ sở" để cải thiện chất lượng mô hình. Trong ví dụ của chúng ta, chúng ta sử dụng Random Trees và AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), một phương pháp trung bình, xây dựng một 'rừng' các 'cây quyết định' được thêm ngẫu nhiên để tránh overfitting. Tham số n_estimators được đặt là số lượng cây.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), một phương pháp trung bình, xây dựng một 'rừng' các 'cây quyết định' được thêm ngẫu nhiên để tránh overfitting. Tham số n_estimators được đặt bằng số cây.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) khớp một bộ phân loại với tập dữ liệu và sau đó khớp các bản sao của bộ phân loại đó với cùng tập dữ liệu. Nó tập trung vào trọng số của các mục được phân loại sai và điều chỉnh khớp cho bộ phân loại tiếp theo để sửa lỗi.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) phù hợp một bộ phân loại với bộ dữ liệu, sau đó phù hợp các bản sao của bộ phân loại đó lên cùng bộ dữ liệu. Phương pháp này tập trung vào trọng số các mục được phân loại sai và điều chỉnh phần phù hợp cho bộ phân loại tiếp theo để sửa lỗi.
---
## 🚀Thử thách
Mỗi kỹ thuật này có một số lượng lớn các tham số mà bạn có thể điều chỉnh. Nghiên cứu các tham số mặc định của từng kỹ thuật và suy nghĩ về ý nghĩa của việc điều chỉnh các tham số này đối với chất lượng mô hình.
Mỗi kỹ thuật này có rất nhiều tham số bạn có thể điều chỉnh. Hãy nghiên cứu tham số mặc định của từng kỹ thuật và suy nghĩ về việc điều chỉnh các tham số này sẽ ảnh hưởng như thế nào đến chất lượng mô hình.
## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## [Quiz sau bài giảng](https://ff-quizzes.netlify.app/en/ml/)
## Ôn tập & Tự học
Có rất nhiều thuật ngữ chuyên ngành trong các bài học này, vì vậy hãy dành một chút thời gian để xem lại [danh sách này](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) các thuật ngữ hữu ích!
Có rất nhiều thuật ngữ trong các bài học này, vì vậy hãy dành một phút để xem lại [danh sách này](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) các thuật ngữ hữu ích!
## Bài tập
## Bài tập
[Chơi với tham số](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Tuyên bố miễn trừ trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi nỗ lực đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Văn bản gốc bằng ngôn ngữ gốc nên được xem là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp của con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.
"\n---\n\n**Tuyên bố miễn trừ trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Tuyên bố từ chối trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc của nó nên được xem là nguồn tin cậy chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu nhầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Tuyên bố miễn trừ trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Tuyên bố từ chối trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, vui lòng lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được xem là nguồn chính xác và có thẩm quyền. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu nhầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
[](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
Chúng tôi có một chuỗi học tập Discord với chủ đề học cùng AI đang diễn ra, tìm hiểu thêm và tham gia cùng chúng tôi tại [Learn with AI Series](https://aka.ms/learnwithai/discord) từ ngày 18 - 30 tháng 9 năm 2025. Bạn sẽ nhận được các mẹo và thủ thuật sử dụng GitHub Copilot cho Khoa học Dữ liệu.
Chúng tôi có một chuỗi học cùng AI trên Discord, tìm hiểu thêm và tham gia chúng tôi tại [Chuỗi Học cùng AI](https://aka.ms/learnwithai/discord) từ 18 - 30 tháng 9, 2025. Bạn sẽ nhận được những mẹo và thủ thuật sử dụng GitHub Copilot cho Khoa học Dữ liệu.


# Máy Học cho Người Mới Bắt Đầu - Một Chương Trình Học
# Máy học cho Người mới bắt đầu - Chương trình đào tạo
> 🌍 Du lịch vòng quanh thế giới khi chúng ta khám phá Máy Học qua các nền văn hóa thế giới 🌍
> 🌍 Du lịch vòng quanh thế giới khi chúng ta khám phá Máy học thông qua các nền văn hóa thế giới 🌍
Các Nhà vận động điện toán đám mây tại Microsoft vui mừng giới thiệu một chương trình học 12 tuần với 26 bài học về **Máy học**. Trong chương trình này, bạn sẽ học về những gì đôi khi gọi là **máy học cổ điển**, chủ yếu sử dụng thư viện Scikit-learn và tránh học sâu, khía cạnh được đề cập trong chương trình [AI cho người mới bắt đầu](https://aka.ms/ai4beginners) của chúng tôi. Kết hợp các bài học này với chương trình ['Khoa học Dữ liệu cho Người Mới Bắt Đầu'](https://aka.ms/ds4beginners) của chúng tôi nữa nhé!
Nhóm Cloud Advocates tại Microsoft vui mừng giới thiệu chương trình đào tạo 12 tuần, 26 bài học về **Máy học**. Trong chương trình này, bạn sẽ học về cái gọi là **máy học cổ điển**, chủ yếu sử dụng thư viện Scikit-learn và tránh học sâu, được trình bày trong chương trình [AI cho Người mới bắt đầu](https://aka.ms/ai4beginners) của chúng tôi. Kết hợp những bài học này với chương trình ['Khoa học Dữ liệu cho Người mới bắt đầu'](https://aka.ms/ds4beginners) của chúng tôi nữa nhé!
Hãy đồng hành cùng chúng tôi đi vòng quanh thế giới khi chúng ta áp dụng các kỹ thuật cổ điển này vào dữ liệu từ nhiều khu vực trên thế giới. Mỗi bài học bao gồm bài kiểm tra trước và sau bài học, hướng dẫn viết để hoàn thành bài học, giải pháp, bài tập, và hơn thế nữa. Phương pháp giảng dạy dựa trên dự án cho phép bạn học trong khi xây dựng, một cách đã được chứng minh để kỹ năng mới được ghi nhớ lâu dài.
Hãy đồng hành cùng chúng tôi vòng quanh thế giới khi ứng dụng các kỹ thuật cổ điển này vào dữ liệu từ nhiều khu vực trên thế giới. Mỗi bài học bao gồm các bài kiểm tra trước và sau bài học, hướng dẫn viết để hoàn thành bài học, một giải pháp, bài tập, và hơn thế nữa. Phương pháp học dựa trên dự án của chúng tôi cho phép bạn học trong khi xây dựng, một cách đã được chứng minh giúp kỹ năng mới 'đọng lại'.
**✍️ Trân trọng cảm ơn các tác giả của chúng tôi** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu và Amy Boyd
**✍️ Xin gửi lời cảm ơn chân thành tới các tác giả** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu và Amy Boyd
**🎨 Cảm ơn các họa sĩ minh họa của chúng tôi** Tomomi Imura, Dasani Madipalli, và Jen Looper
**🎨 Cảm ơn các họa sĩ minh họa** Tomomi Imura, Dasani Madipalli và Jen Looper
**🙏 Đặc biệt cảm ơn 🙏 các sinh viên đại sứ Microsoft là tác giả, người đánh giá và người đóng góp nội dung**, đặc biệt là Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, và Snigdha Agarwal
**🙏 Lời cảm ơn đặc biệt 🙏 tới các đại sứ sinh viên Microsoft là tác giả, người đánh giá và đóng góp nội dung**, đặc biệt là Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila và Snigdha Agarwal
**🤩 Thêm lòng biết ơn lớn dành cho các Đại sứ Sinh viên Microsoft Eric Wanjau, Jasleen Sondhi và Vidushi Gupta cho các bài học R của chúng tôi!**
**🤩 Cảm ơn thêm các đại sứ sinh viên Microsoft Eric Wanjau, Jasleen Sondhi và Vidushi Gupta cho các bài học R của chúng tôi!**
# Bắt Đầu
# Bắt đầu
Thực hiện theo các bước sau:
1. **Fork Kho Lưu Trữ**: Nhấn nút "Fork" ở góc trên bên phải của trang này.
> [tìm tất cả tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Cần giúp đỡ?** Xem [Hướng dẫn khắc phục sự cố](TROUBLESHOOTING.md) để tìm giải pháp cho các vấn đề phổ biến về cài đặt, thiết lập và chạy bài học.
> 🔧 **Cần trợ giúp?** Xem [Hướng dẫn Khắc phục sự cố](TROUBLESHOOTING.md) của chúng tôi để có giải pháp cho các vấn đề phổ biến về cài đặt, thiết lập và chạy bài học.
**[Học sinh](https://aka.ms/student-page)**, để sử dụng chương trình học này, hãy fork toàn bộ kho lưu trữ vào tài khoản GitHub của bạn và hoàn thành các bài tập một mình hoặc theo nhóm:
**[Học sinh](https://aka.ms/student-page)**, để sử dụng chương trình đào tạo này, hãy fork toàn bộ kho vào tài khoản GitHub của bạn và hoàn thành các bài tập một mình hoặc theo nhóm:
- Bắt đầu với bài kiểm tra trước bài giảng.
- Đọc bài giảng và hoàn thành các hoạt động, tạm dừng và suy ngẫm ở mỗi bước kiểm tra kiến thức.
- Cố gắng tạo các dự án bằng cách hiểu bài học hơn là chỉ chạy mã giải pháp; tuy nhiên mã đó có sẵn trong các thư mục `/solution` trong mỗi bài học hướng dự án.
- Làm bài kiểm tra sau bài giảng.
- Bắt đầu với bài kiểm tra khởi động trước giờ học.
- Đọc bài giảng và hoàn thành các hoạt động, dừng lại và suy ngẫm ở mỗi bài kiểm tra kiến thức.
- Cố gắng tự tạo các dự án bằng cách hiểu bài học thay vì chạy mã giải pháp; tuy nhiên mã đó có sẵn trong thư mục `/solution` ở mỗi bài học theo dự án.
- Làm bài kiểm tra sau giờ học.
- Hoàn thành thử thách.
- Hoàn thành bài tập.
- Sau khi hoàn thành một nhóm bài học, hãy truy cập [Bảng Thảo luận](https://github.com/microsoft/ML-For-Beginners/discussions) và "học cùng nhau" bằng cách điền biểu mẫu PAT phù hợp. 'PAT' là một Công cụ Đánh Giá Tiến Độ mà bạn điền vào để củng cố việc học của mình. Bạn cũng có thể phản ứng với các PAT khác để chúng ta cùng học hỏi.
- Sau khi hoàn thành một nhóm bài học, hãy truy cập [Bảng Thảo luận](https://github.com/microsoft/ML-For-Beginners/discussions) và "học to" bằng cách điền vào rubric PAT phù hợp. 'PAT' là Công cụ Đánh giá Tiến độ, một rubric bạn điền để tiến bộ hơn trong học tập. Bạn cũng có thể phản ứng với các PAT khác để chúng ta cùng học.
> Để học sâu hơn, chúng tôi khuyên bạn làm theo các [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) module và các lộ trình học.
> Để nghiên cứu sâu hơn, chúng tôi khuyên bạn theo dõi các mô-đun và lộ trình học tập [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Giáo viên**, chúng tôi đã [bao gồm một số đề xuất](for-teachers.md) về cách sử dụng chương trình học này.
**Giáo viên**, chúng tôi đã [bao gồm một số gợi ý](for-teachers.md) về cách sử dụng chương trình đào tạo này.
---
## Video hướng dẫn
Một số bài học có dạng video ngắn. Bạn có thể tìm thấy tất cả trong bài học hoặc trên [danh sách phát ML for Beginners trên kênh Microsoft Developer YouTube](https://aka.ms/ml-beginners-videos) bằng cách nhấp vào hình bên dưới.
Một số bài học có dưới dạng video ngắn. Bạn có thể tìm tất cả các video này ngay trong bài học hoặc trên [danh sách phát ML cho Người mới bắt đầu trên kênh YouTube Microsoft Developer](https://aka.ms/ml-beginners-videos) bằng cách nhấp vào hình bên dưới.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
---
@ -91,81 +101,80 @@ Một số bài học có dạng video ngắn. Bạn có thể tìm thấy tất
> 🎥 Nhấp vào hình ảnh trên để xem video về dự án và những người sáng tạo ra nó!
> 🎥 Nhấn hình trên để xem video về dự án và những người tạo ra nó!
---
## Phương pháp giảng dạy
Chúng tôi đã chọn hai nguyên tắc sư phạm khi xây dựng chương trình này: đảm bảo nó là **dự án thực hành** và bao gồm **các bài kiểm tra thường xuyên**. Ngoài ra, chương trình có một **chủ đề chung**mang lại sự thống nhất.
Chúng tôi đã chọn hai nguyên tắc sư phạm khi xây dựng chương trình này: đảm bảo nó là dựa trên **dự án thực hành** và có **bài kiểm tra thường xuyên**. Ngoài ra, chương trình có một **chủ đề chung**để tạo sự liên kết.
Bằng cách đảm bảo nội dung phù hợp với các dự án, quá trình sẽ thu hút sinh viên hơn và tăng cường ghi nhớ các khái niệm. Thêm vào đó, một bài kiểm tra nhẹ trước bài học tạo mục tiêu cho sinh viên trong việc học một chủ đề, trong khi bài kiểm tra thứ hai sau bài học giúp củng cố kiến thức hơn nữa. Chương trình này được thiết kế linh hoạt và thú vị, có thể học toàn bộ hoặc một phần. Các dự án bắt đầu nhỏ và trở nên phức tạp hơn theo chu kỳ 12 tuần. Chương trình cũng bao gồm phần phụ chú về các ứng dụng thực tế của ML, có thể dùng như điểm cộng thêm hoặc làm cơ sở cho thảo luận.
Bằng cách đảm bảo nội dung phù hợp với các dự án, quá trình học sẽ hấp dẫn hơn với học sinh và giúp tăng khả năng ghi nhớ khái niệm. Thêm vào đó, một bài kiểm tra nhẹ trước lớp định hướng sự chú ý của học sinh vào chủ đề cần học, trong khi một bài kiểm tra thứ hai sau lớp củng cố kiến thức. Chương trình này được thiết kế linh hoạt và vui nhộn, có thể làm toàn bộ hoặc từng phần. Các dự án bắt đầu nhỏ và trở nên phức tạp hơn theo từng tuần trong chu kỳ 12 tuần. Chương trình còn có phần phụ lục về ứng dụng thực tế của ML, có thể dùng làm điểm cộng thêm hoặc để thảo luận.
> Tìm [Quy tắc ứng xử](CODE_OF_CONDUCT.md), [Góp phần](CONTRIBUTING.md), [Dịch thuật](TRANSLATIONS.md) và [Khắc phục sự cố](TROUBLESHOOTING.md). Chúng tôi hoan nghênh phản hồi mang tính xây dựng của bạn!
> Tìm các hướng dẫn của chúng tôi về [Quy tắc ứng xử](CODE_OF_CONDUCT.md), [Đóng góp](CONTRIBUTING.md), [Dịch thuật](TRANSLATIONS.md), và [Khắc phục sự cố](TROUBLESHOOTING.md). Chúng tôi hoan nghênh phản hồi xây dựng của bạn!
## Mỗi bài học bao gồm
## Mỗi bài học gồm có
- ghi chú minh họa tùy chọn
- video bổ sung tùy chọn
- sketchnote tuỳ chọn
- video bổ sung tuỳ chọn
- video hướng dẫn (chỉ một số bài)
- [bài kiểm tra khởi động trước bài học](https://ff-quizzes.netlify.app/en/ml/)
- [bài kiểm tra làm nóng trước giờ học](https://ff-quizzes.netlify.app/en/ml/)
- bài học viết
- đối với bài học dự án, hướng dẫn từng bước cách xây dựng dự án
- kiểm tra kiến thức
- đối với bài học dự án, hướng dẫn từng bước xây dựng dự án
- các bài kiểm tra kiến thức
- thử thách
- bài đọc bổ sung
- tài liệu đọc thêm
- bài tập
- [bài kiểm tra sau bài học](https://ff-quizzes.netlify.app/en/ml/)
> **Lưu ý về ngôn ngữ**: Các bài học này chủ yếu viết bằng Python, nhưng nhiều bài cũng có sẵn bằng R. Để hoàn thành bài R, hãy vào thư mục `/solution` và tìm các bài R. Chúng bao gồm phần mở rộng .rmd đại diện cho tệp **R Markdown** có thể được hiểu đơn giản là sự kết hợp giữa `các đoạn mã` (của R hoặc ngôn ngữ khác) và một `đầu đề YAML` (hướng dẫn cách định dạng đầu ra như PDF) trong một `tài liệu Markdown`. Vì vậy, nó là một khung soạn thảo tuyệt vời cho khoa học dữ liệu vì cho phép bạn kết hợp mã, đầu ra của mã và suy nghĩ của bạn bằng cách viết chúng dưới dạng Markdown. Hơn nữa, tài liệu R Markdown có thể được xuất ra các định dạng như PDF, HTML hoặc Word.
> **Lưu ý về các bài kiểm tra**: Tất cả các bài kiểm tra đều nằm trong [thư mục Quiz App](../../quiz-app), với tổng cộng 52 bài kiểm tra, mỗi bài có ba câu hỏi. Chúng được liên kết trong các bài học nhưng ứng dụng quiz có thể chạy tại chỗ; làm theo hướng dẫn trong thư mục `quiz-app` để chạy hoặc triển khai trên Azure.
| Số bài học | Chủ đề |Nhóm bài học | Mục tiêu học tập | Bài học liên kết | Tác giả |
| 01 | Giới thiệu về học máy | [Introduction](1-Introduction/README.md) | Tìm hiểu các khái niệm cơ bản về học máy | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Lịch sử học máy | [Introduction](1-Introduction/README.md) | Tìm hiểu lịch sử của lĩnh vực này | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen và Amy |
| 03 | Công bằng và học máy | [Introduction](1-Introduction/README.md) | Những vấn đề triết học quan trọng về công bằng mà học viên nên cân nhắc khi xây dựng và áp dụng mô hình ML? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Kỹ thuật học máy | [Introduction](1-Introduction/README.md) | Các kỹ thuật mà các nhà nghiên cứu ML sử dụng để xây dựng mô hình ML là gì? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris và Jen |
| 05 | Giới thiệu về hồi quy | [Regression](2-Regression/README.md) | Bắt đầu với Python và Scikit-learn cho các mô hình hồi quy | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Trực quan hóa và làm sạch dữ liệu để chuẩn bị cho ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Xây dựng các mô hình hồi quy tuyến tính và đa thức | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen và Dmitry • Eric Wanjau |
| 08 | Giá bí ngô Bắc Mỹ 🎃 | [Regression](2-Regression/README.md) | Xây dựng mô hình hồi quy logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Ứng dụng Web 🔌 | [Web App](3-Web-App/README.md) | Xây dựng một ứng dụng web để sử dụng mô hình đã được huấn luyện | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Giới thiệu về phân loại | [Classification](4-Classification/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân loại | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen và Cassie • Eric Wanjau |
| 11 | Ẩm thực Châu Á và Ấn Độ ngon lành 🍜 | [Classification](4-Classification/README.md) | Giới thiệu về các bộ phân loại | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen và Cassie • Eric Wanjau |
| 12 | Ẩm thực Châu Á và Ấn Độ ngon lành 🍜 | [Classification](4-Classification/README.md) | Thêm nhiều bộ phân loại | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen và Cassie • Eric Wanjau |
| 13 | Ẩm thực Châu Á và Ấn Độ ngon lành 🍜 | [Classification](4-Classification/README.md) | Xây dựng ứng dụng web đề xuất dựa trên mô hình của bạn | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Giới thiệu về phân nhóm | [Clustering](5-Clustering/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; Giới thiệu về phân nhóm | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Khám phá gu âm nhạc Nigeria 🎧 | [Clustering](5-Clustering/README.md) | Khám phá phương pháp phân nhóm 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 | Giới thiệu xử lý ngôn ngữ tự nhiên ☕️ | [Natural language processing](6-NLP/README.md) | Tìm hiểu kiến thức cơ bản về xử lý ngôn ngữ tự nhiên bằng cách xây dựng một bot đơn giản | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Các nhiệm vụ NLP phổ biến ☕️ | [Natural language processing](6-NLP/README.md) | Tăng cường kiến thức NLP của bạn bằng cách hiểu các nhiệm vụ phổ biến cần thiết khi xử lý cấu trúc ngôn ngữ | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Dịch thuật và phân tích cảm xúc ♥️ | [Natural language processing](6-NLP/README.md) | Dịch thuật và phân tích cảm xúc với Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Các khách sạn lãng mạn ở châu Âu ♥️ | [Natural language processing](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Các khách sạn lãng mạn ở châu Âu ♥️ | [Natural language processing](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Giới thiệu về dự báo chuỗi thời gian | [Time series](7-TimeSeries/README.md) | Giới thiệu về dự báo chuỗi thời gian | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Sử dụng điện thế giới ⚡️ - dự báo chuỗi thời gian với ARIMA | [Time series](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Sử dụng điện thế giới ⚡️ - dự báo chuỗi thời gian với SVR | [Time series](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với Bộ hồi quy Vector hỗ trợ | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Giới thiệu học tăng cường | [Reinforcement learning](8-Reinforcement/README.md) | Giới thiệu học tăng cường với Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Giúp Peter tránh con sói! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Học tăng cường Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Hậu ký | Những tình huống và ứng dụng ML thực tế | [ML in the Wild](9-Real-World/README.md) | Các ứng dụng thực tế thú vị và mang tính khám phá của học máy cổ điển | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Hậu ký | Gỡ lỗi mô hình học máy bằng bảng điều khiển RAI | [ML in the Wild](9-Real-World/README.md) | Gỡ lỗi mô hình trong học máy sử dụng thành phần bảng điều khiển Responsible AI| [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [tìm tất cả các tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
- [bài kiểm tra sau giờ học](https://ff-quizzes.netlify.app/en/ml/)
> **Ghi chú về ngôn ngữ**: Các bài học này chủ yếu được viết bằng Python, nhưng nhiều bài cũng có sẵn bằng R. Để hoàn thành một bài học R, hãy vào thư mục `/solution` và tìm các bài học bằng R. Chúng bao gồm phần mở rộng .rmd đại diện cho một tập tin **R Markdown** có thể được định nghĩa đơn giản là nhúng các `đoạn mã` (bằng R hoặc các ngôn ngữ khác) và một `đầu đề YAML` (hướng dẫn cách định dạng kết quả đầu ra như PDF) trong một `tài liệu Markdown`. Vì vậy, nó phục vụ như một khung tác giả mẫu cho khoa học dữ liệu vì nó cho phép bạn kết hợp mã của mình, kết quả của mã, và suy nghĩ của bạn bằng cách cho phép bạn viết chúng trong Markdown. Hơn nữa, các tài liệu R Markdown có thể được kết xuất thành các định dạng đầu ra như PDF, HTML hoặc Word.
> **Ghi chú về các bài kiểm tra**: Tất cả các bài kiểm tra được chứa trong [thư mục Ứng dụng Kiểm tra](../../quiz-app), có tổng cộng 52 bài kiểm tra với mỗi bài 3 câu hỏi. Chúng được liên kết từ bên trong các bài học nhưng ứng dụng kiểm tra có thể chạy cục bộ; làm theo hướng dẫn trong thư mục `quiz-app` để lưu trữ hoặc triển khai trên Azure.
| Số bài học | Chủ đề | Nhóm bài học | Mục tiêu học tập | Bài học liên kết | Tác giả |
| 01 | Giới thiệu về học máy | [Giới thiệu](1-Introduction/README.md) | Tìm hiểu các khái niệm cơ bản về học máy | [Bài học](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Lịch sử của học máy | [Giới thiệu](1-Introduction/README.md) | Tìm hiểu lịch sử nền tảng của lĩnh vực này | [Bài học](1-Introduction/2-history-of-ML/README.md) | Jen và Amy |
| 03 | Công bằng và học máy | [Giới thiệu](1-Introduction/README.md) | Những vấn đề triết học quan trọng xung quanh công bằng mà học viên nên cân nhắc khi xây dựng và áp dụng mô hình ML? | [Bài học](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Các kỹ thuật trong học máy | [Giới thiệu](1-Introduction/README.md) | Các kỹ thuật mà các nhà nghiên cứu ML sử dụng để xây dựng mô hình ML là gì? | [Bài học](1-Introduction/4-techniques-of-ML/README.md) | Chris và Jen |
| 05 | Giới thiệu về hồi quy | [Hồi quy](2-Regression/README.md) | Bắt đầu với Python và Scikit-learn cho các mô hình hồi quy | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Giá bí đỏ Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Trực quan hóa và làm sạch dữ liệu chuẩn bị cho học máy | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Giá bí đỏ Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Xây dựng mô hình hồi quy tuyến tính và đa thức | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen và Dmitry • Eric Wanjau |
| 08 | Giá bí đỏ Bắc Mỹ 🎃 | [Hồi quy](2-Regression/README.md) | Xây dựng mô hình hồi quy logistic | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Ứng dụng Web 🔌 | [Ứng dụng Web](3-Web-App/README.md) | Xây dựng một ứng dụng web để sử dụng mô hình bạn đã huấn luyện | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Giới thiệu về phân loại | [Phân loại](4-Classification/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân loại | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen và Cassie • Eric Wanjau |
| 11 | Ẩm thực ngon lành châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Giới thiệu về các bộ phân loại | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen và Cassie • Eric Wanjau |
| 12 | Ẩm thực ngon lành châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Thêm nhiều bộ phân loại | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen và Cassie • Eric Wanjau |
| 13 | Ẩm thực ngon lành châu Á và Ấn Độ 🍜 | [Phân loại](4-Classification/README.md) | Xây dựng một ứng dụng web gợi ý bằng mô hình của bạn | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Giới thiệu về phân cụm | [Phân cụm](5-Clustering/README.md) | Làm sạch, chuẩn bị và trực quan hóa dữ liệu; giới thiệu về phân cụm | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Khám phá sở thích âm nhạc Nigeria 🎧 | [Phân cụm](5-Clustering/README.md) | Khám phá phương pháp phân cụm 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 | Giới thiệu về xử lý ngôn ngữ tự nhiên ☕️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Tìm hiểu những kiến thức cơ bản về NLP bằng cách xây dựng một bot đơn giản | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Các nhiệm vụ phổ biến trong NLP ☕️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Nâng cao kiến thức NLP bằng cách hiểu các nhiệm vụ phổ biến cần xử lý cấu trúc ngôn ngữ | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Dịch thuật và phân tích cảm xúc ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Dịch thuật và phân tích cảm xúc với Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Khách sạn lãng mạn ở châu Âu ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Khách sạn lãng mạn ở châu Âu ♥️ | [Xử lý ngôn ngữ tự nhiên](6-NLP/README.md) | Phân tích cảm xúc với đánh giá khách sạn 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Giới thiệu dự báo chuỗi thời gian | [Chuỗi thời gian](7-TimeSeries/README.md) | Giới thiệu dự báo chuỗi thời gian | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Sử dụng điện toàn cầu ⚡️ - dự báo chuỗi thời gian ARIMA | [Chuỗi thời gian](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Sử dụng điện toàn cầu ⚡️ - dự báo chuỗi thời gian SVR | [Chuỗi thời gian](7-TimeSeries/README.md) | Dự báo chuỗi thời gian với Hồi quy Vector Hỗ trợ | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Giới thiệu học tăng cường | [Học tăng cường](8-Reinforcement/README.md) | Giới thiệu học tăng cường với Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Giúp Peter tránh sói! 🐺 | [Học tăng cường](8-Reinforcement/README.md) | Phòng tập học tăng cường Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Hậu ký | Các tình huống và ứng dụng ML thực tế | [ML ngoài đời](9-Real-World/README.md) | Các ứng dụng thực tế thú vị và tiết lộ của học máy cổ điển | [Bài học](9-Real-World/1-Applications/README.md) | Nhóm |
| Hậu ký | Gỡ lỗi mô hình trong ML sử dụng bảng điều khiển RAI | [ML ngoài đời](9-Real-World/README.md) | Gỡ lỗi mô hình trong Machine Learning sử dụng các thành phần bảng điều khiển Responsible AI | [Bài học](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [tìm tất cả tài nguyên bổ sung cho khóa học này trong bộ sưu tập Microsoft Learn của chúng tôi](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Truy cập ngoại tuyến
Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork kho lưu trữ này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy cục bộ của bạn, sau đó tại thư mục gốc của kho lưu trữ này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`.
Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork repo này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy tính của bạn, sau đó trong thư mục gốc của repo này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 tại localhost của bạn: `localhost:3000`.
## PDF
## Tệp PDF
Tìm tệp pdf của chương trình học có liên kết [tại đây](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Tìm tài liệu pdf của chương trình học với các liên kết [ở đây](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Các khóa học khác
## 🎒 Các Khóa Học Khác
Nhóm của chúng tôi sản xuất các khóa học khác! Hãy xem:
Đội ngũ của chúng tôi sản xuất các khóa học khác! Hãy xem:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
@ -175,20 +184,20 @@ Nhóm của chúng tôi sản xuất các khóa học khác! Hãy xem:
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Chuyên đề AI tạo sinh
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### Chuỗi AI Tạo Sinh
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Học Cốt Lõi
### Học Tập Cốt Lõi
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -199,25 +208,30 @@ Nhóm của chúng tôi sản xuất các khóa học khác! Hãy xem:
---
### Dòng Học Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
### Chuỗi Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
Nếu bạn gặp khó khăn hoặc có bất kỳ câu hỏi nào về xây dựng ứng dụng AI. Hãy tham gia cùng các học viên và lập trình viên có kinh nghiệm trong các cuộc thảo luận về MCP. Đây là một cộng đồng hỗ trợ nơi các câu hỏi được chào đón và kiến thức được chia sẻ rộng rãi.
Nếu bạn bị mắc kẹt hoặc có bất kỳ câu hỏi nào về việc xây dựng ứng dụng AI. Hãy tham gia cùng những người học và các nhà phát triển có kinh nghiệm trong các cuộc thảo luận về MCP. Đây là cộng đồng hỗ trợ nơi các câu hỏi được chào đón và kiến thức được chia sẻ một cách tự do.
- Thực hành triển khai các thuật toán một cách độc lập.
- Khám phá các bộ dữ liệu thực tế bằng cách sử dụng các khái niệm đã học.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Tuyên bố miễn trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn chính xác và có thẩm quyền. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu nhầm hay giải thích sai lệch nào phát sinh từ việc sử dụng bản dịch này.
**Tuyên bố miễn trừ trách nhiệm**:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn chính xác và có thẩm quyền. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp của con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu nhầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.