机器学习-回归之逻辑回归算法原理及实战
生活随笔
收集整理的這篇文章主要介紹了
机器学习-回归之逻辑回归算法原理及实战
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
邏輯回歸
- 簡介
- 在一元回歸和多元回歸模型中,處理的因變量都是數值型區間變量,建立的模型描述的是因變量的期望與自變量之間的線性關系。然而,在實際的問題分析時,所研究的變量往往不全是區間變量而是順序變量或者屬性變量,如二項分布的問題。
- 例如,在醫療診斷中,可以通過分析病人的年齡、性別、體質指數、平均血壓、疾病指數等指標,判斷這個人是否有糖尿病,假設y=0表示未患病,y=1表示患病,這里的因變量就是一個;兩點(0或1)的分布變量,它就不能用之前回歸模型中因變量連續的值來預測這種情況下因變量y的值(0或1)。
- 總之,線性回歸模型通常處理因變量是連續變量的問題,如果因變量是定性變量,線性回歸不再適用,需要采用邏輯回歸模型解決。邏輯回歸(LR)是用于處理因變量為分類變量的回歸問題,常見的是二分類或者二項分布問題,也可以處理多分類問題,邏輯回歸實際上是一種分類方法。
- 原理
- 二分類問題的概率與自變量之間的關系圖形往往是一個S形曲線,常采用Sigmoid函數實現,其函數定義如下:f(x)=11+e?xf(x)={1 \over 1+e^{-x}} f(x)=1+e?x1?。
- 對于0-1型變量,y=1的概率分布公式定義如下:p(y=1)=pp(y=1)=p p(y=1)=p,對于y=0概率為1-p。
- 如果采用線性模型分析,變換公式如下:p(y=1∣x)=θ0+θ1x1+θ2x2+...+θnxnp(y=1|x)=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n p(y=1∣x)=θ0?+θ1?x1?+θ2?x2?+...+θn?xn?。實際應用中,概率p與因變量往往是非線性的,為了解決該類問題,可以引入logit變換,使logit§與自變量之間存在線性相關的關系,邏輯回歸模型如下:logit(p)=ln[p1?p]=θ0+θ1x1+θ2x2+...+θnxnlogit(p)=ln[{p \over 1-p}]=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n logit(p)=ln[1?pp?]=θ0?+θ1?x1?+θ2?x2?+...+θn?xn?。
- 通過推導概率p變換如下式,這與Sigmoid函數相符,也體現了概率p與因變量之間的非線性關系。以0.5為界限,預測p大于0.5時,判斷此時y為1,否則為0。
- P=11+e?(θ0+θ1x1+θ2x2+...+θnxn)P={1 \over 1+e^{-(θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n)}} P=1+e?(θ0?+θ1?x1?+θ2?x2?+...+θn?xn?)1?。在回歸模型建立中,主要需要擬合公式中n個參數θ即可。
- 實戰
- 鳶尾花數據集邏輯回歸分類
- 代碼
- # -*-coding:utf-8-*-# 導入模塊import matplotlib.pyplot as pltimport numpy as npfrom sklearn.datasets import load_irisfrom sklearn.linear_model import LogisticRegression# 讀入數據iris = load_iris()X = iris.data[:, :2]Y = iris.target# 建立模型lr = LogisticRegression(C=1e5, solver='liblinear')lr.fit(X, Y)# 生成兩個網格矩陣h = .02x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))# 預測Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)# 繪制plt.figure(1, figsize=(8, 6))plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='setosa')plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='x', label='versicolor')plt.scatter(X[100:, 0], X[100:, 1], color='green', marker='s', label='Virginica')plt.xlabel('Sepal length')plt.ylabel('Sepal width')plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.xticks(())plt.yticks(())plt.legend(loc=2)plt.show()
- 運行結果
- 補充說明
- 參考書為《Python3數據分析與機器學習實戰》,對部分錯誤修改
- 具體數據集和代碼見我的Github,歡迎Star或者Fork
總結
以上是生活随笔為你收集整理的机器学习-回归之逻辑回归算法原理及实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-聚类之K均值(K-means)
- 下一篇: Markdown-数学公式语法