news 2026/8/31 15:40:30

Python 机器学习算法二之逻辑回归的推导及实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 机器学习算法二之逻辑回归的推导及实战

在线性回归模型里头, 我们事实上构建了一个模型, 用以拟合自变量与因变量之间的线性关系, 然而在某些特定的时候, 我们所要做的或许是一个分类模型, 那么在此处就有可能会用到线性回归模型的变种, 也就是逻辑回归, 在本节当中, 我们针对逻辑回归来展开一番详细的说明。

实例引入

仍以之前那一节所举的例子来说, 张三、李四、王五、赵六都准备去贷款了, 在贷款之际银行对他们的月薪以及住房面积等相关因素展开了调查, 而这两个因素决定着贷款款项能否即刻到账, 以下分别列出了他们四个人的工资状况、住房面积以及到账的具体情形:

姓名

工资(元)

房屋面积(平方)

是否可立即到账

张三

6000

58

李四

9000

77

王五

11000

89

赵六

15000

54

瞅见了这般的数据, 又有一位孙七前来, 此人工资为 1 万 2 千元, 住房面积是 60 平, 那里的贷款能够即刻到账吗?

思路探索

对于这个例子而言, 我们并非再去预测贷款金额究竟具体为多少, 而是务必要针对款项能否立刻到账实施一种分类, 这种分类的结果不是“否”就是“是”, 因而输出结果我们得把它映射到一个区间之内, 使得 0 代表“否”, 1 代表“是”, 在此我们就需要借助一个函数来助力我们达成这个功能, 它的称谓是函数, 它的表达式照这样呈现: 它的函数图像是呈这样的:

它定义域为全体实数, 值域是(0, 1), 自变量小于 -5 时, 其值趋近于 0, 自变量大于 5 时, 其值趋近于 1, 自变量为 0 时, 其值等于 1/2。那么我们在线性回归模型基础上加一层该函数, 结果不就能被转化为 0 到 1 了吗? 如此便很自然地转化成了一个分类模型。我们清楚, 线性回归模型的呈现形式是这般的: 要是我们在它的基础之上增添一层函数, 其表达式就会变为: 好, 此刻我们对一下这个表达式所表达的意义予以思索。我们通过举例来讲、倘若这个函数的输出成果是1, 那么我们必然认定结果为“是”。要是输出结果是0? 我们自然认定结果为“否”, 然而要是输出结果是0.5? 我们仅能够模棱两可, 在此时, 我们能够判断为“是”, 也能够判断为“否”, 然而恰好为0.5的概率实在是太小了, 或多或少都存在着一些偏差。所以要是输出结果为0.51, 那么我们会怎样去认为? 我们会觉得“是”的概率会更大, “否”的概率会更小, 概率是多少? 是0.49。要是输出结果是0.95? “是”的概率是多少? 无需多言, 肯定是0.95。因此, 我们能够看出来, 函数输出的结果, 代表了预测为“是”的概率, 而这概率, 正是真实结果为1的概率。如下这般来表达, 这里, 我们把预测结果用$ h{theta}(x) $表达出来,所以, 针对输入x, 分类类别是1和0对应的概率分别就为: , $$ \begin{cases} P(y = 1|x;\theta) =\ h{\theta}(x) \\\\ P(y = 0|x;\theta) =\ 1 - h{\theta}(x) \end{cases}$$, $ J(\theta) =\ \dfrac{1}{2m}\sum{i=1}^{m}(h\theta(x^{(i)}) - y^{(i)})^2 $, $ Cost(h\theta(x), y) =\ \begin{cases} -log(h\theta(x)), y = 1 \\\\ -log(1- h\theta(x)), y = 0 \end{cases}$, $ Cost(h\theta(x), y) =\ -ylog(h\theta(x)) - (1-y)log(1-h\theta(x))$, $ J(\theta) =\ \dfrac{1}{m}\sum{i=1}^{m}Cost(h\theta(x^{(i)}), y^{(i)})\\\\$.$ =\ – \dfrac{1}{m}\sum{i=1}^{m}$ 句号。

y的第i个值, 乘以以h与θ作用于x的第i个值的结果为对数的对数, 加上, 1减去y的第i个值的结果, 乘以, 以1减去h与θ作用于x的第i个值的结果为对数的对数。

当下, 如同线性回归那样, 此次我们的目标是去寻觅到那个$ theta $, 于此状况下, 能让$ J(theta) $能够达到最小。

推导过程

这次咱们不能够像上次那般运用径直求偏导数、接着把偏导数设为0的方式去求解$ theta $来着, 如此会没办法得出确切的值。我们能够采用梯度下降法开展求解的工作,也就是一步又一步地探寻出$theta$的更新进程, 公式是这样的: 这里面最为关键核心要点便是求偏导, 过程这样子: 因而: 这个时候我们察觉到, 它梯度下降的推导得出的结果跟线性回归恰好是一样的!

编程实现

接下来, 我们依旧借助 里的 API 去搞出逻辑回归模型, 所运用的库是 , 它的 API 是这样的:

1
class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

参数说明如下:

仅在正则化优化算法为 -cg、sag 和 lbfgs 时才有用的, 用来表示算法收敛最大迭代次数(int 类型, 默认为 10 的), 是有关算法收敛的最大迭代次数。分类方式选定参数(str 类型, 可选参数为 ovr 和 , 默认为 ovr 的), 其中 ovr 当属前面提及的 one-vs-rest(OvR), 而 便是前面提到的 many-vs-many(MvM)。假设处于二元逻辑回归情形, ovr与之不存在任何差异, 差异主要体现在多元逻辑回归方面。日志冗长度, 乃是int类型, 默认值是0, 意味着不输出训练过程, 当值为1时偶尔输出结果, 大于1则对子模型逐个输出。热启动参数, 属于bool类型, 默认值为False, 若为True, 那么下一次训练会以追加树的方式开展(重新用上一次调用当作初始化)。并行数, 是int类型, 默认值为1。当处于1的情况时, 运用CPU的一个内核来运行程序, 当处于2的情况之时, 运用CPU的2个内核去运行程序, 当为 -1的情形的时候, 运用所有CPU的内核来运行程序。

属性说明如下:

我们现在来解决上面的示例,代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
from sklearn.linear_model import LogisticRegression x_data = [ [6000, 58], [9000, 77], [11000, 89], [15000, 54] ] y_data = [ 0, 0, 1, 1 ] lr = LogisticRegression() lr.fit(x_data, y_data) x_test = [[12000, 60]] print('Intercept', lr.intercept_) print('Coef', lr.coef_) print('款项是否可以立即到账', lr.predict(x_test)[0])

在这里, 我们的数据发生了变化, 转变为了是非判断, 在此处, 0 所代表的含义是“否”, 而 1 所代表的含义是“是”。在这里进行逻辑回归操作的时候, 使用了对象, 随后调用 fit() 方法去进行拟合, 在拟合完成之后, 使用。

12000, 60

这条数据作为输入,让模型输出它的预测值。 运行结果:

1 2 3
Intercept [-0.03142387] Coef [[ 0.00603919 -0.72587703]] 款项是否可以立即到账 1

截距项以及系数项于结果里被输出, 接着, 对能否立刻到账做了预测, 最后的结果是1, 这意味着孙七开展贷款之后, 款项能够立马到账。以上这些内容便是逻辑回归的基础推导以及代码应用实现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 15:40:08

从NumPy到Pandas:一条避开数据分析学习弯路的高效路径

见过太多人学数据分析,前两周还热血沸腾,到 Pandas 就卡住。不是看不懂文档,不是记不住函数,而是一打开真实数据就慌:列名对不上、日期是字符串、明明看着没有空值却一算就报错。这时候最需要的不是一个语法速查表&…

作者头像 李华
网站建设 2026/8/31 15:39:06

机器学习及其Python实践

机器学习及其实践机器学习及其实践通过计算机程序去做获取数据的行为, 之后进行处理, 再接着分析, 还要进而理解数据, 借此识别出数据里存在的模式与规律, 并且利用这些知识来做出智能决策或者预测未来, 这被称作机器学习。近年来, 伴随社会信息化进程加快, 机器学习领域受到广…

作者头像 李华
网站建设 2026/8/31 15:36:57

安全厂商技术岗笔试复盘:从操作系统到网络的计算机基础考察

翻到自己2019年秋招的笔经笔记,我盯着“趋势科技 技术岗 客观题”这行字看了很久。那次笔试是我整个秋招里做得最拧巴的一场:说难吧,没有一道题超纲;说简单吧,每一道题都在考察你对知识点“背得出但用不对”的底层理解…

作者头像 李华
网站建设 2026/8/31 15:36:11

偏振成像与MATLAB实现:从三角度图像到DoP/AoP参数提取

简介:本资源是一套基于MATLAB实现偏振成像分析的完整实验代码与数据集,面向光学工程、机器视觉及图像处理方向的本科生、研究生和科研人员,解决从原始偏振图像获取斯托克斯参量、偏振度(DOLP)与偏振角(AOP&…

作者头像 李华
网站建设 2026/8/31 15:35:45

论坛社区系统源码实战:商城、知识付费、拓客广告四合一拆解

简介:这是一套功能完备的现代社区论坛系统源码,面向Web开发者、创业团队及中小型技术服务商,解决多场景一体化社区平台快速搭建需求。系统集成在线商城、知识付费下载、圈子拓客、微信投票、交友互动、在线课程等核心模块,支持PC端…

作者头像 李华
网站建设 2026/8/31 15:35:23

CVPR 2022 | 无需训练的Transformer架构搜索

01 论文信息 论文题目:Training-free Transformer Architecture Search 论文作者:Qinqin Zhou, Xing Sun, Kekai Sheng, Yonghong Tian, Xiawu Zheng, Jie Chen, Ke Li, Rongrong Ji 发表单位:Media Analytics and Computing Lab, School of …

作者头像 李华