You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/zh-HK/2-Regression/1-Tools
localizeflow[bot] 381c672660
[zh-MO,zh-HK,zh-TW] chore(i18n): sync translations
3 weeks ago
..
solution chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 8 months ago
README.md [zh-MO,zh-HK,zh-TW] chore(i18n): sync translations 3 weeks ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 8 months ago
notebook.ipynb chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 8 months ago

README.md

使用 Python 和 Scikit-learn 入門迴歸模型

迴歸模型概要的手繪筆記

手繪筆記作者 Tomomi Imura

課前問答

本課程亦提供 R 語言版本!

介紹

在這四課中,你將學習如何建立迴歸模型。我們稍後會討論迴歸模型的用途。但在開始之前,請確保你已準備好適合的工具來開始這個流程!

在本課程中,你將學會:

  • 配置你的電腦以便進行本地機器學習任務。
  • 使用 Jupyter 筆記本。
  • 使用 Scikit-learn,包括安裝。
  • 透過動手練習探索線性迴歸。

安裝與設定

初學者機器學習 - 準備好安裝你的工具來建立機器學習模型

🎥 點擊上圖觀看設定電腦進行機器學習的短片教學。

  1. 安裝 Python。確保你的電腦已安裝 Python。Python 將用於許多資料科學及機器學習任務。大多數電腦系統預設已安裝 Python。對某些使用者來說,也有實用的 Python 編程套件 供配置時使用。

    然而,部分 Python 用途需要不同版本的軟體,因此使用 虛擬環境 會很方便。

  2. 安裝 Visual Studio Code。請確保你電腦已安裝 Visual Studio Code。請依照指示安裝 Visual Studio Code 完成基本安裝。這堂課你將於 Visual Studio Code 中使用 Python,建議先熟悉如何配置 Visual Studio Code 以便 Python 開發。

    建議透過一系列 學習單元 來熟悉 Python。

    在 Visual Studio Code 設定 Python

    🎥 點擊上圖觀看在 VS Code 內使用 Python 的示範影片。

  3. 安裝 Scikit-learn,請依照 這些指示 進行。確保你使用的是 Python 3,建議在虛擬環境中安裝。若你在 M1 Mac 上安裝此套件,請注意上述連結頁面內的特別指示。

  4. 安裝 Jupyter Notebook。你需要 安裝 Jupyter 套件。

你的機器學習開發環境

你將使用 筆記本 來撰寫 Python 代碼並建立機器學習模型。此類型檔案為資料科學家常用工具,副檔名為 .ipynb。

筆記本是一個互動式環境,讓開發者可以同時撰寫程式碼、加入筆記與文件說明,對於實驗或研究導向的專案非常有幫助。

初學者機器學習 - 設定 Jupyter 筆記本以開始建立迴歸模型

🎥 點擊上圖觀看這個練習的影片示範。

練習 — 使用筆記本

在此資料夾中,你會找到檔案 notebook.ipynb。

  1. 在 Visual Studio Code 中打開 notebook.ipynb。

    Jupyter 伺服器會啟動並使用 Python 3+。你會在筆記本中看到可以 運行 的區塊,即程式碼片段。你可以點選類似播放鍵的圖示來運行該程式碼區塊。

  2. 選取 md 圖示並加入一點 Markdown 格式,輸入以下文字:# 歡迎使用你的筆記本。

    接著,加入一些 Python 代碼。

  3. 在程式碼區塊輸入 print('hello notebook')。

  4. 點選執行箭頭跑這段程式碼。

    你應該會看到印出的訊息:

    hello notebook
    

VS Code 中打開的筆記本

你可以在程式碼中穿插注釋,以自我文件化筆記本內容。

✅ 花點時間思考,網頁開發者的工作環境與資料科學家的工作環境有什麼不同。

開始使用 Scikit-learn

當你已經在本地環境中設好了 Python,且熟悉 Jupyter 筆記本後,我們接著來熟悉 Scikit-learn(讀作 sci,類似 science)。Scikit-learn 提供了 廣泛的 API 幫助你完成機器學習任務。

根據其 官方網站 記載,「Scikit-learn 是一個支援監督與非監督學習的開源機器學習庫。它也提供多種模型擬合、資料前處理、模型選擇與評估工具,以及其他許多實用功能。」

在本課程中,你將使用 Scikit-learn 與其他工具來建立機器學習模型,執行我們所謂的「傳統機器學習」任務。我們有意避開神經網絡與深度學習,因這部分將由即將推出的「初學者 AI 課程」涵蓋。

Scikit-learn 讓模型建立與評估變得簡單,主要聚焦於數值型資料,也內建多個適合學習使用的資料集,並提供多種預建模型供學生嘗試。現在讓我們探索如何載入出廠包裝資料,並使用內建估算器建立你的第一個 Scikit-learn ML 模型。

練習 — 你的第一個 Scikit-learn 筆記本

本教學靈感來自 Scikit-learn 官方網站上的 線性迴歸範例。

初學者機器學習 - 你的第一個 Python 線性迴歸專案

🎥 點擊上圖觀看此練習的短片示範。

在本課程相關的 notebook.ipynb 檔案中,按下「垃圾桶」圖示清除所有儲存格內容。

本節將使用 Scikit-learn 內建的一個關於糖尿病的小資料集,作為學習用途。假設你想測試一種糖尿病患者的治療方法,機器學習模型可能幫助你判斷哪類病患會對此治療反應較佳,基於多種變數組合。即使是非常基礎的迴歸模型,在視覺化時也可能顯示出可用於設計理論臨床試驗的變數相關資訊。

✅ 迴歸方法有很多種,你選用何種取決於你想解答的問題。如果你想預測特定年齡者的身高,會用線性迴歸,因為你追求一個數值。若你想判斷某種料理是否為純素,則屬分類問題,會用邏輯迴歸。稍後你會學到邏輯迴歸。請思考你可以對資料提出什麼問題,並判斷哪些方法更適合。

現在開始這個任務吧。

載入函式庫

這個任務我們將導入下列函式庫:

  • matplotlib。它是一個實用的繪圖工具,我們將用它來繪製折線圖。
  • numpy。numpy 是 Python 中處理數值資料的有用函式庫。
  • sklearn。即是Scikit-learn 函式庫。

匯入部分函式庫幫助你完成任務。

  1. 在程式碼區塊輸入以下匯入指令:

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import datasets, linear_model, model_selection
    

    上面你匯入了 matplotlib 和 numpy,並從 sklearn 匯入 datasets、linear_model 及 model_selection。model_selection 用於將資料切分為訓練及測試集。

糖尿病資料集

內建的 糖尿病資料集 包含 442 筆糖尿病相關樣本資料,含 10 項特徵變數,其中包括:

  • 年齡:以年為單位
  • BMI:身體質量指數
  • 血壓:平均血壓
  • s1 tc:T 細胞(一種白血球)

✅ 此資料集將「性別」納為糖尿病研究的重要特徵變數。許多醫學資料集包含此二元分類。請思考這類分類方式可能使某些族群遭排除於治療之外。

現在載入 X 與 y 資料。

🎓 請記得,這是監督式學習,我們需要一個命名為 y 的目標變數。

在新程式碼儲存格中,呼叫 load_diabetes() 載入糖尿病資料集。引數 return_X_y=True 表示 X 是資料矩陣,而 y 為迴歸目標。

  1. 新增一些 print 指令以顯示資料矩陣形狀及其第一個元素:

    X, y = datasets.load_diabetes(return_X_y=True)
    print(X.shape)
    print(X[0])
    

    你會收到一個 Tuple 作為回傳值。你做的動作是將元組的兩個第一個值依序指定給 X 和 y。想了解更多可查看 關於元組。

    你可以看到資料含有 442 筆樣本,每筆由 10 個元素的陣列構成:

    (442, 10)
    [ 0.03807591  0.05068012  0.06169621  0.02187235 -0.0442235  -0.03482076
    -0.04340085 -0.00259226  0.01990842 -0.01764613]
    

    ✅ 想一想資料與迴歸目標的關係。線性迴歸預測特徵 X 與目標變數 y 之間的關係。你能在文件中找到糖尿病資料集的目標值是什麼嗎?由此資料集及目標值你能了解什麼?

  2. 接著,選出資料集中的一部分繪圖,選取第 3 欄資料。你可用 : 選取所有列,再用索引(2)選擇第 3 欄。你也可以將資料重塑為 2D 陣列,以符合繪圖需求,使用 reshape(n_rows, n_columns)。其中若參數為 -1,則對應維度會自動計算。

    X = X[:, 2]
    X = X.reshape((-1,1))
    

    ✅ 隨時可印出資料確認其形狀。

  3. 現在資料已備妥可繪圖,你可檢查機器能否找出資料的合理分界。為此,你必須將資料(X)和目標(y)切分為測試與訓練集。Scikit-learn 提供簡便方法,你可指定分割點拆分資料。

    X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
    
  4. 現在準備訓練模型了!載入線性迴歸模型,並用你的 X 和 y 訓練資料集用 model.fit() 進行訓練:

    model = linear_model.LinearRegression()
    model.fit(X_train, y_train)
    

    ✅ model.fit() 是許多機器學習庫(如 TensorFlow)常見的函式。

  5. 接著,使用測試資料用 predict() 函式進行預測。此預測可用來畫出分界線。

    y_pred = model.predict(X_test)
    
  6. 現在是時候透過繪圖展現資料了。Matplotlib 是非常實用的工具。繪製測試資料 X 與 y 的散點圖,並利用預測結果在資料群組中畫出一條最適合的線。

    plt.scatter(X_test, y_test,  color='black')
    plt.plot(X_test, y_pred, color='blue', linewidth=3)
    plt.xlabel('Scaled BMIs')
    plt.ylabel('Disease Progression')
    plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
    plt.show()
    

    糖尿病資料點散佈圖

    ✅ 思考一下這裡發生了什麼。一條直線穿過許多小點,但它究竟在做什麼?你是否能理解如何利用這條線預測一個新、未看過的資料點應該如何相對於 y 軸排列?試著將此模型的實用意義用語言描述出來。

恭喜你,完成了你的第一個線性迴歸模型,做出預測,並以圖形展示出來!


🚀挑戰

從此資料集中繪製另一個變數。提示:修改這行:X = X[:,2]。根據此資料集的目標,你能從中發現糖尿病作為疾病的進展狀況嗎?

課後問答

回顧與自學

在本教程中,你涉獵了簡單線性迴歸,而非單變量或多變量線性迴歸。可閱讀關於這些方法差異的資料,或參考 此影片。

閱讀有關迴歸概念的更多內容,並思考這種技術可以回答哪些類型的問題。參加此 教程 以加深你的理解。

作業

另一個數據集


免責聲明: 本文件由 AI 翻譯服務 Co-op Translator 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。