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] e4c1af4385
[zh-MO,zh-HK,zh-TW] chore(i18n): sync translations
1 month ago
..
solution chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 7 months ago
README.md [zh-MO,zh-HK,zh-TW] chore(i18n): sync translations 1 month ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 7 months ago
notebook.ipynb chore(i18n): sync translations with latest source changes (chunk 4/6, 215 changes) 7 months ago

README.md

使用 Python 和 Scikit-learn 開始迴歸模型之旅

迴歸總結手繪筆記

手繪筆記由 Tomomi Imura 製作

課前小測

這堂課也有 R 語言版本!

介紹

在這四堂課中,你將學習如何建立迴歸模型。我們很快會討論這些模型的用途。但在做任何事之前,先確保你已經準備好合適的工具來開展流程!

在這堂課,你將學習如何:

  • 配置你的電腦進行本地機器學習任務。
  • 使用 Jupyter 筆記本。
  • 使用 Scikit-learn包括安裝步驟。
  • 通過實作練習探索線性迴歸。

安裝與設定

為初學者準備的 ML - 配置你的工具開始建立機器學習模型

🎥 點擊上方圖片觀看短片,學習如何配置電腦以進行 ML。

  1. 安裝 Python。確保你的電腦已安裝好 Python。Python 是許多數據科學及機器學習任務的重要工具。大多數系統已內建 Python。也有實用的 Python 編碼套件 可供部分用戶簡化設定。

    然而部分 Python 的應用需要特定版本,因此使用 虛擬環境 是非常有用的。

  2. 安裝 Visual Studio Code。確保你的電腦已安裝 Visual Studio Code。遵循此說明安裝 Visual Studio Code完成基礎安裝。因為你會在這課程中使用 Python所以建議熟悉如何為 Python 開發設定 Visual Studio Code

    透過一系列 Learn 模組熟悉 Python。

    使用 Visual Studio Code 設定 Python

    🎥 點擊上方圖片觀看如何在 VS Code 裡使用 Python 的教學影片。

  3. 安裝 Scikit-learn,請參考這些指示。因必須使用 Python 3建議在虛擬環境中安裝。如果你在 M1 Mac 上安裝,請注意頁面上有特別說明。

  4. 安裝 Jupyter Notebook。你需要 安裝 Jupyter 軟件包

你的機器學習開發環境

你將使用 筆記本 來編寫 Python 程式碼和建立機器學習模型。這類文件是數據科學家常用工具,可以透過副檔名 .ipynb 識別。

筆記本是互動環境,開發者可同時撰寫程式碼、添加註解與文件,非常適合實驗或研究型項目。

為初學者準備的 ML - 設置 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 的預建估計器建立第一個機器學習模型,並分析簡單的數據。

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

本教程靈感來自 Scikit-learn 網站上的線性迴歸範例

為初學者準備的 ML - 你的第一個 Python 線性迴歸專案

🎥 點擊上方圖片觀看此練習的教學短片。

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

這部分你將使用 Scikit-learn 內建一個關於糖尿病的小型數據集。假設你想測試某項糖尿病病患的治療方法。機器學習模型可幫助你依據變數組合判斷哪些病患的反應會較佳。即使是非常基礎的迴歸模型,當視覺化後,也可揭露變數間的信息,幫你規劃理論臨床試驗。

有許多類型的迴歸方法,不同方法適合解決不同問題。若你想預測特定年齡的身高,會用線性迴歸,因為你尋求的是數值結果;若你想判定一道菜是否屬於素食料理,則是分類問題,會用邏輯迴歸。稍後你將學習邏輯迴歸。花點時間思考可向資料提出的問題,以及哪種方法更合適。

現在開始著手這項任務。

引入程式庫

這項任務會用到以下一些程式庫:

  • matplotlib。這是有用的繪圖工具,我們將用它來畫折線圖。
  • numpynumpy 是 Python 中處理數值資料的重要函式庫。
  • sklearn。這是 Scikit-learn

引入所需的程式庫協助完成任務。

  1. 輸入以下代碼以加入引用:

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

    你以上引用了 matplotlibnumpy,還從 sklearn 引入了 datasetslinear_modelmodel_selectionmodel_selection 用於將資料分成訓練組與測試組。

糖尿病數據集

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

  • 年齡years
  • 體重指數 (bmi)
  • 血壓平均值 (bp)
  • s1 tcT 細胞(一種白血球)

此資料集將「性別」視為一項重要特徵變數,醫學資料中常包含此類二元分類。思考一下這種分類方式可能導致部分族群因特徵被排除於療法之外。

現在載入資料矩陣 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])
    

    回傳結果是一個元組。你是將元組的前兩個值分別賦值給 Xy。進一步了解 元組

    你可以看到資料有 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 欄。為符合繪圖需求,可以用 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() 是許多 ML 函式庫(例如 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 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。