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

pull/966/head
localizeflow[bot] 3 months ago
parent 4ab4f52666
commit 6160c7e3a2

@ -90,8 +90,8 @@
"language_code": "zh-HK"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T11:24:48+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:15:19+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "zh-HK"
},
@ -168,8 +168,8 @@
"language_code": "zh-HK"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T09:28:58+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:16:17+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "zh-HK"
},
@ -552,8 +552,8 @@
"language_code": "zh-HK"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:06:34+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:13:58+00:00",
"source_file": "README.md",
"language_code": "zh-HK"
},

@ -1,136 +1,137 @@
# 使用 Scikit-learn 建立回歸模型:回歸的四種方式
# 使用 Scikit-learn 建立迴歸模型:四種迴歸方法
## 初學者注
## 初學者注
線性回歸用於我們想要預測**數值**(例如房價、溫度或銷售額)時。
它的原理是找到一條最能代表輸入特徵與輸出關係的直線
線性迴歸用於當我們想要預測<strong>數值</strong>(例如,房價、溫度或銷售額)時。
線性迴歸透過尋找一條最佳代表輸入特徵和輸出之間關係的直線來運作
在本課程中,我們著重於理解概念,之後將探索更進階的回歸技術。
![線性回歸與多項式回歸資訊圖](../../../../translated_images/zh-HK/linear-polynomial.5523c7cb6576ccab.webp)
在本課程中,我們著重於先理解概念,再探索更進階的迴歸技術。
![線性與多項式回歸資訊圖](../../../../translated_images/zh-HK/linear-polynomial.5523c7cb6576ccab.webp)
> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作
## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/)
> ### [本課程亦以 R 語言提供](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [本課程亦有 R 版本](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 介紹
到目前為止,你已經透過使用本課程中將持續使用的南瓜定價資料集,探索了回歸是什麼。你也使用 Matplotlib 將資料視覺化。
到目前為止,您已經使用南瓜價格資料集探索了什麼是迴歸,並且使用 Matplotlib 做了資料視覺化。
現在你已準備好更深入探討機器學習中的回歸。視覺化讓你了解資料的意義但機器學習的真正威力來自於_訓練模型_。模型會根據歷史資料自動捕捉資料的依賴關係並允許你對從未見過的新資料進行預測
現在您已準備深入了解機器學習的迴歸。雖然視覺化可以幫助理解資料但機器學習的真正威力來自於_訓練模型_。模型是基於歷史資料訓練而成能自動捕捉資料間的依賴關係並能對之前沒看過的新資料預測結果
本課程將介紹兩種回歸模型_基本線性回歸_及_多項式回歸_以及部分支撐這些技術的數學原理。這些模型將幫助我們根據不同的輸入資料預測南瓜價格。
在本課中您將學習兩種迴歸_基本線性迴歸_及_多項式迴歸_以及其中一些數學原理。這些模型將讓我們根據不同輸入資料預測南瓜價格。
[![ML 新手指南 - 理解線性回歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML 新手指南 - 理解線性回歸")
[![機器學習入門 - 理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "機器學習入門 - 理解線性迴歸")
> 🎥 點擊上方圖片觀看線性回歸的短片介紹
> 🎥 點擊上方圖片觀看線性迴歸的簡短影片概述
> 在整個課程中,我們假設學員的數學知識基礎不多,致力於讓不同背景的學生都能理解,因此會有筆記、🧮 計算輔助說明、圖示與其他教學工具,幫助理解。
> 在整個課程中,我們假設學員的數學知識量少,並力求讓其他領域的學生都能理解,因此會有註解、🧮 重點標註、圖解及其他學習工具協助理解。
### 先決條件
### 先備知識
到現在你應該已熟悉我們目前分析的南瓜資料結構。你可以在本課程附帶的_notebook.ipynb_ 檔案中找到已預載且預處理過的資料。此檔案中,每蒲式耳南瓜價格會顯示在一個新的資料框內。請確保你能在 Visual Studio Code 的 Kernel 中執行這些筆記本。
您應該已熟悉我們正在檢視的南瓜資料結構。這份資料已預先載入並清理好,在本課的 _notebook.ipynb_ 檔案中。檔中南瓜價格以每蒲式耳價格顯示於新的資料框中。請確保您能在 Visual Studio Code 的環境中執行這些筆記本。
### 準備
### 準備工作
提醒你,我們讀取這些資料是為了提出問題。
提醒您,載入這些資料是為了探究一些問題:
- 什麼時候是買南瓜的最好時機?
- 我可以預期迷你南瓜一箱的價格是多少?
- 我該買半蒲式耳籃裝還是一箱 1 1/9蒲式耳盒裝
我們繼續深入挖掘這些資料。
- 何時購買南瓜最划算?
- 一箱迷你南瓜的價格大約是多少?
- 應該買半蒲式耳的籃子,還是 1又1/9蒲式耳的箱子
我們繼續挖掘這些資料。
在前一堂課中,你建立了一個 Pandas 資料框,並以部分原始資料填充,價格以蒲式耳標準化。不過,這樣只能取得約 400 筆資料,而且只包含秋季的數據
前一課中,您建立了 Pandas 資料框,並填入原始資料的部分,且將價格以蒲式耳標準化。但如此一來,只收集了約 400 筆資料,且僅涵蓋秋季
看看本課程附帶筆記本中預先載入的資料。資料已預載,且初步散點圖顯示每個月的資料。也許藉由更深入清理,我們能對資料特性得到更細緻的了解
請看看本課附帶筆記本所載入的資料,我們已有初始散點圖繪出月份資料。也許透過更多清理,我們能獲得這資料本質的更多細節
## 線性歸線
## 線性歸線
你在第一課學到,線性回歸的目標是繪製一條線用以:
您在第一課學到的,線性迴歸的目標是能繪出一條線,以:
- **顯示變數間關係**。展現變數之間的關聯性
- **做出預測**。準確預測新資料點在該線上的位置
- <strong>展示變數間關係</strong>。展現變數的相互關係
- <strong>進行預測</strong>。準確預測新資料點在線上的落點
**最小平方法回歸**常用於繪製這類線。名詞「最小平方法」指的是我們試圖使模型的總誤差最小化的過程。對每筆資料,我們測量實際點與回歸線之間的垂直距離(稱為殘差)。
<strong>最小平方法迴歸</strong>通常用於繪製此類線條。所謂「最小平方法」是指最小化模型總誤差的過程。對每個資料點,我們測量該點與迴歸線間的垂直距離(稱為殘差)。
我們平方這些距離主要有兩個原因:
我們將這些距離平方,主要有兩個原因:
1. **忽略方向,只看大小**:想要將 -5 與 +5 的誤差視為相同,平方會讓所有數值變正數。
1. <strong>重視誤差大小而非方向</strong>:誤差 -5 與誤差 +5 對我們而言應同等重要,平方能將所有誤差轉為正數。
2. **懲罰異常值**:平方使較大的誤差得到加重,促使回歸線更貼近那些遠離的點。
2. <strong>對離群值加重懲罰</strong>:平方會加重較大誤差的權重,促使線條貼近偏遠點。
最後,我們將所有平方誤差加總,我們的目標是尋找一條令這個和最小(最低值)的直線,因此稱為「最小平方法」
接著將所有平方後的誤差相加,希望求出誤差和最小的那條線——這即是「最小平方法」的由來
> **🧮 數學說明**
> **🧮 為我展示數學推導**
>
> 這條線稱為_最適合線_可用[一個方程](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
>
> 這條稱為_最佳擬合直線_的線可用[公式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
>
> ```
> Y = a + bX
> ```
>
> `X` 是「解釋變數」,`Y` 是「依賴變數」。線的斜率為 `b``a` 是 y 截距,即當 `X=0``Y`值。
>
>![計算斜率](../../../../translated_images/zh-HK/slope.f3c9d5910ddbfcf9.webp)
>
> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作。
>
> 換句話說,對應我們南瓜資料的原始問題:「預測某月每蒲式耳的南瓜價格」,`X` 指的是價格,`Y` 是銷售月份。
>
>![完成式](../../../../translated_images/zh-HK/calculation.a209813050a1ddb1.webp)
>
> 計算 Y 值。如果你付約 4 美元,肯定是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作。
>
> 該方程式需展示斜率,斜率也依賴截距,或說 `X=0``Y` 所在的位置。
>
> 你可以在 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站看到計算方法,也可造訪 [此最小平方法計算機](https://www.mathsisfun.com/data/least-squares-calculator.html) 觀察數值如何影響直線。
## 相關
另一個要理解的名詞是給定 X 和 Y 變數間的**相關係數**。透過散點圖,你可以快速看出相關係數的大小。若點畫出一條整齊的線,則相關性高;若散布在 X 與 Y 之間散亂,相關性則低。
理想的線性回歸模型是那些用最小平方法計算時,相關係數接近 1遠大於 0且有回歸線的模型
✅ 執行本課程附帶的筆記本,觀察「月份對價格」散點圖。依你觀察散點圖的判斷,南瓜銷售月份與價格之間的資料是否顯示高度或低度相關?使用更細緻測量(例如年月日中第幾天)代替「月份」會改變結果嗎?
下面的程式碼假設我們已清理資料,並獲得一個名為 `new_pumpkins` 的資料框,如下
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> 清理資料的程式碼可參閱 [`notebook.ipynb`](notebook.ipynb) 檔案。我們已同前一課執行相同的清理步驟,並用表達式計算出 `DayOfYear` 欄位:
>
> `X` 為「解釋變數」;`Y` 為「應變數」。線的斜率是 `b`,而 `a` 是 y 截距,表示當 `X = 0``Y` 的數值。
>
>![計算斜率](../../../../translated_images/zh-HK/slope.f3c9d5910ddbfcf9.webp)
>
> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 提供
>
> 換句話說,針對南瓜資料的原始問題:「根據月份預測每蒲式耳南瓜價格」,`X` 是指價格而 `Y` 是銷售的月份。
>
>![完成式](../../../../translated_images/zh-HK/calculation.a209813050a1ddb1.webp)
>
> 計算 Y 的數值。如果您付約 $4就應該是四月資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 提供
>
> 計算該線的數學必須展示斜率,也取決於截距,也就是 `X = 0``Y` 所在位置。
>
> 您可參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站來觀察此計算方法;也可使用 [此最小平方法計算器](https://www.mathsisfun.com/data/least-squares-calculator.html) 來觀察數字如何影響迴歸線。
## 相關係數
另一重要詞彙是給定 `X``Y` 變數間的<strong>相關係數</strong>。透過散點圖,您能快速直觀地看見此係數。若資料點沿著一條整齊的線散佈,代表高度相關;若資料點分佈分散在 `X``Y` 之間,則代表相關性低。
一個好的線性迴歸模型,其相關係數用最小平方法計算得到的值應該是高的(接近 1而非 0
✅ 執行本課附帶的筆記本並觀察「月份對價格」的散點圖。從這散點圖視覺判斷,與南瓜銷售之月對價格的資料,看起來是高還是低相關?如果改為使用更細緻的時間尺度取代月份,例如「一年中第幾天」(自年初起的天數),結果會改變嗎?
接下來的程式中,我們假設資料已清理完畢,並產生類似以下的 `new_pumpkins` 資料框
ID | 月份 | 一年中第幾天 | 品種 | 城市 | 包裝 | 最低價 | 最高價 | 價格
---|-----|--------|------|------|-------|-------|-------|-------
70 | 9 | 267 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 15.0 | 15.0 | 13.636364
> 資料清理的程式碼請參見 [`notebook.ipynb`](notebook.ipynb)。我們執行了與上一課相同的清理步驟,並用下式計算出 `DayOfYear` 欄位:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
了解線性回歸背後的數學原理後,我們來建立一個回歸模型,看看是否能預測哪種南瓜包裝能獲得最佳價格。假如有人想買南瓜做節慶南瓜園,這資訊有助於他們優化採購計畫
現在您已了解線性迴歸的數學原理,讓我們建立迴歸模型,看看是否能預測出哪種包裝的南瓜價格最划算。想要打造南瓜節慶角落的購買者,會希望知悉這資訊以最佳化南瓜包裝的購買決策
## 尋找相關性
[![ML 新手指南 - 尋找相關性:線性回歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML 新手指南 - 尋找相關性:線性回歸的關鍵")
[![機器學習入門 - 尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "機器學習入門 - 尋找相關性:線性迴歸的關鍵")
> 🎥 點擊上方圖片觀看關於相關性的短片介紹
> 🎥 點擊上方圖片觀看相關性的簡短影片概述
從前一課你可能看過,不同月份的平均價格長這樣
在先前的課堂中,您大概已看到不同月份的平均價格如下
<img alt="各月份平均價格" src="../../../../translated_images/zh-HK/barchart.a833ea9194346d76.webp" width="50%"/>
暗示出可能存在某種相關性,我們可以嘗試訓練線性回歸模型,預測 `Month``Price` 之間,或 `DayOfYear``Price` 之間的關係。以下為後者的散點圖:
顯示應該存在某種相關性,我們可以嘗試訓練線性迴歸模型來預測 `Month``Price``DayOfYear``Price` 間的關係。下圖展示後者的散點圖:
<img alt="價格 vs 年中天數 散點圖" src="../../../../translated_images/zh-HK/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="價格與一年中第幾天散點圖" src="../../../../translated_images/zh-HK/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
我們用 `corr`數看看是否存在相關性:
我們用 `corr`式來看看有無相關性:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
看來相關性很小,對`Month`是 -0.15,對 `DayOfMonth` 為 -0.17,但可能存在另一重要關係。不同南瓜品種對應於不同價格群組。為證實此假設,讓我們用不同顏色畫出不同南瓜類別。將 `ax` 參數傳給 `scatter` 函數,可將所有點畫於同一張圖
看來相關性非常小,使用 `Month` 為 -0.15,使用 `DayOfMonth` 為 -0.17,但可能還有另一個重要的關係。價格在不同南瓜品種間似乎分成不同群聚。為了驗證此假設,我們用不同顏色來繪製各南瓜類別。透過給 `scatter` 函式傳入 `ax` 參數,可以將所有點繪製在同一張圖上
```python
ax=None
@ -139,92 +140,92 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="一年中第幾天與價格散點圖(有顏色區分)" src="../../../../translated_images/zh-HK/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="價格 vs 年中天數 散點圖(多色)" src="../../../../translated_images/zh-HK/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
調查顯示品種對總價格的影響比實際銷售日期大,我們可以用條形圖觀察:
研究顯示品種對價格影響比銷售日期更大。我們用長條圖來說明:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="品種與價格長條圖" src="../../../../translated_images/zh-HK/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="價格 vs 品種條形圖" src="../../../../translated_images/zh-HK/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
目前暫時聚焦於單一品種「派用型」,看看日期對價格有何影響:
暫時只聚焦於一種南瓜品種「派用型」,來看看日期對價格的影響:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="價格 vs 年中天數 散點圖" src="../../../../translated_images/zh-HK/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="一天中日期與價格散點圖" src="../../../../translated_images/zh-HK/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
若用 `corr` 函數計算 `Price``DayOfYear` 的相關係數,約為 `-0.27`,這表示訓練預測模型是有意義的。
如果這時用 `corr` 函式計算 `Price``DayOfYear` 的相關性,大約是 `-0.27`,意味著訓練預測模型是合理的。
> 訓練線性回歸模型前,務必確保資料已清理乾淨。線性回歸對遺漏值不適用,故應刪除所有空白單元格:
> 在訓練線性迴歸前,務必確保資料乾淨。線性迴歸對缺漏值不友善,因此最好去除所有空值儲存格:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
另一個作法是使用相對應欄位的平均值填充這些空值。
另一種作法是用對應欄位的平均值填補空白。
## 簡單線性迴歸
## 簡單線性回歸
[![機器學習入門 - 使用 Scikit-learn 線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "機器學習入門 - 使用 Scikit-learn 線性與多項式迴歸")
[![ML 新手指南 - 使用 Scikit-learn 的線性與多項式回歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML 新手指南 - 使用 Scikit-learn 的線性與多項式回歸")
> 🎥 點擊上方圖片觀看線性與多項式迴歸的簡短影片概述。
> 🎥 點擊上方圖片觀看線性與多項式回歸的短片介紹。
要訓練線性回歸模型,我們將使用**Scikit-learn**函式庫。
我們將使用 **Scikit-learn** 函式庫來訓練線性迴歸模型。
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
我們先把輸入值(特徵)與預期輸出(標籤)分別存入不同的 numpy 陣列中
首先將輸入值(特徵)與預期輸出(標籤)分開存成 numpy 陣列
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 注意我們必須對輸入資料做 `reshape`,讓線性迴歸模組可正確理解。線性迴歸要求輸入為二維陣列,陣列中每一列代表一組輸入特徵向量。由於我們只有一個輸入特徵,故需為形狀 N×1 的陣列N 為資料集大小。
> 注意,我們必須對輸入資料進行 `reshape`,才能讓線性回歸函式庫正確認識它。線性回歸期望輸入為二維陣列,每一列為一組特徵向量。由於我們只有一個輸入特徵,需將陣列調整為 Nx1 的形狀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)
```
`fit` 後的 `LinearRegression` 物件包含所有回歸的係數,可以使用 `.coef_` 屬性訪問。在我們的例子中,只有一個係數,大約為 `-0.017`。這意味著價格隨時間略微下降,但不多,大約每天下降兩仙。我們也可以使用 `lin_reg.intercept_` 訪問回歸與 Y 軸的交點 — 在我們的例子中約為 `21`,表示年初的價格。
`fit` 後的 `LinearRegression` 對象包含了回歸的所有係數,可以通過 `.coef_` 屬性訪問。在我們的情況下,只有一個係數,應該約為 `-0.017`。這意味著價格似乎隨時間略有下降,但不多,大約每天下降 2 分錢。我們還可以使用 `lin_reg.intercept_` 訪問回歸與 Y 軸的交點 — 在我們的情況下將約為 `21`,表示年初的價格。
為了查看我們模型的準確度,我們可以在測試數據集上預測價格然後測量預測值與期望值的接近程度。這可以使用均方誤差MSE指標進行該指標是所有期望與預測值平方差的平均
為了查看我們模型的準確度,我們可以在測試數據集上進行價格預測然後測量預測值與預期值的接近程度。這可以通過均方根誤差RMSE指標完成該指標是所有預期值與預測值差的平方平均的平方根
```python
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
我們的誤差約為 2 點,約為 17%。不太好。另一個模型質量指標是**決定係數**,可以這樣獲取
我們的誤差約為 2 點,約為 17%。不太理想。另一個模型質量的指標是 <strong>決定係數</strong>,可以如下獲得
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
若值為 0表示模型沒考慮輸入資料充當*最差線性預測器*,即輸出結果的均值。值為 1 表示我們能完全準確地預測所有期望輸出。在我們的例子中,係數約為 0.06,較低。
若該值為 0表示模型未考慮輸入數據行為就像<em>最差的線性預測器</em>,即結果的均值。值為 1 表示我們可以完美預測所有預期輸出。在我們的情況下,係數約為 0.06,較低。
我們也可以繪製測試數據與回歸線一起,更好地看回歸在我們案例中的效果
我們還可以將測試數據與回歸線繪製在一起,以更好地觀察回歸情況
```python
plt.scatter(X_test,y_test)
@ -235,17 +236,17 @@ plt.plot(X_test,pred)
## 多項式回歸
另一種線性回歸類型是多項式回歸。雖然有時候變數間有線性關係——例如南瓜體積越大,價格越高——有時這些關係不能用平面或直線表示。
另一種線性回歸是多項式回歸。有時變量之間呈線性關係——比如體積越大的南瓜價格越高——但有時這種關係無法用平面或直線表示。
✅ 這裡有[更多例子](https://online.stat.psu.edu/stat501/lesson/9/9.8)展示可能使用多項式回歸的數據
✅ 這裡有[一些額外範例](https://online.stat.psu.edu/stat501/lesson/9/9.8)數據適合用多項式回歸
再看看日期和價格的關係。這個散點圖是否必須用直線分析?價格不可能會波動嗎?在這種情況下,你可以試試多項式回歸。
再看看日期和價格的關係。這個散點圖是否一定要用直線分析?價格難道不會波動嗎?這種情況下,可以嘗試多項式回歸。
✅ 多項式是可能由一個或多個變數及係數組成的數學表達式
✅ 多項式是由一個或多個變量及係數構成的數學表達式
多項式回歸會創建曲線,更好地擬合非線性資料。在我們的例子中,如果將平方的 `DayOfYear` 變數加入輸入資料,我們應該能用一條拋物線來擬合數據,該曲線在年底某點有最低點
多項式回歸產生一條曲線,更好地擬合非線性數據。在我們的案例中,若將平方的 `DayOfYear` 變量加入輸入資料,應能用拋物線曲線擬合數據,曲線在一年中某點處有最小值
Scikit-learn 包含一個有用的[pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline),用來組合不同的數據處理步驟。**pipeline** 是一連串的 **estimators**。在我們的例子中,我們將創建一個 pipeline先加入多項式特徵然後訓練回歸
Scikit-learn 提供了方便的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來將不同的數據處理步驟組合起來。<strong>管道</strong>是一系列的<strong>估計器</strong>。在這裡,我們創建一個管道,先加入多項式特徵,然後進行回歸訓練
```python
from sklearn.preprocessing import PolynomialFeatures
@ -256,36 +257,36 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
使用 `PolynomialFeatures(2)` 表示我們會包含所有二次多項式。在我們的例子中,這只是 `DayOfYear`<sup>2</sup>,不過給定兩個變數 X 和 Y會加入 X<sup>2</sup>、XY 和 Y<sup>2</sup>。當然也可以使用更高次多項式。
使用 `PolynomialFeatures(2)` 表示我們將包含所有二次項多項式。對於一個變量僅為 `DayOfYear` 的平方,但對兩個輸入變量 X 和 Y 則為 X<sup>2</sup>、XY、Y<sup>2</sup>。我們也可以使用更高次多項式。
pipeline 可像原始的 `LinearRegression` 物件一樣使用,即可以 `fit` pipeline然後用 `predict` 取得預測結果。下面的圖顯示測試數據與擬合曲線:
管道可以像原始的 `LinearRegression` 對象那樣使用,即可 `fit` 管道,然後用 `predict` 獲取預測結果。下面的圖展示了測試數據和擬合的曲線:
<img alt="Polynomial regression" src="../../../../translated_images/zh-HK/poly-results.ee587348f0f1f60b.webp" width="50%" />
利用多項式回歸,我們可以得到稍低的 MSE 和較高的決定係數,但差距不大。我們還需考慮其他特徵!
使用多項式回歸,我們可以獲得稍低的均方誤差和更高的決定係數,但提升不明顯。需要考慮其他特徵!
> 你可以看到南瓜價格的最低點出現在萬聖節前後。你怎麼解釋這現象?
> 你可以看到最小南瓜價格出現在萬聖節前後。你如何解釋這種現象?
🎃 恭喜!你剛剛創建了一個可以幫助預測派用南瓜價格的模型。你大概也可以用相同方法,對其他南瓜品種做預測,但那會很繁瑣。現在,我們來學習如何讓模型考慮南瓜品種
🎃 恭喜,你剛剛建立了一個能幫助預測派南瓜價格的模型。你也可以用同樣的方法針對所有南瓜品種建立模型,但那會很繁瑣。接下來學習如何將南瓜品種納入模型考慮
## 類別特徵
理想狀況下,我們希望用同一模型預測不同南瓜品種的價格。但 `Variety` 欄位有別於 `Month` 之類的欄位,因為它包含非數值。這類欄位稱為**類別特徵**
理想狀況下,我們希望用同一模型預測不同南瓜品種的價格。但 `Variety` 欄位`Month` 不同,因為它包含非數字值。這類欄位稱為<strong>類別特徵categorical</strong>
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 點擊上圖觀看短視頻概述類別特徵的使用
> 🎥 點擊上圖觀看簡短影片,了解如何使用類別特徵
以下展示價格與品種的平均關係:
這裡展示了平均價格與品種的關係:
<img alt="Average price by variety" src="../../../../translated_images/zh-HK/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
要考慮品種,我們首先需要將它轉為數字形式,或稱**編碼**。有幾種方法:
要考慮品種,首先要將其轉為數字形式,即<strong>編碼</strong>。有幾種方法:
* 簡單的**數字編碼**會建立品種表,然後用該表索引替代品種名稱。但這不適合線性回歸,因為線性回歸會將編碼數值直接乘以某係數加入結果中,若索引與價格間明顯非線性,即使你特定排序索引,也不合適
* **獨熱編碼One-hot encoding**會把 `Variety` 欄位換成 4 個不同欄位,每個品種一欄。如果該行為該品種,該欄為 1否則為 0。這意味著線性回歸將有四個係數分別對應每種南瓜品種代表該品種的「起始價格」或更確切說是「額外價格」
* 簡單的<strong>數字編碼</strong>會建一個包含各品種的表格,然後用對應索引替換品種名稱。這對線性回歸不是最佳方案,因為線性回歸使用索引的數字值乘以係數再加總,然而指標號碼和價格的關係顯然非線性,即使索引有特定排序也無法保證
* <strong>獨熱編碼One-hot encoding</strong>則把 `Variety` 欄拆成 4 個不同欄位(每個品種一欄)。對應行屬該品種的欄位為 `1`,否則為 `0`。這意味著線性回歸中會有四個係數,分別表示各品種的「起始價格」或「額外價格」
下面程式碼展示如何使用獨熱編碼
下面代碼演示如何獨熱編碼品種
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -302,14 +303,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
要用獨熱編碼的品種作為輸入訓練線性回歸,只要正確初始化 `X``y`
要用獨熱編碼的品種作為輸入訓練線性回歸,只要正確初始化 `X``y` 數據即可
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
其餘程式碼與之前訓練線性回歸的相同。若你試試看,會發現均方誤差差不多,但決定係數大幅提高(約 77%)。想要更準確預測,可以考慮更多類別特徵,也加入數字特徵,如 `Month``DayOfYear`。要組合成一個大特徵陣列,可以使用 `join`
其餘代碼與之前用於訓練線性回歸的相同。試驗後會看到均方誤差約相同,但決定係數大幅提升至約 77%。要想更精確,也可納入更多類別特徵和數值特徵,如 `Month``DayOfYear`。為了拼成一個大特徵陣列,可使用 `join`
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +320,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
這裡也考慮了 `City``Package` 類型,使 MSE 降至 2.8410%),決定係數達 0.94
這裡我們還考慮了 `City``Package` 類型,結果為 MSE 2.84(約 10%),決定係數 0.94
## 結合所有
## 綜合應用
要打造最佳模型,可以用上述例子中組合(獨熱編碼類別 + 數字)資料搭配多項式回歸。這是完整程式碼供你方便使用
為構建最佳模型,我們可以將上述示例中一熱編碼類別+數值的特徵結合多項式回歸。以下是完整代碼,方便參考
```python
# 設置訓練數據
@ -333,7 +334,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# 進行訓練和測試
# 進行訓練和測試分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 設置並訓練流程
@ -351,7 +352,7 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
這將給我們最佳決定係數接近 97%MSE=2.23(約 8% 預測誤差)。
預計獲得近乎 97% 的最佳決定係數,以及 MSE=2.23(約 8% 預測誤差)。
| 模型 | MSE | 決定係數 |
|-------|-----|---------------|
@ -361,18 +362,18 @@ print('Model determination: ', score)
| 所有特徵 線性 | 2.84 (10.5%) | 0.94 |
| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 |
🏆 幹得好你在一課中創建了四個回歸模型並將模型質量提升至97%。在回歸的最後一章,你將學習邏輯回歸來判斷分類
🏆 做得好!本課程你建立了四種回歸模型,並將模型質量提升至 97%。最後一節關於回歸,會介紹用於分類的邏輯迴歸
---
## 🚀挑戰
在這個筆記本中測試幾個不同變數,看看相關性如何對模型準確度產生影響
試驗本筆記本中的多種變數,看看相關性如何影響模型準確度
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 回顧與自學
## 複習與自學
本課我們學習了線性回歸。還有其他重要的回歸類型。請閱讀逐步回歸、嶺回歸、套索回歸和彈性網回歸技術。有個優秀課程可深入學習:[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
本課學習了線性回歸。還有其他重要的回歸類型。請閱讀逐步回歸、嶺回歸、套索回歸和彈性網技術。學習更多可參考[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## 作業
@ -382,5 +383,5 @@ print('Model determination: ', score)
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件為使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,請注意自動翻譯可能包含錯誤或不準確之處。文件的原文版本應被視為權威來源。對於重要資訊,建議使用專業人工翻譯。我們不會對因使用本翻譯所引起的任何誤解或曲解承擔責任
本文件 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於準確性,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議聘請專業人工翻譯。對於因使用本翻譯而產生的任何誤解或錯誤詮釋,我們概不負責
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 美食分類器 1
# Cuisine classifiers 1
這節課中,你將使用上一節課保存的數據集,這是一個關於美食的平衡且乾淨的數據集。
本課程中,您將使用上一課保存的平衡且乾淨的關於不同料理類型的數據集。
你將使用這個數據集和多種分類器來_根據一組食材預測特定的國家美食_。在此過程中你將更深入了解算法如何用於分類任務
您將使用該數據集搭配各種分類器_根據一組食材預測指定的國家料理_。在此過程中您將了解更多算法如何用於分類任務的方法
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
# 準備工作
假設你已完成[第一課](../1-Introduction/README.md),請確保在根目錄 `/data` 文件夾中存在一個 _cleaned_cuisines.csv_ 文件,供這四節課使用
假設您已完成[課程 1](../1-Introduction/README.md),請確認在這四課的根目錄 `/data` 資料夾中存在一個名為 _cleaned_cuisines.csv_ 的檔案
## 練習 - 預測國家美食
## 練習 - 預測一個國家料理
1. 在本課的 _notebook.ipynb_ 文件夾中,導入該文件以及 Pandas 庫:
1. 在本課的 _notebook.ipynb_ 中,導入該文件以及 Pandas 函式庫:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
數據看起來像這樣
數據看起來如下
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 現在,導入更多庫:
1. 現在,導入更多函式庫:
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. 將 X 和 y 坐標分成兩個數據框進行訓練。`cuisine` 可以作為標籤數據框:
1. 將 X 和 y 分別劃分成兩個資料框,用於訓練。`cuisine` 可作為標籤資料框:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
它看起來像這樣:
看起來將會是這樣:
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. 使用 `drop()` 刪除 `Unnamed: 0` 列和 `cuisine` 列。將剩餘的數據保存為可訓練的特徵:
1. 丟棄 `Unnamed: 0` 欄位和 `cuisine` 欄位,呼叫 `drop()`。將剩餘資料作為可訓練特徵:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
的特徵看起來像這樣:
的特徵看起來像這樣:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,85 +75,85 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
現在你已準備好訓練你的模型!
現在,您已準備好訓練模型!
## 選擇分類器
## 選擇你的分類器
現在你的數據已清理並準備好訓練,你需要決定使用哪種算法來完成任務。
既然資料已乾淨且準備好做訓練,您得決定用哪個算法來執行這個任務。
Scikit-learn 將分類歸類為監督學習,在這個類別中,你會發現許多分類方法。[種類繁多](https://scikit-learn.org/stable/supervised_learning.html)可能會讓人一開始感到困惑。以下方法都包括分類技術:
Scikit-learn 將分類歸類於監督學習,您會在該類別下看到多種分類方法。[種類](https://scikit-learn.org/stable/supervised_learning.html)乍看之下令人眼花繚亂。以下方法都包含分類技術:
- 線性模型
- 支向量機
- 支向量機
- 隨機梯度下降
- 最近鄰
- 最近鄰
- 高斯過程
- 決策樹
- 集成方法(投票分類器)
- 多類和多輸出算法(多類多標籤分類,多類多輸出分類)
- 多類與多輸出算法(多類與多標籤分類,多類多輸出分類)
> 你也可以使用[神經網絡來分類數據](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),但這超出了本課的範圍。
> 你也可以使用[神經網絡來對數據分類](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),但那超出本課範圍。
### 選擇哪個分類器?
那麼,應該選擇哪個分類器呢通常通過嘗試多種分類器並尋找良好的結果是一種測試方法。Scikit-learn 提供了一個[並排比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html),在一個創建的數據集上比較 KNeighbors、SVC 兩種方式、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 和 QuadraticDiscrinationAnalysis並以可視化方式展示結果:
那麼,應該選哪個分類器呢通常可以嘗試多個方法看看哪個結果最好是檢測的好方法。Scikit-learn 提供了一個對比[範例](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html),在一個自己製作的數據集上比較 KNeighbors、SVC 兩種方式、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 及 QuadraticDiscrinationAnalysis並以視覺化展示結果:
![分類器比較](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> 圖片來自 Scikit-learn 的文檔
![comparison of classifiers](../../../../translated_images/zh-HK/comparison.edfab56193a85e7f.webp)
> 由 Scikit-learn 文件生成的圖表
> AutoML 可以通過在雲端運行這些比較來解決這個問題,幫助你選擇最適合你的數據的算法。試試看[這裡](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML 通過在雲端運行這些比較來巧妙解決此問題,讓您可選擇最適合自己數據的算法。試試看[這裡](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### 更好的方法
### 一個更好的方法
隨意猜測更好的方法是遵循這份可下載的[機器學習速查表](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)。在這裡,我們發現針對我們的多類問題,我們有一些選擇:
起盲目猜測,跟隨這個可下載的 [ML 速查表](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) 的想法會更好。在這裏,我們發現針對我們的多類問題,有以下幾種選擇:
![多類問題速查表](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> 微軟算法速查表的一部分,詳細介紹了多類分類選項
![cheatsheet for multiclass problems](../../../../translated_images/zh-HK/cheatsheet.07a475ea444d2223.webp)
> 微軟算法速查表的其中一部分,詳列多類分類的選項
✅ 下載這份速查表,打印出來,掛在牆上
✅ 下載這張速查表,列印出來,並掛在桌旁
### 推理
### 推理分析
讓我們看看是否可以根據我們的限制推理出不同的方法
讓我們看看能否依照我們的限制條件,推斷出不同方法的合理性
- **神經網絡太重**。考慮到我們的數據集雖然乾淨但規模較小,以及我們通過筆記本本地運行訓練的事實,神經網絡對於這項任務來說太過繁重
- **不使用二類分類器**。我們不使用二類分類器因此排除了一對多one-vs-all
- **決策樹或邏輯回歸可能有效**。決策樹可能有效,或者多類數據的邏輯回歸也可以
- **多類增強決策樹解決不同問題**。多類增強決策樹最適合非參數任務,例如設計排名的任務,因此對我們來說並不適用。
- <strong>神經網絡太重</strong>。基於我們潔淨但有限的資料集,以及我們在筆記本中本地訓練的事實,神經網絡對此任務來說過於龐大
- <strong>沒有雙類分類器</strong>。我們沒有使用雙類分類器,因此排除 one-vs-all 的方法
- <strong>決策樹或邏輯迴歸可能奏效</strong>。決策樹可能有效,或者使用適合多類資料的邏輯迴歸
- <strong>多類提升決策樹解決不同問題</strong>。多類提升決策樹適合非參數任務,例如用來建立排序的任務,因此對我們無用。
### 使用 Scikit-learn
### 使用 Scikit-learn
我們將使用 Scikit-learn 來分析數據。然而,在 Scikit-learn 中有許多方法可以使用邏輯回歸。看看[可傳遞的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
我們將使用 Scikit-learn 來分析資料。但 Scikit-learn 中有許多使用邏輯迴歸的方法。看看[必須傳入的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
基本上有兩個重要的參數 - `multi_class``solver` - 我們需要指定,當我們要求 Scikit-learn 執行邏輯回歸時。`multi_class` 值應用某種行為。solver 的值是使用哪種算法。並非所有 solver 都可以與所有 `multi_class` 值配對
主要有兩個重要參數 - `multi_class``solver` - 需要指定,當您要求 Scikit-learn 執行邏輯迴歸時。`multi_class` 設定套用特定行為。`solver` 定義使用的算法。並非所有 solver 都能搭配所有 `multi_class` 參數
根據文檔,在多類情況下,訓練算法:
根據文件,對多類情況而言,訓練算法:
- **使用一對多OvR方案**,如果 `multi_class` 選項設置`ovr`
- **使用交叉熵損失**,如果 `multi_class` 選項設置為 `multinomial`。(目前 `multinomial` 選項僅支持 lbfgssagsaganewton-cg solver。
- **使用 one-vs-rest (OvR) 機制**,當 `multi_class` 選項設定`ovr`
- <strong>使用交叉熵損失</strong>,當 `multi_class` 選項設定為 `multinomial`。(目前 `multinomial` 僅支援 lbfgs, sag, saganewton-cg solver。)"
> 🎓 這裡的“方案”可以是 'ovr'(一對多)或 'multinomial'。由於邏輯回歸實際上是為支持二類分類而設計的,這些方案使其能更好地處理多類分類任務。[來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 此處的 'scheme' 可設為 'ovr'(一對多)或 'multinomial'(多項式)。因邏輯迴歸本質設計為二分類,這些機制幫助其更好地處理多類分類任務。 [來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'solver' 被定義為“用於優化問題的算法”。[來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
> 🎓 'solver' 定義為「優化問題中所用的算法」。[來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
Scikit-learn 提供了這張表格來解釋 solver 如何處理不同數據結構帶來的挑戰:
Scikit-learn 以此表格解釋不同 solver 如何處理不同數據結構的挑戰:
![solver](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/zh-HK/solvers.5fc648618529e627.webp)
## 練習 - 分割數據
我們可以專注於邏輯回歸作為我們的第一次訓練嘗試,因為你在上一節課中剛剛學習了它。
通過調用 `train_test_split()` 將數據分為訓練和測試組:
我們可聚焦於邏輯迴歸,作為首次訓練嘗試,因為您之前課程中剛學習過它。
呼叫 `train_test_split()` 將資料分割為訓練組和測試組:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## 練習 - 應用邏輯
## 練習 - 應用邏輯
由於你正在使用多類情況你需要選擇使用什麼_方案_以及設置什麼_solver_。使用 LogisticRegression設置多類選項並使用 **liblinear** solver 進行訓練。
因為您使用多類情況,您需要選擇使用的 _機制_ 與設定的 _solver_。用 multi_class 設為 `ovr` 且 solver 設為 **liblinear** 的 LogisticRegression 做訓練。
1. 創建一個邏輯回歸,將 multi_class 設置為 `ovr`solver 設置為 `liblinear`
1. 建立一個 multi_class 設為 `ovr` 且 solver 是 `liblinear` 的邏輯迴歸
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,27 +163,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ 嘗試使用其他 solver例如 `lbfgs`,它通常設置為默認值
> 注意,當需要將數據展平時,可以使用 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函數。
準確度超過 **80%**
✅ 試試其他 solver例如經常作為預設的 `lbfgs`
1. 你可以透過測試第 50 行數據來查看此模型的效果:
> 注意,如有需要,請使用 Pandas 的 [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函式來壓平資料。
準確率相當好,超過 **80%**
1. 透過測試一筆資料(第 50 行)來看看此模型在運作時的表現:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
結果會顯示如下
列印輸出結果:
```output
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ 嘗試不同的行數並檢查結果
1. 更深入地分析,你可以檢查此預測的準確度:
✅ 更換不同的行號來檢查結果
1. 挖得更深,你可以檢查這個預測的準確性:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +196,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
結果顯示 - 印度菜是模型的最佳猜測,且概率相當高:
結果列印出來 - 印度料理是其最佳猜測,且機率相當高:
| | 0 |
| -------: | -------: |
@ -205,9 +206,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ 你能解釋為什麼模型非常確定這是印度菜嗎?
✅ 你能解釋為什麼模型相當確定這是印度料理嗎?
1. 通過打印分類報告獲取更多細節,就像你在回歸課程中所做的一樣
1. 如同迴歸課程一樣,透過列印分類報告取得更多細節
```python
y_pred = model.predict(X_test)
@ -221,24 +222,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀挑戰
在本課中,你使用清理過的數據建立了一個機器學習模型,該模型可以根據一系列食材預測國家菜系。花些時間閱讀 Scikit-learn 提供的多種分類數據選項。深入了解 "solver" 的概念,理解其背後的運作原理。
在本課程中,你使用清理過的資料建構了一個機器學習模型,可以根據一系列的食材預測國家料理。花點時間閱讀 Scikit-learn 提供的多種資料分類選項。深入了解「solver」的概念以理解幕後的運作原理。
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 回顧與自學
## 複習與自學
深入了解邏輯回歸背後的數學原理:[這篇課程](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## 作業
深入探究邏輯斯迴歸背後的數學原理,請參閱[此課程](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## 作業
[研究 solvers](assignment.md)
[研究 solver](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不承擔因使用此翻譯而引起的任何誤解或曲解之責任。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -10,14 +10,14 @@
### 🌐 多語言支援
#### 透過 GitHub Action 支援(自動化及隨時保持最新)
#### 透過 GitHub Action 支援(自動且永遠保持最新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[阿拉伯語](../ar/README.md) | [孟加拉語](../bn/README.md) | [保加利亞語](../bg/README.md) | [緬甸語](../my/README.md) | [中文(簡體)](../zh-CN/README.md) | [中文(繁體,香港)](./README.md) | [中文(繁體,澳門)](../zh-MO/README.md) | [中文(繁體,台灣)](../zh-TW/README.md) | [克羅地亞語](../hr/README.md) | [捷克語](../cs/README.md) | [丹麥語](../da/README.md) | [荷蘭語](../nl/README.md) | [愛沙尼亞語](../et/README.md) | [芬蘭語](../fi/README.md) | [法語](../fr/README.md) | [德語](../de/README.md) | [希臘語](../el/README.md) | [希伯來語](../he/README.md) | [印地語](../hi/README.md) | [匈牙利語](../hu/README.md) | [印尼語](../id/README.md) | [義大利語](../it/README.md) | [日語](../ja/README.md) | [卡納達語](../kn/README.md) | [高棉語](../km/README.md) | [韓語](../ko/README.md) | [立陶宛語](../lt/README.md) | [馬來語](../ms/README.md) | [馬拉雅拉姆語](../ml/README.md) | [馬拉地語](../mr/README.md) | [尼泊爾語](../ne/README.md) | [奈及利亞洋泾浜語](../pcm/README.md) | [挪威語](../no/README.md) | [波斯語 (法爾西語)](../fa/README.md) | [波蘭語](../pl/README.md) | [葡萄牙語 (巴西)](../pt-BR/README.md) | [葡萄牙語 (葡萄牙)](../pt-PT/README.md) | [旁遮普語 (古爾穆奇文)](../pa/README.md) | [羅馬尼亞語](../ro/README.md) | [俄語](../ru/README.md) | [塞爾維亞語 (西里爾字母)](../sr/README.md) | [斯洛伐克語](../sk/README.md) | [斯洛維尼亞語](../sl/README.md) | [西班牙語](../es/README.md) | [斯瓦希里語](../sw/README.md) | [瑞典語](../sv/README.md) | [他加祿語 (菲律賓語)](../tl/README.md) | [泰米爾語](../ta/README.md) | [泰盧固語](../te/README.md) | [泰語](../th/README.md) | [土耳其語](../tr/README.md) | [烏克蘭語](../uk/README.md) | [烏爾都語](../ur/README.md) | [越南語](../vi/README.md)
[阿拉伯文](../ar/README.md) | [孟加拉文](../bn/README.md) | [保加利亞文](../bg/README.md) | [緬甸語](../my/README.md) | [中文(簡體)](../zh-CN/README.md) | [中文(繁體,香港)](./README.md) | [中文(繁體,澳門)](../zh-MO/README.md) | [中文(繁體,台灣)](../zh-TW/README.md) | [克羅地亞文](../hr/README.md) | [捷克文](../cs/README.md) | [丹麥文](../da/README.md) | [荷蘭文](../nl/README.md) | [愛沙尼亞文](../et/README.md) | [芬蘭文](../fi/README.md) | [法文](../fr/README.md) | [德文](../de/README.md) | [希臘文](../el/README.md) | [希伯來文](../he/README.md) | [印地文](../hi/README.md) | [匈牙利文](../hu/README.md) | [印尼文](../id/README.md) | [義大利文](../it/README.md) | [日文](../ja/README.md) | [卡納達文](../kn/README.md) | [高棉文](../km/README.md) | [韓文](../ko/README.md) | [立陶宛文](../lt/README.md) | [馬來文](../ms/README.md) | [馬拉雅拉姆文](../ml/README.md) | [馬拉地文](../mr/README.md) | [尼泊爾文](../ne/README.md) | [奈及利亞俚語](../pcm/README.md) | [挪威文](../no/README.md) | [波斯文(法爾西語)](../fa/README.md) | [波蘭文](../pl/README.md) | [葡萄牙文(巴西)](../pt-BR/README.md) | [葡萄牙文(葡萄牙)](../pt-PT/README.md) | [旁遮普文(古魯穆奇體)](../pa/README.md) | [羅馬尼亞文](../ro/README.md) | [俄文](../ru/README.md) | [塞爾維亞文(西里爾字母)](../sr/README.md) | [斯洛伐克文](../sk/README.md) | [斯洛文尼亞文](../sl/README.md) | [西班牙文](../es/README.md) | [斯瓦希里文](../sw/README.md) | [瑞典文](../sv/README.md) | [他加祿文(菲律賓語)](../tl/README.md) | [泰米爾文](../ta/README.md) | [泰盧固文](../te/README.md) | [泰文](../th/README.md) | [土耳其文](../tr/README.md) | [烏克蘭文](../uk/README.md) | [烏爾都文](../ur/README.md) | [越南文](../vi/README.md)
> **偏好本地克隆?**
> **本地克隆?**
>
> 此儲存庫包含 50 種語言翻譯,會大幅增加下載大小。若要無翻譯版本克隆,請使用稀疏簽出
> 此儲存庫包含超過 50 種語言翻譯,會大幅增加下載大小。若想不含翻譯克隆,請使用 sparse checkout
>
> **Bash / macOS / Linux:**
> ```bash
@ -26,152 +26,152 @@
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
>
> **CMDWindows**
> **CMD (Windows):**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 這讓你以更快的速度取得完成課程所需的所有內容。
> 這樣你能以更快速度完成下載,並擁有完成課程所需的所有內容。
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### 加入我們的社
#### 加入我們的社
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
我們有一個持續進行中的 Discord AI 學習系列,詳情及加入請至 [AI 學習系列](https://aka.ms/learnwithai/discord),活動時間為 2025 年 9 月 18 日至 30 日。你將會學習使用 GitHub Copilot 進行資料科學的提示與技巧
我們推出了 Discord 上的「與 AI 一起學習」系列,了解詳情並於 2025 年 9 月 18 至 30 日加入我們,網址:[Learn with AI Series](https://aka.ms/learnwithai/discord)。你將學習如何用 GitHub Copilot 於資料科學中獲得小技巧和秘訣
![Learn with AI series](../../translated_images/zh-HK/3.9b58fd8d6c373c20.webp)
# 初學者機器學習課程
# 初學者機器學習課程大綱
> 🌍 藉由探索世界各地文化,一同環遊機器學習的世界 🌍
> 🌍 環遊世界,透過世界文化探索機器學習 🌍
微軟的 Cloud Advocates 很高興能提供一套為期 12 週、共 26 章課程,主題為 <strong>機器學習</strong>。本課程主要介紹所謂的 <strong>經典機器學習</strong>,主要使用 Scikit-learn 函式庫,並避免涵蓋深度學習部份;深度學習主題可參考我們的 [AI 初學者課程](https://aka.ms/ai4beginners)。你也可以搭配我們的 [資料科學初學者課程](https://aka.ms/ds4beginners)。
微軟的 Cloud Advocates 很高興提供一套 12 週,共 26 節課的機器學習課程。在本課程中,你會學習所謂的 <strong>經典機器學習</strong>,主要使用 Scikit-learn 函式庫,避開深度學習,後者可在我們的 [AI初學者課程](https://aka.ms/ai4beginners)中學習。這些課程也可搭配我們的 ['初學者資料科學'課程](https://aka.ms/ds4beginners)使用!
我們一起環遊世界,將這些經典機器學習技術應用到世界各地的資料。每個課程包含課前與課後小測驗、完成課程的文字說明、解答、作業等。我們以專案為導向的教學法,讓你在實作中學習,是幫助新技能「牢記」的有效方法
著我們環遊世界,將這些經典技術應用於各地的數據。每節課都包含課前及課後小測驗、書面指引、解答、作業等。我們的專案導向教學法讓你在動手實做中學習,是幫助新技能內化的有效方式
**✍️ 衷心感謝所有作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 和 Amy Boyd
**✍️ 衷心感謝作者團隊:** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu 和 Amy Boyd
**🎨 同時感謝插畫家** Tomomi Imura、Dasani Madipalli、Jen Looper
**🎨 亦感謝插畫師:** Tomomi Imura, Dasani Madipalli, 和 Jen Looper
**🙏 特別感謝 🙏 微軟學生大使作者、審稿及內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 及 Snigdha Agarwal
**🙏 特別感謝微軟學生大使作者、審核與內容貢獻者,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 和 Snigdha Agarwal**
**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 所提供的 R 課程內容**
**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 和 Vidushi Gupta 協助 R 課程**
# 開始使用
依照以下步驟操作
1. **Fork 儲存庫**:點擊頁右上角的「Fork」按鈕。
2. **Clone 儲存庫** `git clone https://github.com/microsoft/ML-For-Beginners.git`
依照以下步驟:
1. **Fork 儲存庫**:點擊頁右上角的「Fork」按鈕。
2. **Clone 儲存庫** `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [查看本課程所有額外資源,請參考我們的 Microsoft Learn 集合](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [在我們的 Microsoft Learn 集合中尋找本課程所有附加資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **需要協助?** 請查閱 [故障排除指南](TROUBLESHOOTING.md),了解安裝、設定及執行課程時的常見問題解決方案
> 🔧 **需要幫助?** 請查看我們的 [故障排除指南](TROUBLESHOOTING.md),協助解決安裝、設定和執行課程常見問題
**[學生們](https://aka.ms/student-page)**,要使用這套課程,請先 fork 整個倉庫到你自己的 GitHub 帳號,再自行或與小組完成練習:
**[學生](https://aka.ms/student-page)**,使用本課程時,請 fork 整個儲存庫到你的 GitHub 帳號,自行或與組員一起完成練習:
- 先完成課前小測驗
- 閱讀課程內容並完成活動,每遇知識檢核時暫停思考。
- 嘗試依課程理解自行完成專案,而不是僅使用解答程式碼;當然各專案課程中 `/solution` 資料夾會有程式碼可參考
- 完成課後小測
- 挑戰任務
- 先從課前小測開始
- 閱讀課程內容並完成任務,每個知識檢測時刻停思考。
- 嘗試理解課程內容後自己動手創作專案,解答程式碼位於每個專案課程中的 `/solution` 資料夾
- 完成課後小測。
- 完成挑戰題
- 完成作業。
- 授課組別完成後,拜訪 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions),藉由填寫對應的 PAT 評量表「大聲學習」。PAT 是進度評量工具,是你填寫來促進學習的評量表,你也可以對其他人的 PAT 進行回應,大家共同進步。
- 完成一組課程後,前往 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions),透過填寫合適的 PAT 評分表「大聲學習」。'PAT' 是進度評估工具,透過表格幫助你學習。你也可以回應他人 PAT一起進步。
> 進階學習,我們推薦以下 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組學習路徑。
> 進一步學習,我們推薦參考以下 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 模組學習路徑。
<strong>老師們</strong>,我們提供了 [一些建議](for-teachers.md) 供您作為此課程的教學參考。
<strong>教師們</strong>,我們有在 [使用建議](for-teachers.md) 提供一些參考。
---
## 影片導覽
## 影片教學
部分課程有短片形式的教學影片,可在課程中內嵌觀看,或至 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 查看,點擊下方圖片即可
部分課程提供短影片說明。你可於課程中直接觀看,或至 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos)點擊下方圖片觀看
[![ML for beginners banner](../../translated_images/zh-HK/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
---
## 團隊介紹
## 認識團隊
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**GIF 製作** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
**GIF 製作** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 點擊上方圖片觀看有關專案及其成員的影片
> 🎥 點擊上方圖片觀看本專案及團隊影片介紹
---
## 教學法
我們在設計本課程時,選擇了兩項教學原則:確保課程是實作導向的 <strong>專案教學法</strong>,以及包含 <strong>頻繁的小測驗</strong>。此外,課程一個統一的 <strong>主題</strong> 以增強整體性。
本課程設計遵循兩大教學原則:確保內容是實作 <strong>專案導向</strong>,並包含 <strong>頻繁的小測驗</strong>。此外,課程有統一的 <strong>主題</strong> ,增強一致性。
利用專案 確保內容和實作相結合,能讓學生參與度更高,且加強概念記憶。課前的低壓小測驗幫助學生對主題設定學習意圖,課後第二次測驗則確保知識的鞏固。此課程設計靈活有趣,可完整修習或選擇部分學習。專案由淺入深,在 12 周週期結束時逐漸複雜。課程末還包含關於機器學習真實世界應用的後記,可作為額外加分或討論基礎
透過專案對應課程內容讓學習更投入並提升觀念記憶。課前低壓力小測目的是啟發學習意圖課後測驗則有助鞏固記憶。本課程設計靈活有趣可全程參與或挑選部分學習。專案由淺入深12 週結束時達較高難度。本課程另附機器學習真實應用的補充章節,可用做額外加分或討論話題
> 請參閱我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](..) 及 [故障排除](TROUBLESHOOTING.md) 指南。我們歡迎您的建設性回饋!
> 查看我們的 [行為守則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](..) 及 [故障排除](TROUBLESHOOTING.md) 文件,我們歡迎你的建設性反饋!
## 每課程包含
## 每課程包含
- 選擇性手繪筆記
- 選擇性補充影片
- 影片導覽(部分課程)
- 可選的手繪筆記
- 可選的附加影片
- 影片講解(部分課程)
- [課前暖身小測驗](https://ff-quizzes.netlify.app/en/ml/)
- 書面課程說明
- 專案課程提供逐步指引教你如何建置專案
- 知識檢
- 挑戰任務
- 補充閱讀資料
- 書面課程內容
- 專案課程時,逐步專案建立指南
- 知識檢
- 挑戰
- 補充閱讀
- 作業
- [課後小測驗](https://ff-quizzes.netlify.app/en/ml/)
> <strong>關於語言的說明</strong>:這些課程主要使用 Python 撰寫,但也有許多課程提供 R 版本。若要完成 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。它們包含有 .rmd 副檔名,代表 **R Markdown** 檔案,可簡單定義為將 `code chunks` R 或其他語言程式碼區塊)和 `YAML header`(指導如何格式化輸出例如 PDF嵌入於 `Markdown 文件` 中。因此,它作為資料科學的優良撰寫框架,讓你能結合程式碼、程式輸出及筆記,並以 Markdown 編寫。此外R Markdown 檔案可以輸出為 PDF、HTML 或 Word 等格式。
> <strong>關於測驗的說明</strong>:所有小測驗皆包含於 [Quiz App folder](../../quiz-app) 中,共有 52 個小測驗,每個包含三個問題。這些小測驗會自課程中連結,但 Quiz App 也能在本機端執行;請依照 `quiz-app` 資料夾中的說明,在本機架設或部署至 Azure。
| 課程編號 | 主題 | 課程群組 | 學習目標 | 連結課程 | 作者 |
| :------: | :------------------------------------------------------------: | :--------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------: |
| 01 | 機器學習入門 | [Introduction](1-Introduction/README.md) | 學習機器學習背後的基本概念 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 認識此領域的歷史背景 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen 與 Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 建立與應用機器學習模型時,學生應考慮的重要公平性哲學議題 | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | 機器學習研究者用來建立模型的技術 | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris 與 Jen |
| 05 | 迴歸入門 | [Regression](2-Regression/README.md) | 使用 Python 與 Scikit-learn 入門迴歸模型 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 可視化與清理資料,為機器學習做準備 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立線性與多項式迴歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen 和 Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立邏輯迴歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 網頁應用 🔌 | [Web App](3-Web-App/README.md) | 建立一個網頁應用,使用你訓練好的模型 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類入門 | [Classification](4-Classification/README.md) | 清理、準備並可視化資料;分類介紹 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen 和 Cassie • Eric Wanjau |
| 11 | 美味的亞洲印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器介紹 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen 和 Cassie • Eric Wanjau |
| 12 | 美味的亞洲印度料理 🍜 | [Classification](4-Classification/README.md) | 更多分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen 和 Cassie • Eric Wanjau |
| 13 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 使用你的模型建立推薦網頁應用 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 叢集入門 | [Clustering](5-Clustering/README.md) | 清理、準備並可視化資料;叢集介紹 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索奈及利亞音樂喜好 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-Means 叢集演算法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理入門 ☕️ | [Natural language processing](6-NLP/README.md) | 透過建立簡易機器人學習 NLP 基礎 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 深入瞭解 NLP掌握處理語言結構時常見的重要任務 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情緒分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用 Jane Austen 進行情緒分析與翻譯 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 歐洲浪漫旅館 ♥️ | [Natural language processing](6-NLP/README.md) | 旅館評論情緒分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 歐洲浪漫旅館 ♥️ | [Natural language processing](6-NLP/README.md) | 旅館評論情緒分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測入門 | [Time series](7-TimeSeries/README.md) | 時間序列預測介紹 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 全球用電量 ⚡️ - 使用 ARIMA 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 全球用電量 ⚡️ - 使用 SVR 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支持向量回歸SVR進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習入門 | [Reinforcement learning](8-Reinforcement/README.md) | 使用 Q-Learning 介紹強化學習 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 幫助 Peter 避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 强化学习 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 後記 | 現實世界的機器學習情境與應用 | [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) | Ruth Yakubu |
> [在我們的 Microsoft Learn 集合中查找本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線使用
您可以使用 [Docsify](https://docsify.js.org/#/) 離線瀏覽本文件。將此 repo 分叉,並在本機安裝 [Docsify](https://docsify.js.org/#/quickstart),接著在此 repo 根目錄中輸入 `docsify serve`。網站將在本機的 3000 埠提供服務`localhost:3000`。
> <strong>關於語言的說明</strong>:這些課程主要以 Python 編寫,但許多也有提供 R 語言版本。要完成 R 課程,請前往 `/solution` 資料夾尋找 R 課程。它們包含一個 .rmd 副檔名,代表 **R Markdown** 檔案,這可簡單定義為在一個 `Markdown 文件` 中嵌入 `程式碼區塊`R 或其他語言)和一個 `YAML 標頭`(指導如何格式化輸出,如 PDF。因此它是數據科學的典範創作框架因為它允許你將程式碼、輸出結果和思考結合起來並允許你用 Markdown 書寫。此外R Markdown 文件可以渲染成 PDF、HTML 或 Word 等輸出格式。
> <strong>關於測驗的說明</strong>:所有測驗都包含在 [Quiz App folder](../../quiz-app) 中,共 52 組,每組有三個問題。它們在課程中有連結,但測驗應用程式可以本地執行;請遵循 `quiz-app` 資料夾中的指示進行本地架設或部署到 Azure。
| 課程編號 | 主題 | 課程分組 | 學習目標 | 合作課程 | 作者 |
| :------: | :------------------------------------------------------------: | :------------------------------------------: | ---------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------: |
| 01 | 機器學習簡介 | [Introduction](1-Introduction/README.md) | 學習機器學習的基本概念 | [課程](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 學習此領域的歷史背景 | [課程](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 建構及應用機器學習模型時,學生應考慮哪些重要的公平性哲學議題? | [課程](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | 機器學習研究者用哪些技術來建構機器學習模型? | [課程](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回歸模型介紹 | [Regression](2-Regression/README.md) | 使用 Python 和 Scikit-learn 入門回歸模型 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 進行視覺化以及資料清理以準備機器學習 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建構線性與多項式回歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建構邏輯斯迴歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 網頁應用程式 🔌 | [Web App](3-Web-App/README.md) | 建構網頁應用程式以使用你的訓練模型 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類介紹 | [Classification](4-Classification/README.md) | 清理、準備並視覺化你的資料;分類概論 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亞洲印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器介紹 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亞洲印度料理 🍜 | [Classification](4-Classification/README.md) | 更多分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亞洲和印度料理 🍜 | [Classification](4-Classification/README.md) | 使用你的模型建構推薦網頁應用程式 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 分群介紹 | [Clustering](5-Clustering/README.md) | 清理、準備並視覺化你的資料;分群介紹 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索尼日利亞音樂喜好 🎧 | [Clustering](5-Clustering/README.md) | 探索 K 均值分群法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理介紹 ☕️ | [Natural language processing](6-NLP/README.md) | 透過建立簡單機器人學習 NLP 基礎知識 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 增進 NLP 知識,了解處理語言結構時所需的常見任務 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用簡·奧斯汀進行翻譯與情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 歐洲浪漫旅館 ♥️ | [Natural language processing](6-NLP/README.md) | 透過旅館評論進行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 歐洲浪漫旅館 ♥️ | [Natural language processing](6-NLP/README.md) | 透過旅館評論進行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測介紹 | [Time series](7-TimeSeries/README.md) | 時間序列預測介紹 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界用電量 ⚡️ - 使用 ARIMA 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界用電量 ⚡️ - 使用 SVR 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支援向量回歸器進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習介紹 | [Reinforcement learning](8-Reinforcement/README.md) | 使用 Q-Learning 介紹強化學習 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 幫助彼得避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 附錄 | 現實世界中的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 有趣且啟發性的經典機器學習真實應用 | [課程](9-Real-World/1-Applications/README.md) | Team |
| 附錄 | 使用 RAI 控制台進行機器學習模型除錯 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible AI 控制台元件進行機器學習模型除錯 | [課程](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我們的 Microsoft Learn 系列中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線存取
你可以使用 [Docsify](https://docsify.js.org/#/) 離線瀏覽此文件。Fork 此倉庫,在本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在此倉庫根目錄下執行 `docsify serve`。網站會在本地主機localhost 3000 埠上提供`localhost:3000`。
## PDF 檔案
可在 [此處](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) 下載包含連結的課程大綱 PDF
在此處找到帶有連結的課程大綱 pdf [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。
## 🎒 其他課程
我們團隊製作其他課程!請參考:
我們團隊製作其他課程!請參考:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -215,22 +215,33 @@
## 尋求協助
如果你遇到困難或對構建 AI 應用程式有任何疑問。加入其他學習者及經驗豐富的開發者,一同參與 MCP 的討論。這是一個支援性的社群,歡迎提問並自由分享知識
如果您在學習機器學習或構建 AI 應用時遇到困難或有問題,別擔心 — 有幫助可以取得
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
您可以與其他學習者和開發者一起參與討論、提問,以及分享您的想法。
- 加入社群,向他人提問並一起學習
- 討論機器學習概念和專案想法
- 獲取有經驗開發者的指導
有支援性的社群是成長技能和更快解決問題的好方法。
如果你有產品反饋或在開發時遇到錯誤,請造訪:
[Microsoft Foundry Discord 社群](https://discord.gg/nTYy5BXMWG)
如果您遇到錯誤、異常或有改進建議,也可以在此庫中開啟 **Issue** 來回報問題。
如需產品反饋或搜尋現有社群帖子,請訪問開發者論壇:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 額外學習提示
- 每課後檢閱筆記本,以加深理解。
- 練習自行實作算法。
- 使用已學概念探索真實世界數據集。
## 其他學習建議
- 每課後複習筆記本以加深理解。
- 練習自己實作演算法。
- 運用所學概念探索真實世界資料集。
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意自動翻譯可能存在錯誤或不準確之處。原始文件之母語版本應視為權威資料。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引致的任何誤解或誤釋負責。
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "zh-MO"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T11:21:57+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:11:02+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "zh-MO"
},
@ -168,8 +168,8 @@
"language_code": "zh-MO"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-06T09:16:12+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:12:07+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "zh-MO"
},
@ -552,8 +552,8 @@
"language_code": "zh-MO"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:04:36+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:09:33+00:00",
"source_file": "README.md",
"language_code": "zh-MO"
},

@ -1,136 +1,136 @@
# 使用 Scikit-learn 建立回歸模型:回歸四種方法
# 使用 Scikit-learn 建立回歸模型:回歸四種方法
## 初學者筆記
線性回歸用於當我們想要預測一個**數值**(例如,房價、溫度或銷售額)時。
它通過尋找一條最好地代表輸入特徵與輸出之間關係的直線來工作。
線性回歸用於當我們想預測一個<strong>數值</strong>(例如,房價、溫度或銷售量)。
它通過尋找一條最代表輸入特徵與輸出之間關係的直線來工作。
這堂課中,我們專注於理解概念,然後再探索更高級的回歸技術。
![線性與多項式回歸資訊圖](../../../../translated_images/zh-MO/linear-polynomial.5523c7cb6576ccab.webp)
本課程中,我們專注於理解概念,然後進一步探索更進階的回歸技術。
![線性回歸與多項式回歸資訊圖](../../../../translated_images/zh-MO/linear-polynomial.5523c7cb6576ccab.webp)
> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作
## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/)
> ### [這堂課另有 R 語言版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 介紹
> ### [本課程亦提供 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 介紹
迄今為止,你已經透過我們將在此課程中使用的南瓜價格資料集瞭解了什麼是回歸。你也使用 Matplotlib 做了視覺化。
到目前為止,你已經透過南瓜定價資料集(本課程將持續使用)探討了回歸的意義。你也使用 Matplotlib 將其視覺化。
現在你已準備好深入了解機器學習中的回歸。雖然視覺化讓你能理解資料但機器學習的真正威力來自於_訓練模型_。模型在歷史資料上訓練以自動捕捉資料依賴關係並能預測新資料的結果這些新資料是模型之前未見過的
現在你已準備好深入探討機器學習中的回歸。雖然視覺化可以幫助你理解數據機器學習的真正力量來自於_訓練模型_。模型在歷史數據上訓練以自動捕捉數據之間的依賴關係並允許你對模型未見過的新數據進行預測
在這個課程中你將學習兩種類型的回歸_基礎線性回歸_和_多項式回歸_以及這些技術背後的一些數學。這些模型將允許我們根據不同的輸入資料來預測南瓜價格。
本課將介紹兩種回歸_基本線性回歸_與_多項式回歸_以及一些這些技術背後的數學原理。這些模型將讓我們根據不同輸入資料預測南瓜價格。
[![機器學習初學者 - 了解線性回歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "機器學習初學者 - 了解線性回歸")
[![初學者機器學習 - 理解線性回歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初學者機器學習 - 理解線性回歸")
> 🎥 點擊上述圖片觀看線性回歸的短片概述
> 🎥 點擊上圖觀看線性回歸的短片介紹
> 在整個課程中,我們假設數學知識最低限度,並力求讓來自其他領域的學生易於理解,因此請留意筆記、🧮 提示、圖示及其他學習工具以輔助理解。
> 整個課程假設對數學知識要求低,並致力於讓來自不同領域的學生都能理解,因此你會看到筆記、🧮 註解、圖解及其他學習工具協助理解。
### 先備知識
### 前置知識
你現在應該熟悉我們正在檢視的南瓜資料結構。課程中的 _notebook.ipynb_ 檔案已預先載入且清理過該資料。該檔案中,南瓜的價格以每蒲式耳計算並展示在新的資料框中。確保你能在 Visual Studio Code 的 kernel 中執行這些 notebook。
你現在應該熟悉我們正在檢視的南瓜數據架構。你可以在本課程的 _notebook.ipynb_ 中找到事先加載並預先清理好的數據。在該檔中,南瓜價格以每蒲式耳計算並顯示於新的資料框架中。確保你能在 Visual Studio Code 中運行這些 notebook。
### 準備工作
提醒你,載入資料是為了提出問題。
提醒你,你正在載入這些數據是為了針對它們提出問題。
- 什麼時間買南瓜最好?
- 一箱迷你南瓜的價格大概要多少?
- 我該以半蒲式耳的籃子買還是用 1 1/9 蒲式耳的箱子買?
讓我們繼續深挖這些資料
- 何時是購買南瓜的最佳時機?
- 一箱迷你南瓜的價格大約是多少?
- 我應該買半蒲式耳的南瓜籃還是一箱1 1/9蒲式耳的箱子
讓我們繼續探索這些數據
在上一堂課中,你建立了一個 Pandas 資料框,並填入來自原始資料集的一部分數據,統一以蒲式耳為單位計價。這樣做,只能取得約 400 筆資料,且只針對秋季幾個月
在上一課中,你建立了一個 Pandas 資料框架並以原始資料的一部分填充將價格標準化為每蒲式耳價格。然而這樣你只能取得約400筆數據且只涵蓋秋季月份
請看看這堂課隨附 notebook 中預先載入的資料。我們載入資料後,繪製了月份的初始散點圖。或許透過更多清理,我們能更細緻地了解資料的特性。
看看我們在本課的 notebook 中預先加載的數據。資料已加載且初步使用散點圖顯示月份數據。也許我們可以透過進一步清理獲得更詳細的資料特性。
## 一條線性回歸線
## 線性回歸線
如你在第一課中學,線性回歸的目標是能夠繪製一條線:
如你在第一課中學,線性回歸的目標是繪製一條線
- **顯示變數關係**。展示變數間的關係
- **做出預測**。準確預測新數據點相對於該線會落在哪裡
- <strong>展示變量關係</strong>。展示變數間的關係
- <strong>進行預測</strong>。準確預測新數據點相較該線會落在哪裡
典型的**最小平方法回歸Least-Squares Regression**會畫出這類線。"最小平方法"一詞指的是最小化模型中總誤差的過程。對每個數據點,我們測量該點和回歸線之間的垂直距離(稱為殘差)。
<strong>最小平方回歸</strong>常用來繪製這類線條。術語「最小平方」指的是我們想最小化模型中總誤差的過程。對每個數據點,我們量度實際點與回歸線之間的垂直距離(稱為殘差)。
我們平方這些距離有兩個主要原因
我們將這些距離平方,原因有兩個
1. **大小超過方向**:我們要將錯誤 -5 和 +5 同等看待,平方可以令所有值變為正數。
1. <strong>大小勝方向</strong>:我們要將-5的誤差與+5的誤差等同對待平方讓所有值都變成正數。
2. **懲罰異常值**:平方會給較大誤差更高的權重,迫使回歸線更貼近遠離的點。
2. <strong>懲罰離群值</strong>:平方會給較大誤差更重的權重,迫使線條更貼近遠離的點。
接著,我們將所有平方後的值相加。目標是找到使該和最小的那條具體直線,這也是「最小平方法」的名稱由來
接著將所有平方值加總起來。我們的目標是尋找使該總和最小(可能的最小值)的特定直線——因此稱作「最小平方」
> **🧮 給我看數學!**
>
> 這條稱為_最佳擬合線_的線可用[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
>
> **🧮 看數學計算**
>
> 這條稱作_最佳擬合線_的直線能用[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
>
> ```
> Y = a + bX
> ```
>
> `X`是「解釋變數」,`Y`是「應變數」。線的斜率為`b``a`是 y 截距,指的是當`X=0`時,`Y`的值。
> `X` 是「解釋變數」,`Y` 是「被解釋變數」。線的斜率是 `b``a` 是 y 截距,指的是當 `X = 0` 時的 `Y` 值。
>
>![計算斜率](../../../../translated_images/zh-MO/slope.f3c9d5910ddbfcf9.webp)
>
> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
> 首先計算斜率 `b` 資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
>
> 換句話說,並回到我們南瓜資料的原始問題:「預測每蒲式耳南瓜價格與月份的關係」,`X` 代表價格,`Y` 代表銷售月份。
> 換句話說,對應我們南瓜資料的原始問題:「根據月份預測每蒲式耳南瓜的價格」,`X` 指價格,`Y` 則是銷售月份。
>
>![完成方程式](../../../../translated_images/zh-MO/calculation.a209813050a1ddb1.webp)
>
> 計算 Y 的值。如果你付約 4 美元,那一定是 4 月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
> 計算 `Y` 的值。如果你支付約 4 美元,應該是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
>
> 計算該線的數學方法必須展現線的斜率,同時受截距影響,即`X=0`時的`Y`位置。
> 計算直線的數學必須展示斜率,而斜率也依賴截距,即 `X = 0``Y` 所在位置。
>
> 你可以參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站來觀察這些計算方法。也可訪問[此最小平方法計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)來看數值如何影響線。
> 你可以 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站觀察這些計算方法。也可到[此最小平方計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)觀看數值如何影響直線。
## 相關
## 相關係數
還有一個必須了解的詞是給定 X 和 Y 變數間的**相關係數**。利用散點圖,你可以快速視覺化此係數。點散佈成很整齊一條線的圖有高相關,但點散佈在 X 和 Y 間各處的圖則低相關
還有一個需要了解的詞彙是給定 X 與 Y 變數間的<strong>相關係數</strong>。使用散點圖,你可以快速視覺化這個係數。若數據點呈現整齊分布成一條線,代表相關性高;若點散布在 X 與 Y 之間各處,則相關性低
良好線性回歸模型會有高(靠近 1 而非 0的相關係數使用最小平方回歸法畫出回歸線。
一個好的線性回歸模型會有一個高接近1而非0相關係數使用最小平方回歸法與回歸線。
✅ 執行本課程附帶 notebook查看月份對價格的散點圖。根據你對散點圖的視覺判斷,南瓜銷售中「月份對價格」的數據似乎是高相關還是低相關?換用更細微的度量,比如 *一年的第幾天*(即從年初開始算的天數)情況會改變嗎?
✅ 執行本課程附帶 notebook查看月份對價格的散點圖。根據你對散點圖的視覺判斷月份與南瓜銷售價格之間的資料關聯是高還是低?如果換成更細緻的度量,例如<em>該年天數</em>(即距離該年開始日的天數),情況會改變嗎?
以下程式碼中,我們假設已經清理過資料,得到名為 `new_pumpkins` 的資料框,類似如下
在以下程式中,假設我們已清理了資料,得到了名為 `new_pumpkins` 的資料框架,結構類似
ID | 月份 | 一年中的第幾天 | 品種 | 城市 | 包裝 | 最低價 | 最高價 | 價格
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | 派型 | BALTIMORE | 1 1/9 蒲式耳紙箱 | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | 派型 | BALTIMORE | 1 1/9 蒲式耳紙箱 | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | 派型 | BALTIMORE | 1 1/9 蒲式耳紙箱 | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | 派型 | BALTIMORE | 1 1/9 蒲式耳紙箱 | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | 派型 | BALTIMORE | 1 1/9 蒲式耳紙箱 | 15.0 | 15.0 | 13.636364
70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> 清理資料的程式碼可在 [`notebook.ipynb`](notebook.ipynb) 中看到。我們已經執行與先前課程相同的清理步驟,並透過以下表達式計算了 `DayOfYear` 欄:
> 清理數據的程式碼在 [`notebook.ipynb`](notebook.ipynb) 中。我們已完成與上一課相同的清理步驟,並利用以下公式計算 `DayOfYear` 欄位:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
現在你已了解線性回歸背後的數學,讓我們建立回歸模型,看看是否能預測哪種南瓜包裝的價格最優惠。想要開設假日南瓜園的人可能會需要這個資訊,來優化他們南瓜包裝的採購
現在你已了解線性回歸背後的數學,讓我們建立一個迴歸模型,看看是否能預測哪種南瓜包裝的南瓜價格會最好。假如有人想購買南瓜以打造節日南瓜園,這資訊會對他們優化包裝購買策略很有幫助
## 尋找相關性
[![機器學習初學者 - 尋找相關性:線性回歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "機器學習初學者 - 尋找相關性:線性回歸的關鍵")
[![初學者機器學習 - 尋找相關性:線性回歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初學者機器學習 - 尋找相關性:線性回歸的關鍵")
> 🎥 點擊圖片觀看相關性的短片概述
> 🎥 點擊上圖觀看相關性短片介紹
從上一堂課,你可能已看到不同月份的平均價格大致如下
根據上一課,你可能見過不同月份平均價格長這樣
<img alt="月平均價格" src="../../../../translated_images/zh-MO/barchart.a833ea9194346d76.webp" width="50%"/>
<img alt="月平均價格" src="../../../../translated_images/zh-MO/barchart.a833ea9194346d76.webp" width="50%"/>
這表明應該存在某些相關性,我們可以嘗試訓練線性回歸模型來預測`月份`與`價格`之間的關聯,或者`一年中的第幾天`與`價格`的關係。以下散點圖顯示後者的關係:
這表示應該有某種相關性,我們可以嘗試訓練線性回歸模型來預測 `Month``Price``DayOfYear``Price` 之間的關係。以下散點圖顯示後者關係:
<img alt="價格與一年中天數的散點圖" src="../../../../translated_images/zh-MO/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="價格與該年天數散點圖" src="../../../../translated_images/zh-MO/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
我們用 `corr` 函數來看是否存在相關性
讓我們使用 `corr` 函數看看是否存在相關
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
看起來`月份` 計算的相關性約為 -0.15`DayOfMonth` 大約是 -0.17,但另有可能存在另一個重要關係。價格似乎依南瓜品種分成不同群集。要確認此假設,我們用不同顏色繪製每個南瓜品種。透過傳遞 `ax` 參數給 `scatter` 繪圖函數,我們可以將所有點畫在同一張圖上:
看起來 `Month` 的相關性大約是 -0.15`DayOfMonth` 則是 -0.17,都相當小,但可能還有其他重要關係。看來不同南瓜品種的價格形成不同叢集。為證實此假設,我們用不同顏色標示每種南瓜類別。透過傳 `ax` 參數給 `scatter` 繪圖函式,我們可以將所有點畫在同一圖上:
```python
ax=None
@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="價格與一年中天數的散點圖(按品種著色)" src="../../../../translated_images/zh-MO/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="價格與該年天數散點圖,依顏色區分" src="../../../../translated_images/zh-MO/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
調查結果顯示品種對整體價格比實際銷售日期影響較大。我們用長條圖也可觀察到
調查顯示品種比實際銷售日期對整體價格影響更大。我們用長條圖看得更明顯
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="不同品種價格長條圖" src="../../../../translated_images/zh-MO/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="品種價格長條圖" src="../../../../translated_images/zh-MO/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
暫時只聚焦單一品種——「派型」,看看日期對價格的影響:
暫時只看一種南瓜品種稱為「pie type」看看日期對價格的影響:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="價格與一年中天數的散點圖" src="../../../../translated_images/zh-MO/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="價格與該年天數散點圖" src="../../../../translated_images/zh-MO/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
現在如果用 `corr` 函數計算 `價格``DayOfYear` 的相關性,大約會是 `-0.27`——這意味著訓練預測模型是合理的。
若用 `corr` 函數計算 `Price``DayOfYear` 相關性,會得到約 `-0.27`,表示訓練預測模型是有意義的。
> 在訓練線性回歸模型前,重要的是確保資料是乾淨的。線性回歸不適用於存在缺值的情況,因此刪除所有空白欄位是合理做法
> 在訓練線性回歸模型前,請確定數據是乾淨的。線性回歸對遺失值表現不佳,因此最好清除所有空白欄位
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
另一種方法是將空值以該欄的平均值填補
另一方法是用該欄位的平均值填補空白
## 簡單線性回歸
[![機器學習初學者 - 使用 Scikit-learn 的線性與多項式回歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "機器學習初學者 - 使用 Scikit-learn 的線性與多項式回歸")
[![初學者機器學習 - 使用 Scikit-learn 的線性與多項式回歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初學者機器學習 - 使用 Scikit-learn 的線性與多項式回歸")
> 🎥 點擊上觀看線性與多項式回歸短片介紹。
> 🎥 點擊上圖觀看線性與多項式回歸短片介紹。
為了訓練線性回歸模型,我們將使用 **Scikit-learn** 函式庫。
我們將使用 **Scikit-learn** 函式庫訓練線性回歸模型
```python
from sklearn.linear_model import LinearRegression
@ -183,48 +183,48 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
我們先將輸入數值(特徵)與期望輸出(標籤)分別放入不同的 numpy 陣列:
首先,我們要將輸入值(特徵)和預期輸出(標籤)分別放進 numpy 陣列:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 注意,我們必須將輸入資料`reshape`,讓線性回歸套件正確理解它。線性回歸預期輸入是一個二維陣列,每行對應一組輸入特徵的向量。由於我們只有一個輸入,因此需要的是形狀為 N×1 的陣列,其中 N 是資料集大小。
> 注意,我們必須將輸入資料 `reshape` 以讓線性回歸套件能正確處理。線性回歸預期輸入是 2 維陣列,每列是輸入特徵向量。在本例中因為只有一個輸入,所以需要一個形狀為 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)
```
`fit` 後的 `LinearRegression` 物件包含所有回歸係數,可以使用 `.coef_` 屬性存取。在我們的例子中,只有一個係數,大約是 `-0.017`。這代表價格似乎隨時間略為下降但幅度不大大約每天降2仙。我們也可以使用 `lin_reg.intercept_` 取得回歸與 Y 軸的交點,這在我們的例子中大約是 `21`,表示年初的價格。
`LinearRegression` 物件在 `fit` 後會包含迴歸的所有係數,可以透過 `.coef_` 屬性來存取。在我們的例子中,只有一個係數,應該約為 `-0.017`。這表示價格似乎隨時間略微下降,但不多,每天約下降兩仙。我們也可以使用 `lin_reg.intercept_` 來存取迴歸與 Y 軸的交點——在我們的例子中大約是 `21`,表示年初的價格。
為了檢查模型的準確度我們可以在測試資料集上預測價格然後測量預測結果與期望值的接近程度。這可以使用均方誤差MSE指標完成即期望值與預測值之間所有平方差的平均值
為了看看我們的模型有多準確我們可以在測試資料集上預測價格然後測量預測值與實際值的接近程度。這可以使用均方根誤差RMSE指標來完成即所有預期與預測值平方差均值的平方根
```python
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
我們的誤差似乎約為 2 點,約 17%。不算太好。模型品質的另一個指標是**決定係數**,可以這樣取得:
我們的誤差約為 2 點,約為 17%。不是太好。衡量模型品質的另一個指標是<strong>決定係數coefficient of determination</strong>,可以這樣取得:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
若值為 0表示模型完全不考慮輸入資料並且充當*最差線性預測器*,即預測為結果的平均值。值為 1 表示我們能完全完美地預測所有期望輸出。在我們的例子中,決定係數約為 0.06,相當低。
如果值為 0表示模型不考慮輸入資料作用如同<em>最差線性預測器</em>,即輸出結果的平均值。值為 1 表示我們可以完美預測所有預期輸出。在我們的例子中,係數約為 0.06,相當低。
我們也可以將測試資料與回歸線同時繪圖,更直觀地看回歸的表現
我們也可以將測試資料與迴歸線一起繪圖,以更清楚看到迴歸在我們的案例中如何運作
```python
plt.scatter(X_test,y_test)
@ -233,19 +233,19 @@ plt.plot(X_test,pred)
<img alt="Linear regression" src="../../../../translated_images/zh-MO/linear-results.f7c3552c85b0ed1c.webp" width="50%" />
## 多項式
## 多項式
另一種線性回歸是多項式回歸。有時,變數間存在線性關係—體積較大的南瓜價格較高—但有時這些關係無法用平面或直線描述
另一種線性迴歸是多項式迴歸。雖然有時變數間存在線性關係——例如南瓜體積越大,價格越高——但有時這些關係無法用平面或直線繪製
這裡有 [更多範例](https://online.stat.psu.edu/stat501/lesson/9/9.8) 適合用多項式回歸的資料
以下是[一些多項式迴歸適用的示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)
再看看日期與價格的關係。這散點圖似乎一定要用直線分析嗎?價格不會波動嗎?在這種情況下,可以嘗試多項式回歸。
再看看日期與價格的關係。這散點圖看起來是否非得用直線分析?價格是否可能波動?這種情況下,可以嘗試多項式迴歸。
✅ 多項式是包含一個或多個變量與係數的數學表達式
✅ 多項式是由一個或多個變數與係數組成的數學表達式
多項式回歸會建立曲線以更好擬合非線性資料。在我們的例子中,若將平方的 `DayOfYear` 變項加入輸入資料,我們應能用拋物線擬合資料,曲線會在年內某一點有極小值。
多項式迴歸建立一條曲線,以更好地擬合非線性資料。在我們的例子中,如果將平方的 `DayOfYear` 變數納入輸入,我們應該可以用一個二次曲線擬合資料,該曲線在一年中某點有最小值。
Scikit-learn 包含便利的 [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline),用來串接資料處理步驟。**pipeline** 是一連串的**估計器**。在我們例子中,我們將建立一條 pipeline先加入多項式特徵再訓練回歸
Scikit-learn 提供一個方便的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來結合多個資料處理步驟。<strong>管道</strong>是由多個<strong>預估器</strong>串連而成。在我們例子中,我們將建構一個管道,先加入多項式特徵,再進行迴歸訓練
```python
from sklearn.preprocessing import PolynomialFeatures
@ -256,36 +256,36 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
使用 `PolynomialFeatures(2)` 意味著我們將包含輸入資料的所有二階多項式。在我們這裡,只有 `DayOfYear`<sup>2</sup>,但若輸入有兩變量 X 及 Y則會加上 X<sup>2</sup>、XY 及 Y<sup>2</sup>。當然,我們也可以使用更高階的多項式。
使用 `PolynomialFeatures(2)` 表示包含所有二次項多項式。對我們而言,只有 `DayOfYear`<sup>2</sup>,但若有兩個輸入變數 X 和 Y則會加入 X<sup>2</sup>、XY 與 Y<sup>2</sup>。我們也可以使用更高次多項式。
Pipeline 可以像原本的 `LinearRegression` 物件一樣使用,例如我們可以 `fit` pipeline再用 `predict` 取得預測結果。下圖顯示測試資料與擬合曲線:
管道的使用方式與原始的 `LinearRegression` 物件相同,即可以 `.fit` 管道,之後使用 `.predict` 得到預測結果。以下圖顯示測試資料與擬合曲線:
<img alt="Polynomial regression" src="../../../../translated_images/zh-MO/poly-results.ee587348f0f1f60b.webp" width="50%" />
使用多項式回歸,我們可以獲得略低的 MSE 與較高的決定係數,但差異不大。我們還需要考慮其他特徵!
使用多項式迴歸,我們能取得稍低的 MSE 及較高的決定係數,但改善幅度不大。我們需要考慮其他特徵!
> 你可以看到最低的南瓜價格似乎出現在萬聖節前後。你怎麼解釋這現象?
> 你可以看到最低價的南瓜出現在萬聖節附近。你如何解釋這現象?
🎃 恭喜,剛剛你建立了一個能幫助預測派南瓜價格的模型。或許你可以對其他所有南瓜類型重複此程序,但那會很繁瑣。現在讓我們了解如何將南瓜品種納入模型
🎃 恭喜,你剛完成一個可幫助預測派用南瓜價格的模型。你可以對其他南瓜種類重複同樣操作,但非常繁瑣。接著讓我們學習如何在模型中考慮南瓜品種
## 類別特徵
在理想狀況下,我們希望使用同一模型預測不同南瓜品種的價格。不過,`Variety` 欄與 `Month` 等欄不同,因它包含非數字值。這類欄稱為**類別特徵**
理想狀況下,我們希望同一模型能預測不同南瓜品種的價格。然而,`Variety` 欄位與 `Month` 不同,因它包含非數字值,這類欄位稱為<strong>類別型</strong>
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 點擊上圖觀看使用類別特徵的短片介紹。
> 🎥 點擊上觀看使用類別特徵的片介紹。
這裡展示了平均價格與品種的關係
這裡展示了平均價格如何依品種變化
<img alt="Average price by variety" src="../../../../translated_images/zh-MO/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
要考慮品種,我們首先需要將它轉成數值型態,或稱**編碼**。我們可以用幾種方式做到這點
為了考慮品種,我們首先需要將它轉換為數字形式,或稱<strong>編碼</strong>。有幾種方法
* 簡單的**數字編碼**會建立一個品種清單,然後以該清單中索引取代品種名稱。這對線性回歸不太適合,因為線性回歸會使用索引的數值,乘以某係數加入結果之中。在我們的例子,索引與價格的關係明顯非線性,即使我們保證索引有特定排序
* **一熱編碼**會將 `Variety` 欄拆成四個欄,每個品種一欄。每欄對應列若屬於該品種則為 `1`,否則為 `0`。這代表線性回歸會有四個係數,分別對應四個南瓜品種的「起始價格」(或更準確說是「額外價格」)。
* 簡單的<strong>數字編碼</strong>會建立一張不同品種的表,然後用該表的索引取代品種名稱。這對線性迴歸不是好方法,因為模型會把索引數字當作數值處理及乘以係數加入結果,但品種索引與價格的關係明顯非線性,即使確保索引有特定順序也會如此
* <strong>獨熱編碼one-hot encoding</strong>會把 `Variety` 欄位換成4個欄位每個對應一個品種。若該行品種對應該欄位會為 1否則為 0。如此在迴歸模型有四個係數分別對應每種南瓜品種表示該品種的「起價」或更準確地說「額外價格」)。
以下程式碼示範如何對品種進行熱編碼:
以下程式碼示範如何對品種進行熱編碼:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -302,14 +302,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
要用一熱編碼品種作為輸入訓練線性回歸,只要正確初始化 `X``y`:
要用獨熱編碼品種訓練線性迴歸,只需正確初始化 `X``y` 資料:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
餘程式碼與之前用來訓練線性回歸的相同。實驗結果會顯示均方誤差約相當,但決定係數大幅提升(約 77%)。若想更精確預測,可加入更多類別特徵,或數值特徵,如 `Month``DayOfYear`。可以用 `join` 合併成一個特徵陣列
他程式碼與前面訓練線性迴歸相同。若嘗試執行,將會發現均方誤差差不多,但決定係數大幅提升(約 77%)。為達更準確預測,我們可以同時考慮更多類別特徵及數值特徵,例如 `Month``DayOfYear`。若要取得一個完整特徵陣列,可用 `join`
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +319,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
這裡我們還考慮了 `City``Package` 類型,使 MSE 降為 2.8410%),決定係數升至 0.94
這裡還考慮了 `City``Package` 類型,得到 MSE 2.8410%)與決定係數 0.94
## 綜合應用
了打造最佳模型,我們可以使用上述範例中合併的(類別一熱編碼 + 數值)資料,搭配多項式回歸。以下為完整程式碼方便使用
做出最佳模型,我們可以使用上述結合(獨熱編碼類別+數值)資料,並搭配多項式迴歸。以下是完整程式碼,方便你參考
```python
# 設置訓練數據
@ -333,17 +333,17 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# 進行訓練-測試
# 進行訓練-測試
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 設置並訓練流程
# 設置並訓練管道
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# 預測測試數據結果
# 對測試數據進行預測結果
pred = pipeline.predict(X_test)
# 計算均方誤差決定係數
# 計算均方誤差決定係數
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
@ -351,36 +351,36 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
預期將得到近 97% 的最佳決定係數,以及 MSE=2.23約8%預測誤差)
這樣可以取得將近 97% 的最高決定係數,以及 2.23(約 8% 預測誤差)的 MSE
| 模型 | MSE | 決定係數 |
|-------|-----|---------|
|-------|-----|---------------|
| `DayOfYear` 線性 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 |
| `Variety` 線性 | 5.24 (19.7%) | 0.77 |
| 所有特徵 線性 | 2.84 (10.5%) | 0.94 |
| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 |
| 全特徵線性 | 2.84 (10.5%) | 0.94 |
| 全特徵多項式 | 2.23 (8.25%) | 0.97 |
🏆 做得好!你在一課中建立了四個回歸模型,將模型品質提升至 97%。回歸章節最後會介紹用於分類的邏輯回歸。
🏆 做得好!你在一堂課中建立了四個迴歸模型,將模型品質提升至 97%。在迴歸的最後一節中,你將學習用於分類的邏輯斯迴歸。
---
## 🚀挑戰
在這個筆記本中測試不同變數,以觀察相關程度如何影響模型準確度
在這個筆記本中測試不同變數,查看相關性與模型準確度的關係
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 複習與自學
本課介紹線性回歸。還有其他重要的回歸類型請閱讀逐步回歸、Ridge、Lasso 與 Elasticnet 技術。推薦的深入課程是 [史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
本課我們學習了線性迴歸。還有其他重要的迴歸方法。閱讀關於逐步迴歸、Ridge、Lasso 和 Elasticnet 的技術。推薦深入學習的課程是[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## 作業
[模型](assignment.md)
[模型](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原文文件以其母語版本為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋負責。
**免責聲明**
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起之任何誤解或錯誤解釋負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 美食分類器 1
# Cuisine classifiers 1
這節課中,您將使用上一節課保存的數據集,這是一個關於美食的平衡且乾淨的數據集
此課程中,您將使用從上一課保存的資料集,該資料集包含平衡且乾淨的有關各國菜系的數據
您將使用這個數據集和多種分類器來_根據一組食材預測特定的國家美食_。在此過程中您將深入了解算法如何用於分類任務
您將使用此資料集與各種分類器來_根據一組食材預測給定的國家菜系_。同時您將進一步了解算法在分類任務中的一些應用方式
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
# 準備工作
假設您已完成[第一課](../1-Introduction/README.md),請確保在根目錄的 `/data` 文件夾中存在一個 _cleaned_cuisines.csv_ 文件,供這四節課使用
假設您已完成[課程 1](../1-Introduction/README.md),請確保在這四個課程的根目錄 `/data` 資料夾中存在一個名為 _cleaned_cuisines.csv_ 的檔案
## 練習 - 預測國家美食
## 練習 - 預測國家菜系
1. 在本課的 _notebook.ipynb_ 文件夾中,導入該文件以及 Pandas 庫:
1. 在本課的 _notebook.ipynb_ 資料夾中,匯入該檔案及 Pandas 庫:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
數據看起來如下
資料看起來是這樣的
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 現在,入更多的庫:
1. 現在,入更多的庫:
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. 將 X 和 y 坐標分成兩個數據框進行訓練。`cuisine` 可以作為標籤數據框:
1. 將 X 和 y 座標分成兩個資料框用於訓練。`cuisine` 可以作為標籤資料框:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
它看起來如下
它看起來是這樣的
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. 使用 `drop()` 刪除 `Unnamed: 0` 列和 `cuisine` 列。將剩餘的數據保存為可訓練的特徵:
1. 使用 `drop()` 丟棄 `Unnamed: 0` 欄和 `cuisine` 欄,並將剩餘的資料保存為可訓練的特徵:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
您的特徵看起來如下
您的特徵看起來是這樣
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,13 +75,13 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
現在您可以開始訓練您的模型了
現在您已準備好訓練您的模型
## 選擇分類器
## 選擇您的分類器
現在您的數據已清理並準備好訓練,您需要決定使用哪種算法來完成任務。
現在您的資料已清理並準備好訓練,您必須決定使用哪種算法來完成這項任務。
Scikit-learn 將分類歸類為監督學習,在這個類別中,您會發現許多分類方法。[種類繁多](https://scikit-learn.org/stable/supervised_learning.html),乍看之下可能令人眼花繚亂。以下方法都包含分類技術:
Scikit-learn 將分類歸在監督式學習類別中,在該類別下您會找到多種分類方式。一開始可能會讓人覺得[方式多樣且令人眼花繚亂](https://scikit-learn.org/stable/supervised_learning.html)。以下方法均包含分類技術:
- 線性模型
- 支持向量機
@ -89,71 +89,70 @@ Scikit-learn 將分類歸類為監督學習,在這個類別中,您會發現
- 最近鄰
- 高斯過程
- 決策樹
- 集成方法(投票分類器)
- 多類和多輸出算法(多類多標籤分類,多類多輸出分類)
- 集成方法 (投票分類器)
- 多分類及多輸出算法 (多分類及多標籤分類,多分類多輸出分類)
> 您也可以使用[神經網絡進行分類](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),但這超出了本課的範圍。
> 您也可以使用[神經網絡來分類數據](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),不過那超出本課程範圍。
### 選擇哪個分類器?
### 應該選擇什麼分類器?
那麼,應該選擇哪個分類器呢?通常,通過嘗試多種分類器並尋找良好的結果是一種測試方法。Scikit-learn 提供了一個[並排比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html),在創建的數據集上比較 KNeighbors、SVC 兩種方式、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 和 QuadraticDiscrinationAnalysis並以可視化方式展示結果
那麼,您應該選擇哪種分類器呢?通常,嘗試多種並尋找不錯的結果是一種測試方法。Scikit-learn 提供了一個[並排比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html),在一個生成的資料集上比較了 KNeighbors、兩種方式的 SVC、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 與 QuadraticDiscrinationAnalysis並將結果視覺化展示
![分類器比較](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> 圖片來自 Scikit-learn 的文檔
![comparison of classifiers](../../../../translated_images/zh-MO/comparison.edfab56193a85e7f.webp)
> 圖表由 Scikit-learn 文件生成
> AutoML 可以輕鬆解決這個問題,通過在雲端運行這些比較,幫助您選擇最適合您數據的算法。試試看[這裡](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML 透過在雲端運行這些比較,輕鬆解決此問題,讓您可以選擇最適合您資料的算法。可在此[嘗試](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### 更好的方法
盲目猜測更好的方法是遵循這份可下載的[機器學習速查表](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)。在這裡,我們發現針對我們的多類問題,我們有一些選擇:
起盲目猜測,一個更好的方式是參考這份可下載的[機器學習備忘單](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)。這裡我們發現,對於多分類問題,我們有一些選擇:
![多類問題速查表](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> 微軟算法速查表的一部分,詳細介紹了多類分類選項
![cheatsheet for multiclass problems](../../../../translated_images/zh-MO/cheatsheet.07a475ea444d2223.webp)
> 微軟算法備忘單的其中一部分,詳述多分類選項
✅ 下載這份速查表,打印出來,掛在牆上!
✅ 下載這份備忘單,列印出來,掛在牆上!
### 推理
讓我們看看是否可以根據我們的限制推理出不同的方法:
讓我們嘗試根據目前條件來推理不同方法:
- **神經網絡太重**。考慮到我們的數據集雖然乾淨但規模較小,以及我們通過筆記本本地運行訓練的事實,神經網絡對於這項任務來說太過繁重。
- **不使用二類分類器**。我們不使用二類分類器因此排除了一對多one-vs-all
- **決策樹或邏輯回歸可能有效**。決策樹可能有效,或者多類數據的邏輯回歸也可能有效
- **多類增強決策樹解決不同問題**。多類增強決策樹最適合非參數任務,例如設計排名的任務,因此對我們來說並不適用
- <strong>神經網絡過於龐大</strong>。考慮到我們的資料清理乾淨但資料量較少,而且本地使用 notebook 進行訓練,神經網絡對此任務而言太過笨重。
- <strong>不採用二元分類器</strong>。我們不使用二元分類器,因此排除一對多方案
- <strong>決策樹或邏輯回歸可能可行</strong>。決策樹可能適用,或者用於多類資料的邏輯回歸
- <strong>多類提升決策樹解決的問題不同</strong>。多類提升決策樹最適合非參數任務,例如設計用於建立排名的任務,因此對我們沒幫助
### 使用 Scikit-learn
我們將使用 Scikit-learn 來分析數據。然而,在 Scikit-learn 中有許多方法可以使用邏輯回歸。查看[可傳遞的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
我們將使用 Scikit-learn 來分析資料。不過,在 Scikit-learn 中使用邏輯回歸的方法很多。請查看[可傳遞的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
基本上有兩個重要的參數 - `multi_class``solver` - 我們需要指定,當我們要求 Scikit-learn 執行邏輯回歸時。`multi_class` 值應用某種行為。solver 的值則是使用的算法。並非所有 solver 都可以與所有 `multi_class` 值配對
本質上,我們需要指定兩個重要參數 - `multi_class``solver`,這兩個參數決定了邏輯回歸的行為。`multi_class` 值會套用某種行為,`solver` 代表要使用的演算法。並非所有 `solver` 都能與所有 `multi_class` 值搭配
根據文檔,在多類情況下,訓練算法:
根據文件,針對多分類情況,訓練算法:
- **使用一對多OvR方案**如果 `multi_class` 選項設`ovr`
- **使用交叉熵損失**,如果 `multi_class` 選項設置為 `multinomial`。(目前 `multinomial` 選項僅支持 lbfgssagsaganewton-cg solver。
- 如果 `multi_class` 選項設為 `ovr`**使用一對多OvR方案**
- 如果 `multi_class` 選項設為 `multinomial`<strong>使用交叉熵損失</strong>。(目前 `multinomial` 選項僅由 lbfgs, sag, saganewton-cg solver 支持)"
> 🎓 這裡的“方案”可以是 'ovr'(一對多)或 'multinomial'。由於邏輯回歸主要設計用於支持二類分類,這些方案使其能更好地處理多類分類任務。[來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 這裡的 'scheme' 可設定為 'ovr'(一對多)或 'multinomial'。由於邏輯回歸實際上是為支持二元分類設計,這些方案允許它更好地處理多分類任務。 [來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 solver 定義為“用於優化問題的算法”。[來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
> 🎓 'solver' 是指“在優化問題中要使用的算法”。[來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn 提供了這張表格來解釋 solver 如何處理不同數據結構帶來的挑戰:
Scikit-learn 提供下表說明各 solver 如何處理不同型態資料帶來的挑戰:
![solver](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/zh-MO/solvers.5fc648618529e627.webp)
## 練習 - 分割數據
## 練習 - 分割資料
我們可以專注於邏輯回歸作為我們的第一次訓練嘗試,因為您在上一節課中剛剛學習了它。
通過調用 `train_test_split()` 將數據分為訓練和測試組:
考慮到您最近在之前的課程已學過此內容,我們可先聚焦於邏輯回歸進行首次訓練。透過呼叫 `train_test_split()` 將資料切割為訓練集和測試集:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## 練習 - 用邏輯回歸
## 練習 - 用邏輯回歸
由於您正在使用多類情況您需要選擇使用哪種_方案_以及設置哪種_solver_。使用 LogisticRegression 並設置 multi_class 為 `ovr` 和 solver 為 `liblinear` 進行訓練。
由於您使用的是多類情況您需要選擇使用哪種_方案_和設定哪種_solver_。使用帶有多類設定且 solver 為 **liblinear** 的 LogisticRegression 進行訓練。
1. 創建一個邏輯回歸,將 multi_class 設`ovr`solver 設`liblinear`
1. 創建一個多類別的邏輯回歸,將 multi_class 設為 `ovr`solver 設為 `liblinear`
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,27 +162,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ 嘗試使用其他 solver例如 `lbfgs`,它通常設置為默認值
> 注意,當需要將資料展平時,可以使用 Pandas 的 [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函數。
準確率超過 **80%**
✅ 嘗試其他常用 solver例如預設常用的 `lbfgs`
1. 您可以透過測試第 50 行數據來查看此模型的運作情況:
> 注意,當有需要時,使用 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函數將資料攤平。
準確率相當不錯,超過 **80%**
1. 您可以測試資料中的一列(例如 #50)以觀察模型實際表現:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
結果如下
結果會被印出
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ 嘗試不同的行數並檢查結果
1. 更深入地探討,您可以檢查此預測的準確性:
✅ 嘗試不同列編號並檢查結果
1. 深入探索後,你可以檢查此預測的準確度:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +195,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
結果如下 - 印度料理是模型的最佳猜測,且概率相當高:
結果輸出 - 印度菜是模型的最佳猜測,且概率很高:
| | 0 |
| -------: | -------: |
@ -205,9 +205,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
您能解釋為什麼模型非常確定這是印度料理嗎?
你能解釋為什麼模型很確定這是印度菜嗎?
1. 透過列印分類報告獲取更多細節,就像您在回歸課程中所做的一樣:
1. 藉由列印分類報告取得更多細節,就像你在回歸課程中做的那樣:
```python
y_pred = model.predict(X_test)
@ -221,24 +221,27 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀挑戰
在本課程中,使用清理過的數據建立了一個機器學習模型,該模型可以根據一系列食材預測國家料理。花些時間閱讀 Scikit-learn 提供的多種分類數據選項。深入了解 "solver" 的概念,以理解其背後的運作原理
在本課程中,使用清理過的數據建立了一個機器學習模型,可以根據一系列食材預測國家料理。花點時間閱讀 Scikit-learn 提供的眾多資料分類選項。深入了解「解算器solver」的概念以理解幕後運作
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 回顧與自學
## 複習與自學
深入了解邏輯回歸背後的數學原理,請參閱[本課程](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)。
深入了解邏輯回歸背後的數學原理:[這篇課程](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## 作業
## 作業
[研究 solvers](assignment.md)
[研究解算器](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對於因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們致力於確保準確性,但請注意,機器翻譯可能包含錯誤或不準確之處。原始文件(以其母語撰寫)應視為權威來源。對於重要資訊,建議尋求專業人類翻譯。我們對因使用本翻譯而引起的任何誤解或誤釋不承擔任何責任。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -8,16 +8,16 @@
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
### 🌐 多語言支
### 🌐 多語言支
#### 透過 GitHub Action 支持(自動化且始終保持最新)
#### 透過 GitHub Action 支援(自動化且隨時更新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](./README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
> **要本地端 Clone**
> **本地複製**
>
> 本倉庫包含超過 50 種語言的翻譯,會顯著增加下載大小。若只想 Clone 不包含翻譯檔案,可使用稀疏檢出:
> 此存儲庫包含 50 多種語言翻譯,會大幅增加下載大小。若要在不帶翻譯的情況下複製,請使用稀疏檢出:
>
> **Bash / macOS / Linux:**
> ```bash
@ -26,69 +26,69 @@
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
>
> **CMD (Windows):**
> **CMDWindows**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 這樣你可以用更快的下載速度獲得完成課程所需的所有內容。
> 這會讓您以更快的速度下載完成課程所需的所有內容。
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### 加入我們的社群
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
我們正在進行 Discord 上的 AI 學習系列,請於 2025 年 9 月 18 - 30 日從 [Learn with AI Series](https://aka.ms/learnwithai/discord) 獲得更多資訊並加入。我們將分享使用 GitHub Copilot 於數據科學的技巧與秘訣。
我們正舉辦 Discord AI 學習系列,詳情及加入請見 [Learn with AI Series](https://aka.ms/learnwithai/discord),時間為 2025 年 9 月 18 日至 30 日。您將獲得使用 GitHub Copilot 做數據科學的技巧與秘訣。
![Learn with AI series](../../translated_images/zh-MO/3.9b58fd8d6c373c20.webp)
# 機器學習初學者課程大綱
# 初學者機器學習課程大綱
> 🌍 隨著我們透過世界文化探索機器學習,一起環遊世界吧 🌍
> 🌍 隨世界各地文化,一起探索機器學習 🌍
微軟的 Cloud Advocates 很高興提供這套為期 12 週、共 26 課的 <strong>機器學習</strong> 課程。在本課程中,你將學習所謂的<strong>經典機器學習</strong>,主要使用 Scikit-learn 函式庫,並避開深度學習部分,後者在我們的 [AI 初學者課程](https://aka.ms/ai4beginners) 裡有涵蓋。你也可以同時搭配我們的 [『數據科學初學者課程』](https://aka.ms/ds4beginners) 一起學習!
微軟 Cloud Advocates 團隊很高興提供一套共 12 週、26 課的<strong>機器學習</strong>課程。在這套課程中,您將了解所謂的<strong>經典機器學習</strong>,主要使用 Scikit-learn 作為函式庫,並避開深度學習部分,深度學習則在我們的[AI 初學者課程](https://aka.ms/ai4beginners)中涵蓋。這些課程也可與我們的[初學者數據科學課程](https://aka.ms/ds4beginners)搭配學習!
隨我們環遊世界,將這些經典技術應用於來自全球各地的資料。每堂課含課前和課後測驗、書面教學、解答、作業等。我們採用專案導向的教學法,讓你透過實作學習,是讓新技能穩固掌握的有效方式
我們一起環遊世界,將這些經典技術應用到來自全球不同領域的數據。每堂課包含課前和課後小測驗、書面操作說明、解答、作業,及更多。我們以專案為基礎的教學法,讓你邊建構邊學習,這是新技能「記憶更深刻」的有效方法
**✍️ 衷心感謝我們的作者們** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 與 Amy Boyd
**✍️ 誠摯感謝作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu 與 Amy Boyd
**🎨 感謝我們的插畫師們** Tomomi Imura、Dasani Madipalli 與 Jen Looper
**🎨 也感謝插畫師** Tomomi Imura、Dasani Madipalli 及 Jen Looper
**🙏 特別感謝🙏 微軟學生大使的作者、審核者與內容貢獻者**,特別是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 與 Snigdha Agarwal
**🙏 特別感謝🙏 微軟學生大使作者、審閱者與內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila 與 Snigdha Agarwal
**🤩 非常感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 與 Vidushi Gupta 幫助我們的 R 課程!**
**🤩 額外感謝微軟學生大使 Eric Wanjau、Jasleen Sondhi 及 Vidushi Gupta 的 R 課程!**
# 入門指南
# 開始使用
遵照下列步驟:
1. <strong>分支此倉庫</strong>:點擊頁面右上角的「Fork」按鈕。
2. <strong>克隆此倉庫</strong> `git clone https://github.com/microsoft/ML-For-Beginners.git`
按照以下步驟:
1. **Fork 此倉庫**:點擊本頁右上方的「Fork」按鈕。
2. **Clone 此倉庫**`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 評分標準進行「大聲學習」。PATProgress Assessment Tool是您填寫的進度評估工具。也可以對其他人的 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) 模塊與學習路徑。
<strong>教師們</strong>,我們提供了 [一些建議](for-teachers.md) 來協助您使用這套課程
<strong>教師們</strong>,我們提供了[一些使用課程的建議](for-teachers.md)。
---
## 影片導覽
部分課程有短影片可看。你可以在課程中直接看到這些影片,或至 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放列表](https://aka.ms/ml-beginners-videos) 觀看,點擊下方圖片即可連結
部分課程有短影片可播放。您可在課程中線上觀看,也可點擊下方圖片,前往 Microsoft Developer YouTube 頻道的[ML 初學者播放清單](https://aka.ms/ml-beginners-videos)
[![ML for beginners banner](../../translated_images/zh-MO/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
@ -98,80 +98,80 @@
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**Gif 動畫製作者** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
<strong>動圖由</strong> [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) 提供
> 🎥 點擊上方圖片觀看有關這個專案及創作者的影片!
> 🎥 點擊上方圖片,觀看本專案及其創作者介紹影片!
---
## 教學理念
我們在建立本課程時選擇了兩項教學原則:確保為動手做的<strong>專案導向</strong>,並包含<strong>頻繁小測驗</strong>。此外,這個課程有一貫<strong>主題</strong>以增進內容的凝聚力
我們在設計此課程時選擇了兩大教學原則:確保它是動手做的<strong>專案導向</strong>課程,並包含<strong>頻繁小測驗</strong>。此外,本課程有一致<strong>主題</strong>作為連貫架構
透過讓內容與專案對應,能提高學生的參與度,並增強概念的記憶。此外,課前低風險測驗能幫助學生定下學習主題的心態,課後測驗則促進再次記憶與鞏固。此課程設計靈活且有趣,可全部或部分學習。專案從簡單開始,隨著 12 週的推進持續變得更複雜。課程末還包含機器學習在現實世界應用的後記,可作為額外學分或討論基礎
確保內容和專案緊密結合,能讓學生更投入學習,增加概念掌握率。課前低壓力的小測驗設定學生學習意向,課後複習小測驗則加強記憶。本課程彈性且有趣,可一次修完或分階段學。專案從簡單開始,隨課程進展逐漸提升難度。課程後還有機器學習實際應用的後記,可作為額外學分或討論素材
> 查閱我們的 [行為守則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](..) 及 [疑難排解](TROUBLESHOOTING.md) 指引。我們歡迎您的建設性回饋!
> 請參閱我們的[行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](../../../../../../../translations)及[故障排除指南](TROUBLESHOOTING.md)。我們歡迎您的建設性反饋!
## 每堂課包含
- 選擇性手繪筆記
- 選擇性補充影片
- 影片導覽(部分課程)
- [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/)
- 書面教學
- 專案導向課程含建置專案的步驟指引
- 知識檢查
- [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/)
- 書面課程內容
- 專案導向課程的分步建置指南
- 知識點檢測
- 挑戰題
- 補充閱讀
- 作業
- [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
> <strong>關於語言的說明</strong>:這些課程主要以 Python 編寫,但也有很多課程可用於 R。要完成 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。這些檔案具有 .rmd 副檔名,代表 **R Markdown** 檔案,簡單來說就是將 `程式碼區塊`R 或其他語言)及 `YAML 標頭`(用來指示如何格式化輸出,如 PDF嵌入 `Markdown 文件`。因此,它作為資料科學的典範創作框架,讓你能將程式碼、輸出及筆記以 Markdown 形式結合書寫。此外R Markdown 文件可轉換為 PDF、HTML 或 Word 等格式。
> <strong>關於測驗的說明</strong>:所有測驗都包含在 [Quiz App folder](../../quiz-app) 中,共 52 個測驗,每個測驗有三題。測驗會從課程中連結,但你也可以在本機執行測驗應用程式;請參照 `quiz-app` 資料夾中的說明在本機託管或部署至 Azure。
| 課程編號 | 主題 | 課程分類 | 學習目標 | 連結課程 | 作者 |
| :-------: | :------------------------------------------------------------: | :------------------------------------------: | --------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 機器學習入門 | [Introduction](1-Introduction/README.md) | 學習機器學習背後的基本概念 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 了解此領域的歷史基礎 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 建立與應用機器學習模型時,學生應考量的公平性相關倫理議題 | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | 機器學習研究人員用來建立模型的技術 | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回歸分析入門 | [Regression](2-Regression/README.md) | 使用 Python 與 Scikit-learn 進行回歸模型入門 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 資料視覺化與清理,為機器學習做準備 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立線性及多項式回歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立邏輯回歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 網頁應用程式 🔌 | [Web App](3-Web-App/README.md) | 建立一個可使用您訓練模型的網頁應用程式 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類入門 | [Classification](4-Classification/README.md) | 清理、準備與視覺化資料;分類入門 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亞洲和印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器入門 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亞洲和印度料理 🍜 | [Classification](4-Classification/README.md) | 更多分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亞洲和印度料理 🍜 | [Classification](4-Classification/README.md) | 使用您的模型建立推薦系統網頁應用程式 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 聚類入門 | [Clustering](5-Clustering/README.md) | 清理、準備和視覺化資料;聚類入門 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索奈及利亞音樂喜好 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-均法聚類 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理入門 ☕️ | [Natural language processing](6-NLP/README.md) | 透過建立簡單機器人來學習自然語言處理基礎 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見的 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 進一步了解處理語言結構時所需的常見自然語言處理任務 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 與珍·奧斯汀一起進行情感及翻譯分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 浪漫歐洲飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 浪漫歐洲飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測入門 | [Time series](7-TimeSeries/README.md) | 時間序列預測入門 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 全球用電量 ⚡️ - ARIMA 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 全球用電量 ⚡️ - SVR 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支持向量迴歸進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習入門 | [Reinforcement learning](8-Reinforcement/README.md) | 以 Q-Learning 介紹強化學習 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 協助彼得躲避狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 附錄 | 真實世界的機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習在真實世界有趣且具啟發性的應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| 附錄 | 使用 RAI 儀表板進行機器學習模型除錯 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible AI 儀表板元件對機器學習模型進行除錯 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我們的 Microsoft Learn 集合中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線存取
你可以使用 [Docsify](https://docsify.js.org/#/) 離線執行本文件。請 fork 此倉庫,在本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在此倉庫的根目錄輸入 `docsify serve`。網站將在你的本地主機 3000 端口執行`localhost:3000`。
## PDF 檔案
在 [這裡](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) 找到課程綱要的 PDF內含連結
- [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
> <strong>關於語言的一個說明</strong>:這些課程主要以 Python 編寫,但也有很多課程提供 R 語言版本。要完成一個 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。它們包含了 .rmd 副檔名,代表一個 **R Markdown** 檔案,可以簡單定義為在 `Markdown 文件` 中嵌入了 `代碼區塊`R 或其他語言)和 `YAML 標頭`(用來指導如何格式化輸出,例如 PDF。因此它作為一個範例的資料科學創作框架允許你將程式碼、程式碼輸出和你的想法結合起來並用 Markdown 記錄下來。此外R Markdown 文件可以被渲染成 PDF、HTML 或 Word 等輸出格式。
> <strong>關於測驗的一個說明</strong>:所有測驗都包含在 [Quiz App folder](../../quiz-app) 中,共52個測驗每個測驗有三個問題。它們從課程中連結但測驗應用程式可以在本地運行請依照 `quiz-app` 資料夾中的指示,在本地架設或部署到 Azure。
| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author |
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 機器學習簡介 | [Introduction](1-Introduction/README.md) | 了解機器學習的基本概念 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 了解這個領域背後的歷史 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 建立及應用機器學習模型時,學生應考慮的重要公平性哲學議題是什麼? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | 機器學習研究人員使用了哪些技術來建立機器學習模型? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回歸簡介 | [Regression](2-Regression/README.md) | 使用 Python 和 Scikit-learn 進行回歸模型入門 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 視覺化和清理數據以準備機器學習 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立線性和多項式回歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立邏輯回歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 一個網頁應用 🔌 | [Web App](3-Web-App/README.md) | 建立一個使用你訓練過的模型的網頁應用 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類簡介 | [Classification](4-Classification/README.md) | 清理、準備及視覺化數據;分類入門 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亞洲及印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器入門 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亞洲及印度料理 🍜 | [Classification](4-Classification/README.md) | 更多分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亞洲及印度料理 🍜 | [Classification](4-Classification/README.md) | 利用你的模型建立推薦系統網頁應用 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 叢集分析簡介 | [Clustering](5-Clustering/README.md) | 清理、準備及視覺化數據;叢集分析入門 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索尼日利亞音樂品味 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-均值叢集分析法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理簡介 ☕️ | [Natural language processing](6-NLP/README.md) | 通過建立一個簡單機器人學習自然語言處理基礎 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見的 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 深入了解處理語言結構時所需的常見任務 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用珍·奧斯汀文本進行翻譯和情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論1進行情感分析 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論2進行情感分析 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測入門 | [Time series](7-TimeSeries/README.md) | 時間序列預測入門 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界用電量 ⚡️ - 使用 ARIMA 進行時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界用電量 ⚡️ - 使用 SVR 進行時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支持向量回歸進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習入門 | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning 強化學習入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 幫彼得避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | 真實世界機器學習場景與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習有趣且具啟發性的真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | 使用 RAI 控制台進行機器學習模型除錯 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible AI 控制台組件進行機器學習模型除錯 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我們的 Microsoft Learn 收藏中找到本課程所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線使用
你可以使用 [Docsify](https://docsify.js.org/#/) 離線運行本文件。請 Fork 本倉庫,於你的本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在本倉庫根目錄輸入 `docsify serve`。網站將會在你的本地端的 3000 埠啟動`localhost:3000`。
## PDF
請在此處找到包含連結的課程綱要 pdf [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。
## 🎒 其他課程
我們團隊也有其他課程!請查看
我們團隊還製作其他課程!歡迎瀏覽
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -183,54 +183,65 @@
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![入門 MCP](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![入門 AI 代理人](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 生成式 AI 系列
[![入門生成式 AI](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### 核心學習
[![入門機器學習](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![入門數據科學](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![入門 AI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![入門網絡安全](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![入門網頁開發](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![入門物聯網](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![入門 XR 開發](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot 系列
[![AI 配對編程 Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## 尋求幫助
## 獲取幫助
如果你遇到困難或對建立 AI 應用有任何疑問,歡迎加入學習者與經驗豐富的開發者討論 MCP 的群組。這是一個支持性的社群,歡迎提問並自由分享知識
如果你在學習機器學習或建立 AI 應用程式時遇到困難或有疑問,別擔心——幫助隨時可得
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
你可以加入其他學習者與開發者的討論,提出問題,並與社群分享你的想法。
- 加入社群,與其他人一同提問和學習
- 討論機器學習的概念和專案想法
- 獲得經驗豐富開發者的指導
一個支持性的社群是提升技能與更快解決問題的好方法。
如果你在建立過程中有產品回饋或發現錯誤,請訪問:
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
如果你發現錯誤、問題,或有建議改善的地方,也可以在本儲存庫中開啟 **Issue** 回報。
如需產品反饋或搜尋現有社群帖子,請訪問開發者論壇:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 額外學習提示
- 每次課後復習筆記本以加深理解。
- 練習自行實作演算法。
- 利用所學概念探索真實世界數據集。
- 每堂課後複習筆記本以加深理解。
- 自己練習實作演算法。
- 使用學到的概念探究真實世界的資料集。
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於翻譯準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件以其原文版本為權威資料。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用本翻譯所引致之任何誤解或誤釋承擔責任
本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 所翻譯。儘管我們致力於確保準確性,請注意自動翻譯可能包含錯誤或不準確之處。原始語言版本的文件應被視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯所產生的任何誤解或錯誤詮釋負責
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "zh-TW"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T11:27:12+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:20:06+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "zh-TW"
},
@ -168,8 +168,8 @@
"language_code": "zh-TW"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T09:56:15+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:21:13+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "zh-TW"
},
@ -552,8 +552,8 @@
"language_code": "zh-TW"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:08:38+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:18:29+00:00",
"source_file": "README.md",
"language_code": "zh-TW"
},

@ -1,97 +1,96 @@
# 使用 Scikit-learn 建立迴歸模型:四種迴歸方式
## 初學者筆記
## 初學者說明
線性迴歸用於當我們想預測一個**數值**(例如房價、溫度或銷售額)時。
它透過找到一條最佳代表輸入特徵與輸出之間關係的直線來運作。
線性迴歸用於我們想預測<strong>數值型</strong>結果(例如房價、溫度或銷售額)時。它透過尋找一條最能代表輸入特徵與輸出之間關係的直線來工作。
在本課程中,我們專注於理解基本概念,然後再探討更進階的迴歸技術。
![線性與多項式迴歸資訊圖](../../../../translated_images/zh-TW/linear-polynomial.5523c7cb6576ccab.webp)
> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作
本課程重點放在理解概念,稍後會探討更進階的迴歸技術。
![Linear vs polynomial regression infographic](../../../../translated_images/zh-TW/linear-polynomial.5523c7cb6576ccab.webp)
> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
> ### [本課程 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [本課程也提供 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 介紹
迄今為止,你已經探索了什麼是迴歸,並使用本課程將持續使用的南瓜定價資料集的範例數據。你也用 Matplotlib 進行了視覺化。
到目前為止,你已經了解了迴歸是什麼,並使用了本課程中將持續使用的南瓜價格資料集進行了範例資料的探索。你也使用 Matplotlib 進行了視覺化。
現在你準備更深入了解機器學習的迴歸。雖然視覺化能幫助你理解資料,機器學習真正的強大之處在於訓練模型。模型在歷史數據上訓練,能自動捕捉數據的依賴關係,並讓你能對新數據(模型未見過的)進行預測。
現在已經準備更深入了解機器學習的迴歸。雖然視覺化可以幫助你理解資料但機器學習的真正強大之處在於_訓練模型_。模型在歷史資料上訓練能自動捕捉資料間的相依關係並能為模型沒見過的新資料做出預測。
本課程你將了解兩種迴歸類型_基本線性迴歸_和_多項式迴歸_以及這些技術背後的一些數學原理。這些模型將讓我們根據不同輸入數據預測南瓜價格。
本課將學習兩種迴歸_基本線性迴歸_與_多項式迴歸_並了解這些技術背後的一些數學原理。這些模型將允許我們依據不同的輸入資料預測南瓜價格。
[![機器學習初學者-理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "機器學習初學者-理解線性迴歸")
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 點擊上圖觀看線性迴歸的短片介紹
> 🎥 點擊上方圖片看關於線性迴歸的短影片概述
> 整個課程假設數學知識最低限度,並試圖讓來自其他領域的學生也能理解,所以請留意筆記、🧮 註解、圖解及其他學習工具,幫助理解。
> 在整個課程中,我們假設數學知識最小,並致力於讓來自其他領域的學生也能理解,因此請留意筆記、🧮 註解、圖表及其他學習工具以協助理解。
### 先備知識
應該已熟悉我們正在檢視的南瓜資料結構。它已預先載入且清理完畢於本課程的 _notebook.ipynb_ 檔案中。在該檔中,南瓜價格以每蒲式耳計算,並顯示於新的資料框中。請確保你可以在 Visual Studio Code 的執行核心中執行這些筆記本。
現在應該已熟悉我們所研究的南瓜資料結構。資料已在本課的 _notebook.ipynb_ 檔中預先載入並清理過。該檔案中,南瓜價格已按每蒲式耳顯示。請確保你能在 Visual Studio Code 的 kernel 中執行這些筆記本。
### 準備
### 準備工作
提醒一下,你載入這些資料是為了對它提出問題。
提醒你,我們載入此資料是為了提出問題:
- 什麼時候是買南瓜的最佳時機
- 我期望一箱小型南瓜的價格是多少?
- 我應該買半蒲式耳的籃子還是一箱 1又1/9蒲式耳的包裝?
讓我們繼續挖掘這些數據
- 什麼時候買南瓜最划算
- 一箱迷你南瓜的大致價格是多少?
- 我該買半蒲式耳籃裝還是 1 1/9 蒲式耳箱裝?
讓我們繼續深入這份資料
在上一課中,你建立了 Pandas 資料框並填入原始數據集的一部分,透過蒲式耳將價格標準化。不過這樣你只能取得大約 400 筆資料,且僅限秋季月份。
上一課中,你建了一個 Pandas 資料框,並填入原始資料部分內容,統一以蒲式耳價格化。這樣你只蒐集到約 400 筆資料,且只有秋季月份。
看看本課程附帶筆記本中預先載入的數據。數據已被載入並繪製了初始的散點圖,展示月份資料。也許我們可以透過更進一步清理,得關於資料性質的更多細節。
看看本課附帶筆記本預先載入的資料。資料已準備好,並繪製了最初的散點圖以顯示月份資料。也許我們可以透過更進一步清理,得關於資料性質的更多細節。
## 線性迴歸線
同在第 1 課中所學,線性迴歸的目標是繪製一條線來
你在第一課學習的,線性迴歸的目標是能夠繪製出一條線,用以
- **顯示變數關係**。顯示變數之間的關係
- **進行預測**。準確預測新數據點在該線上的位置。
- <strong>顯示變數關係</strong>。展示變數間的關聯
- <strong>做出預測</strong>。準確預測新數據點相較於該線的位置
「最小平方法迴歸」通常用來畫這類線。最小平方法指的是在模型中最小化總誤差的過程。對每個數據點,我們測量實際點與迴歸線之間的垂直距離(稱為殘差)。
通常使用<strong>最小平方回歸</strong>繪製這類線條。名詞「最小平方」指的是我們在模型中將誤差總和降到最低的過程。對每個資料點,我們測量該點與回歸線間的垂直距離(稱為殘差)。
我們將距離平方有兩個主要原因
我們這些距離平方的原因有兩個:
1. **避免正負抵銷:** 我們希望將 -5 的誤差視同 +5平方使所有值變成正值。
1. <strong>大小勝於方向</strong>:希望把誤差 -5 與 +5 視為同樣大小,平方能將所有數值轉為正值。
2. **懲罰離群值:** 平方會給大誤差更大權重,迫使線條更貼近遠離的點。
2. <strong>重懲離群值</strong>:平方對較大誤差給予更多權重,促使線條更接近偏離較遠的點。
接著我們會把所有平方值加總起來。目標是找到特定的線,使最終總和達到最小值(可能的最小值),因此稱作「最小平方法」。
接著,我們將所有平方值相加。目標是找到使這個總和最小的那條線,因此稱為「最小平方」。
> **🧮 答案告訴我數學**
> **🧮 給我數學公式**
>
> 這條線稱為 _最佳擬合線_,可用[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression) 表示:
> 這條稱為_最佳擬合線_的直線可以透過[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
>
> ```
> Y = a + bX
> ```
>
> `X` 是「解釋變數」;`Y` 是「應變數」。線的斜率為 `b``a` 是 y 截距,表示當 `X = 0` 時,`Y` 的值。
> `X` 是「自變數」,`Y` 是「應變數」。直線的斜率為 `b``a` 是截距,指當 `X = 0` 時的 `Y` 值。
>
>![計算斜率](../../../../translated_images/zh-TW/slope.f3c9d5910ddbfcf9.webp)
>
> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
>
> 換句話說,將我們南瓜數據的原始問題「按月份預測南瓜每蒲式耳價格」,`X` 代表價格,`Y` 代表銷售月份。
> 換句話說,回到我們南瓜資料的初始問題:「按月份預測南瓜每蒲式耳價格」,`X` 代表價格,`Y` 代表銷售月份。
>
>![完成式](../../../../translated_images/zh-TW/calculation.a209813050a1ddb1.webp)
>![完成方程式](../../../../translated_images/zh-TW/calculation.a209813050a1ddb1.webp)
>
> 計算 Y 的值。如果你付大約 4 美元,一定是 4 月!資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 製作
> 計算 Y 值。如果你付了約 4 美元,那一定是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作
>
> 計算該線的數學必須顯示斜率,斜率也取決於截距,表示 `X = 0``Y` 在哪裡。
> 計算直線的公式必須呈現斜率,同時也取決於截距,即當 `X=0``Y`在哪裡。
>
> 你可以 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站觀察計算方法。也可造訪 [此最小平方計算器](https://www.mathsisfun.com/data/least-squares-calculator.html),觀察數值如何影響線段
> 你可以參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站中這些值的計算方法。也可利用 [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) 觀察數值如何影響直線
## 相關係數
## 相關
還有一個要理解的名詞是給定 X 和 Y 變數間的**相關係數**。透過散點圖可以快速將其視覺化。若散點排成一條整齊的線,相關性高;若散點亂散在 X 與 Y 間,相關性低。
另一個要理解的概念是給定 X 和 Y 變數之間的<strong>相關係數</strong>。利用散點圖可快速視覺化此係數。若數據點呈現整齊的線狀排列,代表高度相關;若散佈在 X 與 Y 間各處,則相關性低。
好的線性迴歸模型,應該是透過最小平方法計算出迴歸線,且其相關係數數值偏高(靠近 1而非 0
良好的線性迴歸模型會在最小平方迴歸線中擁有高(較接近 1相關係數
✅ 執行本課程附帶的筆記本,查看「月份對價格」的散點圖。根據你對散點圖的視覺判斷,南瓜銷售的月份與價格關聯性高還是低?若改用更細緻的度量,像是「一年中的第幾天」(例如從年初算起的天數),這個關係會改變嗎?
✅ 執行本課附帶的筆記本,觀察「月份對價格」的散點圖。根據你對散點圖的視覺理解,南瓜銷售中月份和價格的相關性是高還是低?若改用較細緻的衡量標準,像是<em>一年中的第幾天</em>(即從年初算起的天數)情況會有改變嗎?
在下面的程式碼中,我們假設已清理資料,並獲得一個名為 `new_pumpkins` 的資料框,類似如下
以下程式碼假設資料已清理,並取得名為 `new_pumpkins` 的資料框,如下所示
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@ -101,36 +100,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> 用於清理資料的程式碼可參考 [`notebook.ipynb`](notebook.ipynb)。我們執行了與前一課相同的清理步驟,並使用以下運算式計算了 `DayOfYear` 欄位:
> 清理資料的程式碼可在 [`notebook.ipynb`](notebook.ipynb) 找到。我們執行了與前一課相同的清理步驟,並使用下列表達式計算 `DayOfYear` 欄位:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
既然你已了解線性迴歸背後的數學,讓我們建立一個迴歸模型,看看是否能預測哪種南瓜包裝會有最佳南瓜價格。購買南瓜作為節慶南瓜園的你,可能想利用這些資訊來最佳化購買策略
了解線性迴歸的數學後,接著建立一個迴歸模型,看看是否能預測哪種南瓜包裝會有最佳價格。想在南瓜節使用南瓜的人,可能想利用這些資訊優化購買方案
## 尋找相關性
## 探索相關性
[![機器學習初學者-尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "機器學習初學者-尋找相關性:線性迴歸的關鍵")
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 點擊上圖觀看相關性的短片介紹。
> 🎥 點擊上方圖片看相關性的短影片介紹。
從上一課你可能已看到,不同月份的平均價格如下:
你可能已在前一課看到,不同月份的平均價格大致如下:
<img alt="每月平均價格" src="../../../../translated_images/zh-TW/barchart.a833ea9194346d76.webp" width="50%"/>
<img alt="Average price by month" src="../../../../translated_images/zh-TW/barchart.a833ea9194346d76.webp" width="50%"/>
表示應該存在某種相關性,我們可以試著訓練線性迴歸模型,預測 `Month``Price` 之間,或 `DayOfYear``Price` 之間的關係。下圖展示了後者的散佈圖
暗示應該存在某種相關關係,我們可以嘗試用線性迴歸模型來預測 `Month``Price`,或 `DayOfYear``Price` 間的關係。下方散點圖展示後者
<img alt="價格 vs. 一年中的日子散點圖" src="../../../../translated_images/zh-TW/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/zh-TW/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
讓我們使用 `corr` 函數看看是否存在相關
來看看我們用 `corr` 函數測試相關性結果
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
看起來,按月份的相關性約為 -0.15,按「一年中第幾天」的相關性約為 -0.17,但可能還存在其他重要關係。看起來不同南瓜品種對價格形成了不同的群集。為了驗證這點,我們用不同顏色標示每個南瓜種類,並透過傳遞 `ax` 參數給 `scatter` 繪圖函式,將所有點繪在同一張圖中
「月份」的相關係數大約是 -0.15,「年份中的某天」約是 -0.17,相關性看起來不大,不過可能還存在其他重要關係。似乎價格分成幾個群集,對應著不同南瓜品種。為驗證此假設,我們用不同顏色繪製南瓜分類。傳入 `ax` 參數給 `scatter` 函數,把所有點繪在同一張圖
```python
ax=None
@ -140,42 +139,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="價格 vs. 一年中日子散點圖(顏色區分)" src="../../../../translated_images/zh-TW/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/zh-TW/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
調查顯示,南瓜的品種對價格的影響比實際銷售日期更大。我們可用直條圖視覺化
調查顯示品種對價格整體影響遠大於銷售日期。條形圖更明顯說明
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="價格 vs. 品種直條圖" src="../../../../translated_images/zh-TW/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="Bar graph of price vs variety" src="../../../../translated_images/zh-TW/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
現在先專注於其中一種南瓜品種「派型」,看看日期對價格有什麼影響:
暫且只看「派用型」南瓜,觀察日期對價格的影響:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="價格 vs. 一年中日子散點圖" src="../../../../translated_images/zh-TW/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/zh-TW/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
接著用 `corr` 函數計算 `Price``DayOfYear` 的相關係數,可能會得到約 `-0.27`,這代表訓練預測模型是有意義的。
此時如果用 `corr` 計算 `Price``DayOfYear` 的相關係數,會是約 `-0.27`,代表訓練預測模型是可行的。
> 在訓練線性迴歸模型前,務必確保數據清理乾淨。線性迴歸對缺失值不敏感,因此最好去除所有空值
> 在訓練線性迴歸模型前,確保數據乾淨很重要。線性迴歸對缺失值敏感,通常會把空值剔除
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
另一種選擇是以該欄位的平均值填補空值。
另一種做法是用對應欄的平均值填補缺失值。
## 簡單線性迴歸
[![機器學習初學者-使用 Scikit-learn 的線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "機器學習初學者-使用 Scikit-learn 的線性與多項式迴歸")
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 點擊上圖觀看線性與多項式迴歸的短片介紹。
> 🎥 點擊上方圖片看簡單線性及多項式迴歸的短影片介紹。
我們將使用 **Scikit-learn** 框架來訓練線性迴歸模型。
我們將**Scikit-learn** 函式庫訓練線性迴歸模型。
```python
from sklearn.linear_model import LinearRegression
@ -183,48 +182,48 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
我們先將輸入值(特徵)與預期輸出(標籤)分離成不同的 numpy 陣列:
起初,我們將輸入值(特徵)與期望輸出(標籤)分別放入兩個 numpy 陣列:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 請注意,我們對輸入資料執行 `reshape`,讓線性迴歸套件能正確理解。線性迴歸期望 2D 陣列作為輸入,陣列的每一列代表一組輸入特徵向量。我們這裡只有一個輸入,因此需要 N×1 形狀的陣列,其中 N 為資料集大小。
> 注意我們對輸入資料做了 `reshape`,讓線性迴歸套件正確識別。它預期輸入為 2 維陣列,每列為一組特徵向量。此處只有一個輸入,故需求是 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`。這代表價格隨時間似乎略微下降,但幅度不大,大約每天跌了兩分錢。我們也可以使用 `lin_reg.intercept_` 取得回歸與 Y 軸的交叉點,這在我們的例子中會是大約 `21`,顯示年初的價格。
`LinearRegression` 物件在 `fit` 後包含了回歸的所有係數,可以使用 `.coef_` 屬性存取。在我們這個例子中,只有一個係數,約為 `-0.017`。這意味著價格似乎隨時間略微下降,但幅度不大,大約是每天下降兩分錢。我們也可以使用 `lin_reg.intercept_` 存取回歸線與 Y 軸的交點——在我們的例子中會約為 `21`,代表年初的價格。
為了檢視模型的準確我們可以在測試資料集上預測價格然後衡量預測值與期望值的接近程度。這可以用均方誤差MSE來衡量它是所有預期值與預測值差異平方的平均值
為了檢視模型的準確我們可以在測試資料集上預測價格然後衡量預測值與實際值的接近程度。這可以透過均方根誤差RMSE指標完成其為所有實際值與預測值平方差的平均數的平方根
```python
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
我們的誤差大約是 2 點,約為 ~17%。表現並不佳。判斷模型品質的另一個指標是**決定係數**,可用以下方式取得:
我們的誤差約為 2 點,約佔 ~17%。不是非常理想。模型品質的另一指標是 <strong>判定係數</strong>,可以用以下方法取得:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
若該值為 0表示模型沒有考慮輸入資料等同於*最差的線性預測*,也就是輸出結果的平均值。值為 1 意味著我們可以完美地預測所有期望輸出。在我們的例子中,決定係數約為 0.06相當低。
若值為 0表示模型未考慮輸入資料表現為 <em>最差的線性預測器</em>,即結果的平均值。值為 1 表示可以完美預測所有目標輸出。在我們的例子中,判定係數約為 0.06,屬於相當低。
我們還可以將測試資料與回歸直線繪製在一起,更清楚地了解回歸情況
我們也可以繪製測試資料與回歸線,以更清楚觀看回歸效果
```python
plt.scatter(X_test,y_test)
@ -233,19 +232,19 @@ plt.plot(X_test,pred)
<img alt="Linear regression" src="../../../../translated_images/zh-TW/linear-results.f7c3552c85b0ed1c.webp" width="50%" />
## 多項式回歸
## 多項式回歸Polynomial Regression
另一種線性回歸是多項式回歸。有時變數之間為線性關係,例如體積越大的南瓜價格越高,但有時這種關係無法用一平面或直線來表示
另一類線性回歸是多項式回歸。雖然變數間有時呈線性關係——例如南瓜體積越大,價格越高——有時這些關係無法用平面或直線來描繪
✅ 這裡有[更多使用多項式回歸資料範例](https://online.stat.psu.edu/stat501/lesson/9/9.8)
✅ 這裡有[更多的例](https://online.stat.psu.edu/stat501/lesson/9/9.8)適用於多項式回歸的資料
再看看日期和價格間的關係。這個散佈圖看起來一定適合用直線分析嗎?價格不是會波動嗎?這種情況下,可以嘗試多項式回歸。
再看一次日期與價格的關係。這個散佈圖看起來一定得用直線分析嗎?價格不會波動嗎?此時可以嘗試多項式回歸。
✅ 多項式是可能包含一個或多個變數和係數的數學
✅ 多項式是可能包含一個或多個變數及係數的數學表達
多項式回歸會做出曲線,以更適合非線性資料。在我們的例子中,若將平方的 `DayOfYear` 變數加入輸入資料,即可用拋物線去擬合資料,且該曲線會在一年中的某點出現最小值。
多項式回歸會產生曲線以更好擬合非線性資料。我們若在輸入資料中加入平方的 `DayOfYear` 變數,應該能用拋物線曲線擬合資料,且該曲線在某年內的某點有極小值。
Scikit-learn 提供方便的[pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來串接資料處理的不同步驟。**pipeline** 是一連串的**估計器**。在我們的例子中,我們將建立一個先加入多項式特徵,然後訓練回歸的 pipeline
Scikit-learn 提供方便的 [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) 將不同的資料處理步驟串聯起來。**pipeline** 是一連串的 **estimators**。在我們例子中,建立一個首先加入多項式特徵,接著訓練回歸模型的 pipeline
```python
from sklearn.preprocessing import PolynomialFeatures
@ -256,36 +255,36 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
使用 `PolynomialFeatures(2)` 表示會包含所有二次多項式。在我們這裡,只有 `DayOfYear`<sup>2</sup>,但若有兩個輸入變數 X 和 Y則會加入 X<sup>2</sup>、XY 和 Y<sup>2</sup>。如果想,也可使用更高次數多項式。
使用 `PolynomialFeatures(2)` 意味著會包含所有二階多項式。我們的例子為 `DayOfYear`<sup>2</sup>,如果有兩個輸入變數 X 與 Y會加入 X<sup>2</sup>、XY 與 Y<sup>2</sup>。當然也可以用更高階多項式。
Pipeline 使用方法和原本的 `LinearRegression` 物件一樣,我們可以 `fit` pipeline然後用 `predict` 得到預測結果。下圖是測試資料和擬合曲線:
Pipeline 使用方式與原本的 `LinearRegression` 物件相同,可以 `fit` 來訓練,然後用 `predict` 預測。下圖展示測試資料與擬合曲線:
<img alt="Polynomial regression" src="../../../../translated_images/zh-TW/poly-results.ee587348f0f1f60b.webp" width="50%" />
使用多項式回歸,我們可獲得略低的 MSE 和略高的決定係數,但差異不大。還需考慮其他特徵
使用多項式回歸,我們能獲得稍微更低的 MSE 與更高的判定係數,但差異不大。還是要加入其他特徵考量
> 你可以看到最低的南瓜價格大約出現在萬聖節前後。你怎麼解釋這個現象?
> 你可以看到南瓜價格的最低點出現在萬聖節左右。你如何解釋這個現象?
🎃 恭喜你,剛剛建立了一個能幫助預測派用南瓜價格的模型。你或許可以對所有南瓜種類重複這個流程,但那會很繁瑣。現在我們來學習如何讓模型納入南瓜品種差異
🎃 恭喜,你已建立了可協助預測派用南瓜價格的模型。你可以用同樣流程為所有南瓜種類建立模型,但會很繁瑣。接著讓我們學習如何將南瓜品種納入模型中
## 類別特徵
## 類別變數Categorical Features
理想狀況下,我們希望使用同一個模型預測不同南瓜品種的價格。然而,`Variety` 欄位不同於 `Month` 等欄位,因為它包含非數值資料。這類欄位稱為**類別特徵**。
理想狀況下,我們希望能用同一個模型預測不同南瓜品種的價格。但 `Variety` 欄位與 `Month` 等欄位不同,因為它包含非數值資料。這種欄位稱為 **類別變數categorical**。
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 點擊上方圖片,觀看使用類別特徵的簡短影片介紹
> 🎥 點擊上方圖片,觀看使用類別特徵的簡短說明影片。
這裡展示不同品種的平均價格差異
這裡展示了平均價格與品種的關係
<img alt="Average price by variety" src="../../../../translated_images/zh-TW/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
要考慮品種,我們首先需要將它轉換成數值形式,或稱**編碼**。有幾種方法:
要考慮品種,我們必須先將它轉成數字形式,或叫做<strong>編碼</strong>。有幾種方法:
* 簡單的**數字編碼**會建立品種列表,然後用該列表的索引取代品種名稱。但對線性回歸而言,這不是好方法,因為線性回歸直接使用編號數值並乘以係數,然而索引與價格間的關係很明顯非線性,即使索引是有序的
* **One-hot 編碼**會將 `Variety` 欄位拆成四個欄位,每個欄位對應一品種。每一列中對應品種的欄位為 `1`,其餘為 `0`。這樣線性回歸會有四個係數,分別代表各品種的「基礎價格」(或可視為「額外價格」)
* 簡單的<strong>數字編碼</strong>會建立不同品種的編號表,然後用編號替換品種名稱。對線性回歸來說這不佳,因為數字編碼會被視為數值並乘以係數,造成明顯的非線性關係,尤其即便我們嘗試排序編號仍然不合適
* <strong>One-hot 編碼</strong>會把 `Variety` 欄拆成四個欄位,分別代表四種品種。每欄包含 1 或 0表示該行是否屬於此品種。線性回歸有四個係數各自代表各品種的“基本價格”或“額外價格”
下面程式碼顯示如何以 one-hot 編碼品種
以下程式碼示範如何對品種做 one-hot 編碼
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -302,14 +301,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
若要使用 one-hot 編碼的品種作為輸入訓練線性回歸,只要正確初始化 `X``y`
若要用 one-hot 編碼的品種訓練線性回歸,只要正確建立 `X``y` 即可
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
他程式碼與之前訓練線性回歸相同。若你嘗試執行,會看到均方誤差差不多,但決定係數大幅提升(約 77%)。想得到更準確的預測,可以加入更多類別特徵以及數值特徵,如 `Month``DayOfYear`。要獲得一個完整的特徵陣列,可以使用 `join`
餘程式碼與之前線性回歸訓練過程相同。嘗試執行後會看到均方誤差大致相同,但判定係數明顯提升到約 77%。若要更準確的預測,可以將更多類別特徵和數值特徵(如 `Month``DayOfYear`)納入。用 `join` 合併成一個大特徵陣列
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +318,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
這裡也納入了 `City``Package` 類型,得到 MSE 2.8410%)和決定係數 0.94
這裡也`City``Package` 類型納入,得到的 MSE 降至 2.8410%),判定係數提升至 0.94
## 綜合應用
## 綜合建模
得到最佳模型我們可將上例中合併的one-hot 編碼類別 + 數值)資料,搭配多項式回歸。以下是完整程式碼以方便使用:
了取得最佳模型我們可以將前面例子中合併one-hot 編碼類別 + 數值)資料與多項式回歸結合。以下是完整範例程式碼供您方便使用:
```python
# 設置訓練資料
@ -333,17 +332,17 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# 進行訓練和測試資料分
# 進行訓練-測試資料切
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 設並訓練流程
# 設並訓練流程
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# 預測測試資料結果
# 預測測試資料結果
pred = pipeline.predict(X_test)
# 計算均方誤差和定係數
# 計算均方誤差和定係數
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
@ -351,36 +350,36 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
樣應該可達到最高決定係數接近 97%MSE=2.23(約 8% 預測誤差)。
會讓我們得到接近 97% 的判定係數,以及 MSE = 2.23(約 8% 預測誤差)。
| 模型 | MSE | 定係數 |
|-------|-----|-----------|
| 模型 | MSE | 定係數 |
|-------|-----|----------------|
| `DayOfYear` 線性 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 |
| `Variety` 線性 | 5.24 (19.7%) | 0.77 |
| 特徵 線性 | 2.84 (10.5%) | 0.94 |
| 特徵 多項式 | 2.23 (8.25%) | 0.97 |
| 所有特徵 線性 | 2.84 (10.5%) | 0.94 |
| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 |
🏆 做得好!你在一堂課中建立了四個回歸模型,並將模型品質提升到 97%。在最後一節「回歸型」中,你將學習用邏輯回歸判斷類別。
🏆 做得好!你在這一課建立了四個迴歸模型,並將模型品質提升到 97%。在迴歸的最後一節我們會學習羅吉斯迴歸Logistic Regression判斷類別。
---
## 🚀 挑戰
## 🚀挑戰
本筆記本中測試多個不同變數,觀察其相關性與模型準確度的對應關係。
此筆記本中測試不同變數,看看其相關度與模型準確率的關係。
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 複習與自學
本課程介紹線性回歸。還有許多重要的回歸型態。可閱讀邁進式回歸、嶺回歸、套索回歸與彈性網路技巧。深入了解建議學習[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
本課程學習了線性回歸。還有其他重要的迴歸類型像是逐步回歸、Ridge、Lasso 與 Elasticnet 技術。推薦研讀的優良課程為 [史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## 作業
[建立一個模型](assignment.md)
[建立模型](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤譯負責。
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保翻譯準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。因使用本翻譯所產生之任何誤解或誤用,我們概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 美食分類器 1
# Cuisine classifiers 1
這節課中,您將使用上一節課保存的數據集,該數據集包含平衡且乾淨的有關美食的數據
本課程中,您將使用上課節保存的完整且平衡的乾淨資料集,這些資料集是關於各種料理的
您將使用這個數據集和多種分類器來_根據一組食材預測特定的國家美食_。在此過程中您將深入了解算法如何用於分類任務
您將使用這個資料集搭配各種分類器_根據一組食材預測特定國家的料理_。在此過程中您將進一步了解算法如何應用於分類任務的各種方式
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
# 準備工作
假設您已完成[第一課](../1-Introduction/README.md),請確保在根目錄的 `/data` 文件夾中存在一個 _cleaned_cuisines.csv_ 文件,用於這四節課
假設您已完成[第1課](../1-Introduction/README.md),請確保根目錄下的 `/data` 資料夾中有一個 _cleaned_cuisines.csv_ 檔案,這四堂課皆會使用
## 練習 - 預測國家美食
## 練習 - 預測國家料理
1. 在本課的 _notebook.ipynb_ 文件夾中,導入該文件以及 Pandas 庫:
1. 在本課的 _notebook.ipynb_ 資料夾中,匯入該檔案及 Pandas 函式庫:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
數據看起來如下:
資料看起來如下:
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 現在,導入更多的庫:
1. 現在,匯入更多函式庫:
```python
from sklearn.linear_model import LogisticRegression
@ -40,7 +40,7 @@
import numpy as np
```
1. 將 X 和 y 坐標分成兩個數據框進行訓練。`cuisine` 可以作為標籤數據框:
1. 將 X 和 y 坐標分為兩個資料框做訓練,`cuisine` 為標籤資料框:
```python
cuisines_label_df = cuisines_df['cuisine']
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. 使用 `drop()` 刪除 `Unnamed: 0` 列和 `cuisine` 列。將其餘數據保存為可訓練的特徵:
1. 丟掉 `Unnamed: 0` 欄和 `cuisine` 欄,呼叫 `drop()`。並將剩下資料保存為可訓練特徵:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
您的特徵看起來如下
您的特徵看起來像這樣
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,13 +75,13 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
現在您可以開始訓練模型了
現在你已準備好訓練你的模型
## 選擇分類器
現在您的數據已清理並準備好訓練,您需要決定使用哪種算法來完成任務
現在您的資料已經清理完畢且準備好進行訓練,您必須決定使用哪個算法
Scikit-learn 將分類歸類為監督學習,在該類別中您會找到許多分類方法。[種類繁多](https://scikit-learn.org/stable/supervised_learning.html),乍看之下可能令人眼花繚亂。以下方法都包含分類技術:
Scikit-learn 把分類歸類於監督式學習(Supervised Learning),在該類別中會發現許多分類方式。 [種類繁多](https://scikit-learn.org/stable/supervised_learning.html) 首見時會令人眼花撩亂。以下方法均包含分類技術:
- 線性模型
- 支持向量機
@ -90,70 +90,70 @@ Scikit-learn 將分類歸類為監督學習,在該類別中您會找到許多
- 高斯過程
- 決策樹
- 集成方法(投票分類器)
- 多類和多輸出算法(多類和多標籤分類,多類-多輸出分類)
- 多類別與多輸出算法(多類別和多標籤分類,多類別-多輸出分類)
> 您也可以使用[神經網絡進行數據分類](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),但這超出了本課的範疇
> 您也可以使用[神經網路來分類資料](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification),但這超出本課範圍
### 選擇哪個分類器?
### 選擇何種分類器?
那麼應該選擇哪個分類器呢通常通過嘗試多種分類器並尋找良好的結果是一種測試方法。Scikit-learn 提供了一個[並排比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html),在創建的數據集上比較 KNeighbors、SVC 兩種方式、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 和 QuadraticDiscrinationAnalysis並以可視化方式展示結果:
所以,應該選哪種分類器?通常嘗試幾種分類器並尋找好的結果是個測試方法。 Scikit-learn 提供一個[並排比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)的範例,該範例在一個生成的資料集中,並列比較 KNeighbors、兩種方式的 SVC、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB 及 QuadraticDiscrinationAnalysis並以視覺化方式呈現結果:
![分類器比較](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> 圖表來自 Scikit-learn 的文檔
![comparison of classifiers](../../../../translated_images/zh-TW/comparison.edfab56193a85e7f.webp)
> 圖為 Scikit-learn 文件中產生的圖表
> AutoML 可以通過在雲端運行這些比較來輕鬆解決這個問題,幫助您選擇最適合您數據的算法。試試看[這裡](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML 並行在雲端執行這些比較,幫助您為資料選擇最佳算法,解決此問題。請在[此處嘗試](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### 更好的方
### 更佳的做
盲目猜測更好的方法是遵循這份可下載的[機器學習速查表](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)。這裡我們發現針對我們的多類問題,我們有一些選擇:
起盲目猜測,更好方式是參考可下載的[機器學習速查表](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) 中的建議。這裡我們發現針對我們的多類問題,我們有一些選擇:
![多類問題速查表](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> 微軟算法速查表的一部分,詳細介紹了多類分類選項
![cheatsheet for multiclass problems](../../../../translated_images/zh-TW/cheatsheet.07a475ea444d2223.webp)
> 微軟演算法速查表的一段,詳細介紹多類別分類選項
✅ 下載這份速查表,打印出來,掛在牆上!
✅ 下載此速查表,列印並掛在您的牆壁上!
### 推理
讓我們看看是否可以根據我們的限制推理出不同的方法
讓我們看看在現有限制下,如何對各種方法進行推理
- **神經網絡太重**。考慮到我們的數據集雖然乾淨但規模較小,以及我們通過筆記本本地運行訓練的事實,神經網絡對於這項任務來說過於繁重。
- **不使用二類分類器**。我們不使用二類分類器因此排除了一對多one-vs-all
- **決策樹或邏輯回歸可能有效**。決策樹可能有效,或者邏輯回歸適用於多類數據
- **多類增強決策樹解決不同問題**。多類增強決策樹最適合非參數任務,例如設計排名的任務,因此對我們來說並不適用。
- **神經網路太龐大。** 以我們乾淨但有限的資料集,且訓練在本地端的 notebook 上運行,神經網路對此任務過於沉重。
- **沒有二元分類器。** 我們不用二元分類器,因此排除一對多(one-vs-all)方法
- **決策樹或邏輯迴歸都可行。** 決策樹可能有效,或針對多類別資料的邏輯迴歸也可
- **多類別提升決策樹解決不同問題。** 多類別提升決策樹適合非參數任務,例如設計排名的任務,因此不適用於我們
### 使用 Scikit-learn
我們將使用 Scikit-learn 分析數據。然而,在 Scikit-learn 中有許多方法可以使用邏輯回歸。查看[可傳遞的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
我們將用 Scikit-learn 來分析資料。但 Scikit-learn 中有多種方式使用邏輯迴歸。請參考[可傳入的參數](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
本上有兩個重要參數 - `multi_class``solver` - 需要指定,當我們要求 Scikit-learn 執行邏輯回歸時。`multi_class` 值應用某種行為。solver 的值是使用的算法。並非所有 solver 都可以與所有 `multi_class` 值配對
有兩個重要參數 - `multi_class``solver` 需要在要求 Scikit-learn 執行邏輯迴歸時指定。`multi_class` 設定採用的行為方式;`solver` 是指定解法算法。並非每個 solver 都能與所有的 `multi_class` 值搭配使用
根據文檔,在多類情況下,訓練算法:
文件中說明,在多類別情形下,訓練演算法:
- **使用一對多OvR方案**,如果 `multi_class` 選項設置為 `ovr`
- **使用交叉熵損失**,如果 `multi_class` 選項設置為 `multinomial`。(目前 `multinomial` 選項僅支持 lbfgssagsaganewton-cg solver。
- **若將 `multi_class` 設為 `ovr`,將採用一對多 (one-vs-rest, OvR) 方案**
- **若將 `multi_class` 設為 `multinomial`,將使用交叉熵損失函數 (cross-entropy loss)**(目前 `multinomial` 選項只支援 lbfgs, sag, saganewton-cg solver
> 🎓 這裡的“方案”可以是 'ovr'(一對多)或 'multinomial'。由於邏輯回歸主要設計用於支持二類分類,這些方案使其能更好地處理多類分類任務。[來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 這裡的「scheme」可以是 ovr一對多multinomial。由於邏輯迴歸本是設計給二元分類這些方案可使其更好地處理多類別分類任務。 [來源](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 “solver” 定義為“用於優化問題的算法”。[來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
> 🎓 「solver」定義為「用於優化問題的算法」。 [來源](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)。
Scikit-learn 提供了這張表格來解釋 solver 如何處理不同數據結構帶來的挑戰:
Scikit-learn 提供這張表格說明不同 solver 如何處理不同結構的挑戰:
![solver](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/zh-TW/solvers.5fc648618529e627.webp)
## 練習 - 分割數據
## 練習 - 分割資料
我們可以專注於邏輯回歸作為我們的第一次訓練嘗試,因為您最近在上一節課中學習了邏輯回歸
通過調用 `train_test_split()` 將數據分為訓練和測試組:
我們可以專注於邏輯迴歸進行第一次訓練,畢竟您在上節課剛學過它
呼叫 `train_test_split()` 將資料分為訓練與測試組:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## 練習 - 應用邏輯回
## 練習 - 使用邏輯迴
由於您使用的是多類情況您需要選擇使用的_方案_以及設置的_solver_。使用 LogisticRegression設置 multi_class 為 `ovr`solver 為 `liblinear` 進行訓練。
由於您選用多類別情境,須決定使用什麼 _scheme__solver_。請用 `LogisticRegression` 指定多類別設定,並搭配 **liblinear** solver 進行訓練。
1. 創建一個邏輯回歸,將 multi_class 設置為 `ovr`solver 設置`liblinear`
1. 建立邏輯迴歸模型,設定 multi_class 為 `ovr`solver `liblinear`
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,27 +163,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ 嘗試使用其他 solver例如 `lbfgs`,它通常設置為默認值
> 注意,當需要展平數據時,可以使用 Pandas 的 [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函數。
準確率超過 **80%**
✅ 嘗試不同 solver如常設定為預設的 `lbfgs`
1. 你可以通過測試一行數據(#50來查看此模型的運行效果
> 注意,需時請用 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 函數將資料攤平成一維。
準確率超過 **80%**!表現良好!
1. 您也可以透過測試一筆資料(第 50 筆)來觀察此模型實際效果:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
結果如下所示
結果會印出
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ 嘗試不同的行號並檢查結果
1. 更深入地分析,你可以檢查此預測的準確性:
✅ 嘗試不同筆數並檢查結果
1. 深入探討,您可以檢查此預測的準確性:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +196,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
結果如下 - 印度菜是模型的最佳猜測,且概率較高
結果已列印 — 印度料理是其最佳猜測,且有很高的機率
| | 0 |
| -------: | -------: |
@ -205,9 +206,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
你能解釋為什麼模型對這是印度菜的判斷如此有信心嗎?
您能解釋為什麼模型相當確定這是印度料理嗎?
1. 通過打印分類報告獲取更多細節,就像你在回歸課程中所做的一樣:
1. 藉由列印分類報告來獲得更多細節,就像你在迴歸課程中所做的那樣:
```python
y_pred = model.predict(X_test)
@ -221,24 +222,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀挑戰
在本課中,你使用清理過的數據構建了一個機器學習模型,該模型可以根據一系列食材預測國家菜系。花些時間閱讀 Scikit-learn 提供的多種分類數據的選項。深入了解 "solver" 的概念,理解其背後的運作原理。
在本課程中,您利用清理過的資料建立一個機器學習模型,能根據一系列配料預測國家料理。花些時間閱讀 Scikit-learn 提供的各種分類資料的選項。深入了解「解算器」的概念,以理解背後運作的原理。
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
## 回顧與自學
## 複習與自學
深入了解邏輯回歸背後的數學原理,參考[這節課](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## 作業
深入探討邏輯迴歸背後的數學,詳見[本課程](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## 作業
[研究 solvers](assignment.md)
[研究解算器](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用本翻譯而引起的任何誤解或錯誤解讀概不負責。
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,請注意自動翻譯可能包含錯誤或不準確之處。原文的母語版本應視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤譯負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -10,228 +10,239 @@
### 🌐 多語言支援
#### 透過 GitHub Action 支援(自動且持續更新)
#### 透過 GitHub Action 支援(自動化且永遠保持最新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](./README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
[阿拉伯語](../ar/README.md) | [孟加拉語](../bn/README.md) | [保加利亞語](../bg/README.md) | [緬甸語 (Myanmar)](../my/README.md) | [中文(簡體)](../zh-CN/README.md) | [中文(繁體,香港)](../zh-HK/README.md) | [中文(繁體,澳門)](../zh-MO/README.md) | [中文(繁體,臺灣)](./README.md) | [克羅埃西亞語](../hr/README.md) | [捷克語](../cs/README.md) | [丹麥語](../da/README.md) | [荷蘭語](../nl/README.md) | [愛沙尼亞語](../et/README.md) | [芬蘭語](../fi/README.md) | [法語](../fr/README.md) | [德語](../de/README.md) | [希臘語](../el/README.md) | [希伯來語](../he/README.md) | [印地語](../hi/README.md) | [匈牙利語](../hu/README.md) | [印尼語](../id/README.md) | [義大利語](../it/README.md) | [日語](../ja/README.md) | [坎納達語](../kn/README.md) | [高棉語](../km/README.md) | [韓語](../ko/README.md) | [立陶宛語](../lt/README.md) | [馬來語](../ms/README.md) | [馬拉雅拉姆語](../ml/README.md) | [馬拉地語](../mr/README.md) | [尼泊爾語](../ne/README.md) | [奈及利亞洋泾浜英語](../pcm/README.md) | [挪威語](../no/README.md) | [波斯語 (Farsi)](../fa/README.md) | [波蘭語](../pl/README.md) | [葡萄牙語 (巴西)](../pt-BR/README.md) | [葡萄牙語 (葡萄牙)](../pt-PT/README.md) | [旁遮普語 (Gurmukhi)](../pa/README.md) | [羅馬尼亞語](../ro/README.md) | [俄語](../ru/README.md) | [塞爾維亞語 (西里爾字母)](../sr/README.md) | [斯洛伐克語](../sk/README.md) | [斯洛文尼亞語](../sl/README.md) | [西班牙語](../es/README.md) | [斯瓦希里語](../sw/README.md) | [瑞典語](../sv/README.md) | [他加祿語 (菲律賓語)](../tl/README.md) | [泰米爾語](../ta/README.md) | [泰盧固語](../te/README.md) | [泰語](../th/README.md) | [土耳其語](../tr/README.md) | [烏克蘭語](../uk/README.md) | [烏爾都語](../ur/README.md) | [越南語](../vi/README.md)
> **較喜歡本機複製?**
> **偏好本機複製?**
>
> 本儲存庫包含超過 50 種語言的翻譯,會大幅增加下載大小。若想不包含翻譯檔案的話,請使用稀疏檢出:
> 本儲存庫包含超過 50 種語言的翻譯,會大幅增加下載大小。若想在無翻譯的情況下進行複製,請使用稀疏簽出:
>
> **Bash / macOS / Linux:**
> **Bash / macOS / Linux**
> ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
>
> **CMD (Windows):**
> **CMDWindows**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
> cd ML-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 這提供您完成課程所需的一切,且下載速度更快
> 這將讓您以更快的速度下載,並取得完成課程所需的一切
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### 加入我們的社群
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
我們正在舉辦 Discord AI 學習系列,請在 2025 年 9 月 18 日至 30 日期間前往 [Learn with AI Series](https://aka.ms/learnwithai/discord) 了解並加入。我們會分享使用 GitHub Copilot 進行資料科學的秘訣與技巧
我們有一個持續進行的 Discord AI 學習系列,詳細資訊與加入請見 [Learn with AI Series](https://aka.ms/learnwithai/discord),活動時間為 2025 年 9 月 18 日至 30 日。您將獲得使用 GitHub Copilot 進行資料科學的技巧與祕訣
![Learn with AI series](../../translated_images/zh-TW/3.9b58fd8d6c373c20.webp)
# 初學者機器學習課程大綱
# 初學者機器學習課程
> 🌍 隨著我們透過全球文化探索機器學習,遍遊世界 🌍
> 🌍 隨著我們透過世界各地的文化探索機器學習,環遊世界一圈吧 🌍
微軟的 Cloud Advocates 很高興能提供一個為期 12 週、共 26 堂課的完整【機器學習】課程。在此課程中,您將學習有時被稱為【經典機器學習】的內容,主要使用 Scikit-learn 函式庫,並避免深度學習,後者收錄於我們的 [AI for Beginners 課程](https://aka.ms/ai4beginners)。您也能搭配我們的 [Data Science for Beginners 課程](https://aka.ms/ds4beginners) 來學習
微軟的雲端倡導者很高興提供一個為期 12 週、共 26 課的完整課程,專注於 <strong>機器學習</strong>。在本課程中,您將學習通常被稱作 <strong>經典機器學習</strong> 的內容,主要使用 Scikit-learn 作為函式庫,並避免深度學習,深度學習內容可在我們的 [AI 初學者課程](https://aka.ms/ai4beginners) 中找到。這些課程也可與我們的 ['資料科學初學者課程'](https://aka.ms/ds4beginners) 搭配使用
隨著我們環遊世界,將這些經典技術應用於來自世界各地的數據。每個課程包含課前與課後小測驗、書面操作指引、解答、作業等。透過專案導向的教學法,學生能邊學邊做,這是讓新技能深植的重要方法。
與我們一起環遊世界,將這些經典技術應用於來自世界各地的資料。每課包括課前與課後測驗、書面教學說明、解答、作業等。我們的專案導向教學法讓您在實作中學習,是培養新技能的有效方法。
**✍️ 衷心感謝作者團隊** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu Amy Boyd
**✍️ 衷心感謝作者** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu Amy Boyd
**🎨 同時感謝插畫作者** Tomomi Imura、Dasani Madipalli 及 Jen Looper
**🎨 同時感謝插畫** Tomomi Imura、Dasani Madipalli 及 Jen Looper
**🙏 特別感謝🙏 微軟學生大使作者、審閱者與內容貢獻者**,特別是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila Snigdha Agarwal
**🙏 特別感謝 Microsoft 學生大使作者、審閱者與內容貢獻者**,尤其是 Rishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila Snigdha Agarwal
**🤩 也特別感謝 Microsoft 學生大使 Eric Wanjau、Jasleen Sondhi 與 Vidushi Gupta 為我們貢獻了 R 課程!**
**🤩 額外感謝 Microsoft 學生大使 Eric Wanjau、Jasleen Sondhi 及 Vidushi Gupta 為我們帶來的 R 課程!**
# 開始使用
請依照以下步驟操作:
1. **Fork 本儲存庫**:點選本頁右上方的「Fork」按鈕。
2. **Clone 本儲存庫** `git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **Fork 本儲存庫**:點擊本頁右上角的「Fork」按鈕。
2. <strong>複製儲存庫</strong>`git clone https://github.com/microsoft/ML-For-Beginners.git`
> [在我們的 Microsoft Learn 集合中找到本課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [於我們的 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)**若要使用本課程,請將整個儲存庫 fork 到您的 GitHub 帳戶,並自行或與小組一起完成練習:
**[學生](https://aka.ms/student-page)**欲使用此課程,請將整個儲存庫 Fork 至您自己的 GitHub 帳號,並自行或與團體完成練習:
- 從課前測驗開始
- 閱讀課文並完成活動,在每個知識檢查時暫停且思考
- 嘗試透過理解課程內容來自行建立專案,而非直接執行解答程式碼;當然,解答程式碼可在每個專案導向課程的 `/solution` 資料夾中找到
- 完成課後測驗。
- 完成挑戰。
- 先完成課前測驗
- 閱讀課程內容並完成活動,每個知識檢核時停下反思
- 嘗試透過理解課程內容自行建立專案,而非僅執行解答程式碼;不過在各專案導向課程的 `/solution` 資料夾中會提供解答
- 進行課後測驗。
- 完成挑戰
- 完成作業。
- 完成一組課程後,請造訪 [討論板](https://github.com/microsoft/ML-For-Beginners/discussions) ,透過填寫相應的 PAT 評分表進行「實況學習」。PATProgress Assessment Tool是您填寫來促進學習的評分表。您也可對其他人的 PAT 做出反應,大家一起學習。
- 完成一組課程後,請訪問 [討論區](https://github.com/microsoft/ML-For-Beginners/discussions),並透過填寫相對應的 PAT 評分表「大聲學習learn out loud」。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) 模組學習路徑。
<strong>教師</strong>,我們 [提供了一些建議](for-teachers.md) 供您使用本課程。
<strong>教師</strong>,我們有 [包含一些建議](for-teachers.md) 如何使用此課程。
---
## 影片導覽
部分課程有短片形式的影片。您可在課程內嵌位置找到影片,或在 Microsoft Developer YouTube 頻道的 [ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 觀看,請點擊下方圖片
部分課程有提供短影片說明。您可以在課程中內嵌觀賞,或於 [Microsoft Developer YouTube 頻道的 ML for Beginners 播放清單](https://aka.ms/ml-beginners-videos) 中觀看,點選下方圖片可前往
[![ML for beginners banner](../../translated_images/zh-TW/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
---
## 認識團隊
## 團隊介紹
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**Gif 製作:** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
<strong>動圖製作者</strong> [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 點擊上方圖片觀看專案及團隊介紹影片!
> 🎥 點擊上方圖片觀看介紹本計畫與其創作者的影片!
---
## 教學法
我們在設計此課程大綱時選擇了兩個教學原則:確保課程為親身實作的<strong>專案導向</strong>,並包含<strong>頻繁的測驗</strong>此外,課程有統一的<strong>主題</strong>讓內容更為完整
我們在建立這套課程時選擇了兩個教學原則:確保它是動手實作的 <strong>專案導向</strong>,並且包涵 <strong>頻繁的測驗</strong>另外,本課程也有一個共通的 <strong>主題</strong>,以增加連貫性
確保內容與專案一致,能讓學習過程更吸引學生且提升概念記憶。課前低壓力測驗幫助學生設定學習目標,課後測驗則促進概念鞏固。此課程設計靈活且有趣,您可選擇全部或部分完成。專案從小到大,循序漸進到 12 週週期結束時變得更複雜。課程還包含機器學習真實應用的後記,可用作額外學分或討論基礎。
透過確保內容與專案對齊,讓學習流程更吸引學生且增強概念的記憶。此外,課前的低壓力測驗有助設定學生的學習目標,而課後測驗則促進知識的鞏固。此課程設計靈活且有趣,可完整學習或分段進行。專案從簡單開始,隨 12 週週期末漸趨複雜。課程還包含有關機器學習在現實世界應用的後記,能作為額外學分或討論基礎。
> 查看我們的 [行為守則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](..) 和 [疑難排解](TROUBLESHOOTING.md) 指南,歡迎您給予建設性回饋!
> 請查看我們的 [行為準則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)、[翻譯](..) 及 [故障排除](TROUBLESHOOTING.md) 指引。我們歡迎您的建設性回饋!
## 每堂課包含
- 可選速寫筆記
- 選補充影片
- 選用的筆記草圖
- 選用的補充影片
- 影片導覽(部分課程)
- [課前暖身測驗](https://ff-quizzes.netlify.app/en/ml/)
- 書面課程內容
- 專案課程的專案建置逐步指引
- 知識檢
- 挑戰
- 補充閱讀資料
- 專案導向課程中,建構專案的逐步指導
- 知識檢
- 挑戰
- 補充閱讀
- 作業
- [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
> <strong>關於語言的說明</strong>:這些課程主要以 Python 編寫,但許多課程也有提供 R 版本。要完成 R 課程,請前往 `/solution` 資料夾並尋找 R 課程。它們包含副檔名 .rmd代表 **R Markdown** 文件,可簡單定義為在 `Markdown 文件` 中嵌入 `程式碼區塊`R 或其他語言)和 `YAML 標頭`(用於指導如何格式化輸出如 PDF。因此它作為一個資料科學的典範撰寫框架因為它允許您結合程式碼、輸出與您的想法並可用 Markdown 進行撰寫。此外R Markdown 文件可渲染成 PDF、HTML 或 Word 等輸出格式。
> <strong>關於測驗的說明</strong>:所有測驗皆收錄於 [Quiz App 資料夾](../../quiz-app) 中,共有 52 組測驗,每組包含三題問題。這些測驗會在課程中連結,也可在本地執行測驗應用程式;請依照 `quiz-app` 資料夾內的指示在本地架設或部署至 Azure。
| 課程編號 | 主題 | 課程分組 | 學習目標 | 連結課程 | 作者 |
| :------: | :------------------------------------------------------------: | :------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------: |
| 01 | 機器學習導論 | [Introduction](1-Introduction/README.md) | 了解機器學習背後的基本概念 | [課程](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 了解此領域的歷史背景 | [課程](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 學生在建構和應用機器學習模型時應考慮的主要哲學問題是什麼? | [課程](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | 機器學習研究人員用什麼技術來建構機器學習模型? | [課程](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 迴歸介紹 | [Regression](2-Regression/README.md) | 開始使用 Python 和 Scikit-learn 進行迴歸模型 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 資料視覺化與清理以準備機器學習 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立線性與多項式迴歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立邏輯斯迴歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 網頁應用程式 🔌 | [Web App](3-Web-App/README.md) | 建立一個使用你訓練模型的網頁應用程式 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類導論 | [Classification](4-Classification/README.md) | 清理、準備與視覺化資料;分類導論 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器入門 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 進階分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 利用你的模型建立推薦器網頁應用程式 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 聚類介紹 | [Clustering](5-Clustering/README.md) | 清理、準備與視覺化你的資料;聚類介紹 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索奈及利亞音樂喜好 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-均值聚類方法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理導論 ☕️ | [Natural language processing](6-NLP/README.md) | 透過建構簡單機器人學習自然語言處理基礎 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見的 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 深入了解處理語言結構時需完成的常見任務 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 使用 Jane Austen 的作品進行翻譯與情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測導論 | [Time series](7-TimeSeries/README.md) | 時間序列預測介紹 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界用電量 ⚡️ - 使用 ARIMA 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界用電量 ⚡️ - 使用 SVR 的時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支持向量迴歸器進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習導論 | [Reinforcement learning](8-Reinforcement/README.md) | 使用 Q-Learning 介紹強化學習 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 幫助彼得躲避大灰狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 附錄 | 真實世界的機器學習情境與應用 | [ML in the Wild](9-Real-World/README.md) | 經典機器學習的有趣且具啟發性的實際應用案例 | [課程](9-Real-World/1-Applications/README.md) | 團隊 |
| 附錄 | 使用 RAI 儀表板的機器學習模型除錯 | [ML in the Wild](9-Real-World/README.md) | 使用 Responsible AI 儀表板元件進行機器學習模型除錯 | [課程](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我們的 Microsoft Learn 集合中查找此課程的所有額外資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線存取
您可以使用 [Docsify](https://docsify.js.org/#/) 離線執行本文件。Fork 這個專案,並在本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在此專案根目錄執行 `docsify serve`。網站將在本地主機的 3000 端口啟動`localhost:3000`。
> <strong>關於語言的說明</strong>:這些課程主要使用 Python 撰寫,但也有許多課程提供 R 語言版本。若要完成 R 課程,請至 `/solution` 資料夾中尋找 R 課程。它們包含 .rmd 副檔名,代表<strong>R Markdown</strong>檔案,這種檔案簡單定義為將 `程式碼區塊`R 或其他語言)與 `YAML 標頭`(用來指導如何格式化輸出,如 PDF嵌入於 `Markdown 文件` 中。因而,這是資料科學中代表性的撰寫框架,因為它允許你將程式碼、其輸出及想法結合並用 Markdown 撰寫。此外R Markdown 文件可以輸出為 PDF、HTML 或 Word 等格式。
> <strong>關於測驗的說明</strong>:所有測驗皆收錄於 [Quiz App folder](../../quiz-app) 中,共有 52 個測驗,每個測驗三題。它們從課程中連結,也可以在本機上運行測驗應用;請依照 `quiz-app` 資料夾中的指示進行本機託管或部署至 Azure。
| Lesson Number | 主題 | 課程群組 | 學習目標 | 相關課程 | 作者 |
| :-----------: | :------------------------------------------------------------: | :------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 機器學習簡介 | [Introduction](1-Introduction/README.md) | 學習機器學習的基本概念 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機器學習的歷史 | [Introduction](1-Introduction/README.md) | 學習此領域背後的歷史 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性與機器學習 | [Introduction](1-Introduction/README.md) | 在建立及應用 ML 模型時,學生應考慮的公平相關重要哲學議題 | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機器學習技術 | [Introduction](1-Introduction/README.md) | ML 研究人員用來建立 ML 模型的技術有哪些? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回歸介紹 | [Regression](2-Regression/README.md) | 使用 Python 和 Scikit-learn 入門回歸模型 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 在準備 ML 時,視覺化與清理資料 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立線性與多項式回歸模型 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北美南瓜價格 🎃 | [Regression](2-Regression/README.md) | 建立邏輯回歸模型 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Web 應用 🔌 | [Web App](3-Web-App/README.md) | 建立一個可以使用訓練模型的網頁應用 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類介紹 | [Classification](4-Classification/README.md) | 清理、準備並視覺化資料;分類入門 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 分類器介紹 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 更多的分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味的亞洲與印度料理 🍜 | [Classification](4-Classification/README.md) | 使用模型構建推薦系統的網頁應用 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 分群介紹 | [Clustering](5-Clustering/README.md) | 清理、準備並視覺化資料;分群入門 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 探索奈及利亞音樂喜好 🎧 | [Clustering](5-Clustering/README.md) | 探索 K-均值分群法 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然語言處理簡介 ☕️ | [Natural language processing](6-NLP/README.md) | 透過建立簡單機器人學習 NLP 基礎 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 常見的 NLP 任務 ☕️ | [Natural language processing](6-NLP/README.md) | 透過理解處理語言結構時所需的常見任務,加深 NLP 知識 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻譯與情感分析 ♥️ | [Natural language processing](6-NLP/README.md) | 以 Jane Austen 文學做翻譯與情感分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 歐洲浪漫飯店 ♥️ | [Natural language processing](6-NLP/README.md) | 使用飯店評論進行情感分析 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時間序列預測介紹 | [Time series](7-TimeSeries/README.md) | 時間序列預測介紹 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 全球用電量 ⚡️ - 使用 ARIMA 做時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用 ARIMA 進行時間序列預測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 全球用電量 ⚡️ - 使用 SVR 做時間序列預測 | [Time series](7-TimeSeries/README.md) | 使用支持向量回歸 (SVR) 進行時間序列預測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化學習介紹 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Q-Learning 介紹 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 幫助 Peter 避開狼!🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化學習 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 後記 | 實際世界中的機器學習情境與應用 | [ML in the Wild](9-Real-World/README.md) | 傳統機器學習有趣且具啟發性的真實世界應用 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| 後記 | 使用 RAI dashboard 進行機器學習模型偵錯 | [ML in the Wild](9-Real-World/README.md) | 使用負責任 AI 儀表板元件進行機器學習模型偵錯 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [在我們的 Microsoft Learn 集合中找到本課程的所有其他資源](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 離線使用
你可以使用 [Docsify](https://docsify.js.org/#/) 離線執行此文件。將本存放庫分叉,於本機安裝 [Docsify](https://docsify.js.org/#/quickstart),然後在本存放庫根目錄輸入 `docsify serve`。網站會在本機的 3000 埠執行`localhost:3000`。
## PDF 檔案
[點此](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) 下載課程大綱 PDF並附有連結
請至此處下載一份帶有連結的課程綱要 PDF [here](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)。
## 🎒 其他課程
我們團隊還製作了其他課程!快來看看:
我們團隊還製作其他課程!請查看:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j 入門](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js 入門](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain 入門](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AZD 入門](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI 入門](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者 MCP](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者 AI 代理](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 生成式 AI 系列
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[![初學者生成式 AI](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### 核心學習
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者機器學習](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者資料科學](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者人工智慧](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者網路安全](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![初學者網頁開發](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者物聯網](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者 XR 開發](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot 系列
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
[![AI 配對程式設計的 Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET 的 Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## 尋求
## 尋求
如果您遇到困難或對構建 AI 應用有任何疑問,請加入其他學習者和有經驗的開發者討論 MCP。這是一個支持性的社群歡迎提問並自由分享知識
如果你在學習機器學習或建立 AI 應用程式時遇到困難或有問題,別擔心 — 可以獲得協助
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
你可以加入其他學習者與開發者的討論,提出問題,並與社群分享你的想法。
- 加入社群,一起提問與學習
- 討論機器學習概念與專案想法
- 獲得經驗豐富開發者的指導
有支持的社群是提升技能和更快解決問題的絕佳方式。
如果在構建過程中有產品反饋或錯誤,請造訪:
[Microsoft Foundry Discord 社群](https://discord.gg/nTYy5BXMWG)
如果你遇到錯誤、問題,或有改進建議,也可以在此存放庫開啟 **Issue** 回報問題。
如需產品反饋或查找現有社群貼文,請造訪開發者論壇:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 額外學習建議
- 每課後回顧筆記本以加深理解。
## 其他學習建議
- 課後回顧筆記本以加深理解。
- 練習自行實作演算法。
- 利用所學概念探索真實世界資料集。
- 用所學概念探索真實世界資料集。
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖我們致力於確保準確性,但請注意,機器翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生之任何誤解或誤譯負責
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原文文件及其母語版本應視為具權威性的內容來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯所產生的任何誤解或誤譯承擔責任
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save