📌 第 12 小時:Python 機器學習入門(Machine Learning with Python)
Python 是 機器學習(Machine Learning, ML) 的主要程式語言,廣泛應用於 數據分析、圖像辨識、自然語言處理(NLP)、預測模型 等。本章將介紹:
- 機器學習概念
- 使用
scikit-learn
進行模型訓練 - 數據預處理與特徵工程
- 建立簡單的機器學習模型
- 模型評估與調整
🔹 1. 機器學習概念
機器學習主要分為:
類型 | 說明 | 範例 |
---|---|---|
監督式學習(Supervised Learning) | 已有標籤(label),讓模型學習輸入與輸出關係 | 房價預測、垃圾郵件分類 |
非監督式學習(Unsupervised Learning) | 無標籤,讓模型自己找出數據規律 | 顧客分群、降維分析 |
強化學習(Reinforcement Learning) | 透過獎勵機制學習最佳行為 | 自駕車、圍棋 AI |
🟢 機器學習流程
- 取得數據
- 資料清理與特徵工程
- 選擇適合的機器學習模型
- 訓練模型
- 評估與優化模型
- 部署模型並進行預測
🔹 2. 安裝機器學習工具
pip install scikit-learn pandas numpy matplotlib
scikit-learn
(簡稱sklearn
):Python 的機器學習庫pandas
、numpy
:處理數據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, bathrooms
和 price
之間的關係,並可用來預測新房價。
🔹 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_error
和 accuracy_score
評估模型效能
學完這一章,你已掌握 機器學習的基礎概念與 Python 應用,下一步將學習 深度學習(Deep Learning),讓 AI 學習更強大的能力!🚀
沒有留言:
張貼留言