python逻辑回归代码_Logistic 逻辑回归及 python 实现
1. 引言
2. 數例
3. logistic 函數原理
4. 極大似然估計求出參數值
5. python 代碼
1. 引言
Logistic 邏輯回歸比較適合分類型因變量的回歸,這種問題在現實中很多,因此 Logistic 回歸的應用還挺廣泛的,在機器學習的一些方法中也借鑒了其中的一些思想。我想把這個方法梳理一下,自己也加深對這個方法的認識。
2. 數例
我應用了維基百科中的一個例子:20名學生復習考試的時間,與他們通過考試的情況如下表。
| pass | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
3. logistic 函數原理
我們想得到考試能否通過(命名為 , 0-1變量)與復習時間的回歸方程。直接擬合 0-1 變量不可以,但我們可以將 0-1 變量視為一個 0-1 分布,去擬合值為 1 出現的概率 ,因此用到了 logistic 函數:
從下圖可以看出,logistic 函數的值域落在 [0, 1] 之間,而定義域卻沒有限制。
因此,將 y 替換為一個線性函數:
代入到 logistic 函數中,得到概率 的表達式:
4. 極大似然估計求出參數值
因為概率 的表達式是一個非線性函數,不能用最小二乘法求解,需要用極大似然估計。
對于分類因變量 ,當它取值為 1 時認為事件發生,取值為 0 時認為事件未發生。因此,對于這個 0-1 分布應用極大似然估計,得到極大似然函數:
上面的式子兩面取對數,并且將 的表達式代入整理得:
然后求出使上面式子最大的參數: 即可。一般使用牛頓法求出一個近似解,不少軟件都自動求解,但不同軟件求出的回歸方程可能有差別。
得出參數值后,將輸入值代入方程 (1)中計算概率值,若概率值大于 0.5,歸為第一類,否則歸為第二類。
對于邏輯回歸,可以用 wald 檢驗來檢驗參數值。
5. python 代碼
from?sklearn.linear_model?import?LogisticRegressionimport?numpy?as?np
x?=?np.array([0.5,0.75,1,1.25,1.5,1.75,1.75,2,.25,2.5,2.75,3,3.25,3.5,4,4.25,4.5,4.75,5,5.5])
x?=?x.reshape(-1,?1)?#?需要轉化成列數組
y?=?[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]
model?=?LogisticRegression().fit(x,?y)
print(model.coef_)?#?打印出斜率
print(model.intercept_)?#?打印出截距
print(model.predict(np.array([2]).reshape(-1,1)))?#?預測?x?為?2?小時的通過情況
輸出結果:
[[0.83239603]]
[-2.21314711]
[0]
總結
以上是生活随笔為你收集整理的python逻辑回归代码_Logistic 逻辑回归及 python 实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CPU 乱序执行验证
- 下一篇: linux 内存显示括号内字母的含义