当前位置: 首页>前端>正文

py将逻辑回归的程序设计思路流程图 逻辑回归代码python

  • 1. 引言
  • 2. 数例
  • 3. logistic 函数原理
  • 4. 极大似然估计求出参数值
  • 5. python 代码

1. 引言

Logistic 逻辑回归比较适合分类型因变量的回归,这种问题在现实中很多,因此 Logistic 回归的应用还挺广泛的,在机器学习的一些方法中也借鉴了其中的一些思想。我想把这个方法梳理一下,自己也加深对这个方法的认识。

2. 数例

我应用了维基百科中的一个例子:20名学生复习考试的时间,与他们通过考试的情况如下表。

hours

0.5

0.75

1

1.25

1.5

1.75

1.75

2

2.25

2.5

2.75

3

3.25

3.5

4

4.25

4.5

4.75

5

5.5

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] 之间,而定义域却没有限制。

py将逻辑回归的程序设计思路流程图 逻辑回归代码python,py将逻辑回归的程序设计思路流程图 逻辑回归代码python_python,第1张

因此,将 y 替换为一个线性函数:

代入到 logistic 函数中,得到概率 的表达式:

4. 极大似然估计求出参数值

因为概率 的表达式是一个非线性函数,不能用最小二乘法求解,需要用极大似然估计

对于分类因变量 ,当它取值为 1 时认为事件发生,取值为 0 时认为事件未发生。因此,对于这个 0-1 分布应用极大似然估计,得到极大似然函数:

上面的式子两面取对数,并且将 的表达式代入整理得:

然后求出使上面式子最大的参数: 即可。一般使用牛顿法求出一个近似解,不少软件都自动求解,但不同软件求出的回归方程可能有差别。

  • 得出参数值后,将输入值代入方程 (1)中计算概率值,若概率值大于 0.5,归为第一类,否则归为第二类。
  • 对于逻辑回归,可以用 wald 检验来检验参数值。

5. python 代码

from sklearn.linear_model import LogisticRegression
import 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 小时的通过情况

from sklearn.linear_model import LogisticRegression
import 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]


https://www.xamrdz.com/web/2gm1937778.html

相关文章: