今天我們用?「預測考試是否及格」?的例子來講解邏輯回歸,從原理到實現一步步拆解,保證零基礎也能懂!
🎯?例子背景
假設你是班主任,要根據學生的「學習時間」預測「是否及格」,手上有以下數據:
學習時間(h) | 是否及格(1=是,0=否) |
---|---|
1 | 0 |
2 | 0 |
3 | 1 |
4 | 1 |
5 | 1 |
新問題:學習3.5小時的學生,及格概率有多大?
🌟?邏輯回歸核心思想
不是直接預測類別,而是計算屬于某類的概率
比如:P(及格|學習3.5h) = 70%
?→ 若閾值設50%,則判定為及格
🔑?關鍵特點
-
輸出范圍在0~1之間(概率)
-
用S型函數(Sigmoid)?將線性結果轉為概率
📈?原理分步拆解
1.?先做線性回歸
臨時計算?z = a×學習時間 + b
(比如初始假設:z = 0.6×時間 - 1.5)
2.?通過Sigmoid函數轉概率
公式:
P(及格) = 1 / (1 + e^(-z))
-
當z=0時,P=0.5
-
z越大,P越接近1;z越小,P越接近0
3.?計算示例
對于學習3.5小時:
z = 0.6×3.5 - 1.5 = 0.6
P = 1 / (1 + e^(-0.6)) ≈ 0.65
→ 及格概率65%
🛠??Python代碼實現
1. 基礎版(手寫核心邏輯)
import numpy as np# Sigmoid函數
def sigmoid(z):return 1 / (1 + np.exp(-z))# 假設參數
a = 0.6 # 斜率
b = -1.5 # 截距# 預測函數
def predict(hours):z = a * hours + breturn sigmoid(z)print("學習3.5小時及格概率:", predict(3.5)) # 輸出: 0.65
2. 實戰版(用scikit-learn)
from sklearn.linear_model import LogisticRegression
import numpy as np# 準備數據
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 學習時間
y = np.array([0, 0, 1, 1, 1]) # 是否及格# 訓練模型
model = LogisticRegression()
model.fit(X, y)# 預測新數據
new_hour = np.array([[3.5]])
prob = model.predict_proba(new_hour)[0][1] # 獲取概率
print(f"及格概率: {prob:.2%}") # 輸出: 64.94%# 查看參數
print(f"方程: z = {model.coef_[0][0]:.2f}×時間 + {model.intercept_[0]:.2f}")
📊?決策邊界可視化
import matplotlib.pyplot as plt# 繪制數據點
plt.scatter(X, y, color=['red' if i==0 else 'blue' for i in y], label='真實數據')# 生成概率曲線
X_test = np.linspace(0, 6, 100).reshape(-1,1)
prob_curve = model.predict_proba(X_test)[:,1]
plt.plot(X_test, prob_curve, 'g-', label='概率曲線')# 標記決策邊界(P=0.5對應的X值)
decision_boundary = -model.intercept_ / model.coef_[0]
plt.axvline(x=decision_boundary, linestyle='--', color='black', label='決策邊界')plt.xlabel('學習時間(h)')
plt.ylabel('概率')
plt.legend()
plt.show()
決策邊界約在2.5小時(P=0.5的位置)*
🌟?關鍵知識點
-
閾值可調
-
默認0.5,可根據需求調整(如醫療診斷需更高閾值)
-
-
為什么叫"回歸"
-
底層用了線性回歸,只是加了Sigmoid轉換
-
-
多分類擴展
-
用Softmax代替Sigmoid可處理多分類(如預測ABC等級)
-
-
評估指標
-
常用準確率、ROC曲線、AUC值
-
🆚?vs 線性回歸
特性 | 邏輯回歸 | 線性回歸 |
---|---|---|
輸出 | 概率值(0~1) | 任意實數 |
應用 | 分類問題(如是否垃圾郵件) | 預測數值(如房價) |
函數 | Sigmoid | 直接線性輸出 |
💡?常見問題
Q:特征需要標準化嗎?
A:最好做!邏輯回歸雖不受量綱影響,但能加速收斂。
Q:學習時間6小時預測概率>1?
A:不會!Sigmoid函數永遠輸出0~1之間。
總結:邏輯回歸就是
① 線性計算 → ② 概率轉換 → ③ 閾值判斷
像老師通過學習時間判斷學生及格可能性,既簡單又實用! 🎓→📈