【scikit-learn基础】--『监督学习』之 逻辑回归分类
邏輯回歸這個算法的名稱有一定的誤導性。
雖然它的名稱中有“回歸”,當它在機器學習中不是回歸算法,而是分類算法。
因為采用了與回歸類似的思想來解決分類問題,所以它的名稱才會是邏輯回歸。
邏輯回歸的思想可以追溯到19世紀,由英國統計學家Francis Galton在研究豌豆遺傳問題時首次提出。
然而,真正將邏輯回歸應用于機器學習的是加拿大統計學家Hugh Everett,他在1970年代提出了廣義線性模型(GLM),其中包括邏輯回歸。
邏輯回歸廣泛應用于各種分類問題,如垃圾郵件識別、疾病預測、市場細分等。
1. 算法概述
邏輯回歸通過構建一個邏輯模型來預測分類結果。
它首先對特征進行線性回歸,
\(y=w_0 x_0+w_1 x_1+w_2 x_2+w_3 x_3...+w_n x_n=w^Tx\)
然后通過一個sigmoid函數(\(y=\frac{1}{1+e^{-x}}\))將線性回歸的結果轉化為概率值,
sigmoid函數的輸出范圍是0到1。
最后得到邏輯回歸的公式:\(h_{w}(x)=\frac{1}{1+e^{-y}}=\frac{1}{1+e^{-w^Tx}}\)
2. 創建樣本數據
這次用scikit-learn中的樣本生成器make_moons來生成二分類用的樣本數據。
from sklearn.datasets import make_moons
fig, ax = plt.subplots(1, 1)
X, y = make_moons(noise=0.05, n_samples=1000)
ax.scatter(X[:, 0], X[:, 1], marker="o", c=y, s=25)
plt.show()
關于用make_moons生成樣本數據的介紹,請參考:TODO
3. 模型訓練
首先,分割訓練集和測試集。
from sklearn.model_selection import train_test_split
# 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
這次按照8:2的比例來劃分訓練集和測試集。
然后用scikit-learn中的LogisticRegression模型來訓練:
from sklearn.neighbors import LogisticRegression
# 定義邏輯回歸模型
reg = LogisticRegression()
# 訓練模型
reg.fit(X_train, y_train)
# 在測試集上進行預測
y_pred = reg.predict(X_test)
LogisticRegression的主要參數包括:
-
penalty:廣義線性模型的正則項,可選值包括L1正則項'
l1'、L2正則項'l2'、復合正則'elasticnet'和無正則項None,默認值為'l2'。 - dual:是否為對偶問題。默認為False。
- tol:容忍度。默認值為0.0001。
- C:懲罰系數。默認值為1.0。
- fit_intercept:是否擬合截距。默認為True。
- intercept_scaling:截距的縮放因子。默認值為1。
- class_weight:樣本權重,用于實現數據的不同分類重要性的懲罰。默認為None。
- random_state:隨機種子。默認為None。
-
solver:優化算法。默認為'
warn',可選項有'lbfgs'、'sag'、'saga'、'newton-cg'、'sag-l2'、'saga-l2'、'lbfgs-l2'和'optimal'。 - max_iter:最大迭代次數。默認為100。
- multi_class:多類別分類器。默認為'warn',當n_classes>2時,默認為True,否則默認為False。
- n_jobs:線程數。默認為None,表示使用CPU的核數。
最后驗證模型的訓練效果:
# 比較測試集中有多少個分類預測正確
correct_pred = np.sum(y_pred == y_test)
print("預測正確率:{}%".format(correct_pred/len(y_pred)*100))
# 運行結果
預測正確率:89.0%
準確率還可以,可以調節生成樣本數據的make_moons方法的noise參數,
看看在不同混亂程度的樣本數據下,邏輯回歸的準確性是否健壯。
4. 總結
邏輯回歸在很多領域都有廣泛的應用,如自然語言處理、圖像識別、醫療診斷、信用評分等。
它尤其適用于那些樣本特征之間存在線性關系,且目標變量為二元的情況。
邏輯回歸算法主要優勢在于::
- 實現簡單:易于理解和實現,可以在短時間內訓練出模型。
- 計算效率高:在訓練和預測時具有較高的計算效率,可以處理大規模的數據集。
- 可解釋性強:可以給出概率輸出,這使得它更容易解釋和信任。
不過,邏輯回歸也有其不足之處:
- 對數據質量和特征選擇敏感:如果數據中存在噪音或者特征選擇不當,可能會出現過擬合或者欠擬合的情況。
- 只能處理二分類問題:如果要處理多分類問題的話,需要把多分類問題轉為多個二分類問題。
- 對異常值和缺失值敏感:處理不當可能會影響模型的性能。
總結
以上是生活随笔為你收集整理的【scikit-learn基础】--『监督学习』之 逻辑回归分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原创:党波涛:普通家庭孩子怎么才能上清华
- 下一篇: 神经网络优化篇:详解梯度检验(Gradi