2025年3月6日 星期四

Python 18 小時入門--第 12 小時:Python 機器學習入門(Machine Learning with Python)

 📌 第 12 小時:Python 機器學習入門(Machine Learning with Python)

Python 是 機器學習(Machine Learning, ML) 的主要程式語言,廣泛應用於 數據分析、圖像辨識、自然語言處理(NLP)、預測模型 等。本章將介紹:

  1. 機器學習概念
  2. 使用 scikit-learn 進行模型訓練
  3. 數據預處理與特徵工程
  4. 建立簡單的機器學習模型
  5. 模型評估與調整

🔹 1. 機器學習概念

機器學習主要分為:

類型 說明 範例
監督式學習(Supervised Learning) 已有標籤(label),讓模型學習輸入與輸出關係 房價預測、垃圾郵件分類
非監督式學習(Unsupervised Learning) 無標籤,讓模型自己找出數據規律 顧客分群、降維分析
強化學習(Reinforcement Learning) 透過獎勵機制學習最佳行為 自駕車、圍棋 AI

🟢 機器學習流程

  1. 取得數據
  2. 資料清理與特徵工程
  3. 選擇適合的機器學習模型
  4. 訓練模型
  5. 評估與優化模型
  6. 部署模型並進行預測

🔹 2. 安裝機器學習工具

pip install scikit-learn pandas numpy matplotlib
  • scikit-learn(簡稱 sklearn):Python 的機器學習庫
  • pandasnumpy:處理數據
  • matplotlib:繪圖

🔹 3. 數據預處理

在機器學習中,資料的品質比演算法更重要。常見的數據預處理包括:

  • 處理遺漏值
  • 標準化與正規化數據
  • 將類別資料轉換為數字

🟢 讀取數據

import pandas as pd

df = pd.read_csv("house_prices.csv")  # 假設有房價數據
print(df.head())  # 查看前 5 筆數據

🟢 處理遺漏值

df.fillna(df.mean(), inplace=True)  # 用平均值填補缺失數據

🟢 類別資料轉換數字

df["city"] = df["city"].astype("category").cat.codes  # 轉換類別變數

🔹 4. 使用 scikit-learn 訓練模型

我們以 房價預測(線性回歸) 為例,使用 scikit-learn 訓練模型。

🟢 分割訓練集與測試集

from sklearn.model_selection import train_test_split

X = df[["square_feet", "bedrooms", "bathrooms"]]  # 特徵
y = df["price"]  # 目標變數(房價)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

📌 說明

  • train_test_split() 會將數據分成 80% 訓練集、20% 測試集
  • random_state=42 確保每次執行結果一致

🔹 5. 建立簡單的線性回歸模型

from sklearn.linear_model import LinearRegression

model = LinearRegression()  # 建立線性回歸模型
model.fit(X_train, y_train)  # 訓練模型

y_pred = model.predict(X_test)  # 預測房價

📌 模型學習了 square_feet, bedrooms, bathroomsprice 之間的關係,並可用來預測新房價。


🔹 6. 評估模型

from sklearn.metrics import mean_absolute_error, mean_squared_error

mae = mean_absolute_error(y_test, y_pred)  # 平均絕對誤差
mse = mean_squared_error(y_test, y_pred)  # 均方誤差

print(f"MAE: {mae}")
print(f"MSE: {mse}")

📌 評估指標

  • MAE(Mean Absolute Error):數據誤差的平均值,越小越好
  • MSE(Mean Squared Error):誤差的平方,避免負數影響

🔹 7. 使用決策樹進行分類

決策樹(Decision Tree)適用於 分類問題,例如 預測學生是否及格

🟢 建立決策樹模型

from sklearn.tree import DecisionTreeClassifier

X = df[["study_hours", "attendance"]]  # 特徵
y = df["pass_exam"]  # 目標變數(及格與否)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = DecisionTreeClassifier()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

🟢 評估分類模型

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print(f"模型準確率:{accuracy:.2f}")

📌 準確率(Accuracy) 衡量模型的正確率,範圍在 0~1 之間,越接近 1 越好。


🔹 8. 預測新數據

當模型訓練好後,可以用來預測新的數據

new_house = [[1500, 3, 2]]  # 1500 平方英尺,3 房,2 衛
predicted_price = model.predict(new_house)
print(f"預測房價:{predicted_price}")

📌 第 12 小時小結

監督式學習適用於有標籤數據(如房價預測),非監督式學習適用於數據分群(如顧客分群)
pandas 可用來讀取數據,處理遺漏值,轉換類別變數
使用 train_test_split() 分割訓練集與測試集
LinearRegression 用於數值預測(房價)、DecisionTreeClassifier 用於分類(學生是否及格)
使用 mean_absolute_erroraccuracy_score 評估模型效能

學完這一章,你已掌握 機器學習的基礎概念與 Python 應用,下一步將學習 深度學習(Deep Learning),讓 AI 學習更強大的能力!🚀

沒有留言:

張貼留言