来源:小小挖掘机   链接:

https://mp.weixin.qq.com/s/7Hz3aQR1gx2tD1xfbBSggg

有群友反馈:

所以,今天这篇文章中,咱们就先来用Excel来实现一个简单的逻辑回归模型。咱们由简到繁,一步步来。

1、Base模型

咱们先来尝试实现一个Base的逻辑回归模型,即单步更新的模型。这里咱们使用鸢尾花数据集。但鸢尾花数据集中一共三类,咱们图个简单,使用前两类的数据集,把setosa类标记为0,另一类标记为1,并选择正负样本各10条。excel中的数据如下:

然后,设定一个初始的预估值,咱们争取让预估值在[-0.5,0.5)之间:

每个参数都这么处理后,咱们复制粘贴一遍得到的参数,要不每次动excel,参数都会跟着刷新,粘贴方式选择只有值:

有了样本和参数,咱们可以来计算预估值了,先回顾一下逻辑回归的预估值(即预测为1的概率)计算公式:

在excel中,实现类似这种w*x,需要使用sumproduct函数,举个简单的例子:

这样的结果就是2 * 2 + 3 * 3 + 4 * 4 + 5 * 5 = 54

因此,计算逻辑回归的预估值,在excel中可用下面的公式:

这样,咱们就计算好每个样本的预估值了:

下一步是计算单样本的loss,公式如下(少了一个负号):

在excel中,使用下面的公式:

可以看到,这里加入了一个if判断,如果预估值和实际值相同,则误差为0,如果不加这个,会出现什么情况呢:

所以一定要加上这个IF判断。

好了,这时候,咱们已经计算好单个样本的预估值及损失了:

模型的总损失就是单样本损失的平均值。

接下来的任务是通过梯度下降法对参数进行更新。首先设定一个学习率:

这里学习率不宜设置的太大。

随后时计算梯度,逻辑回归中,每个参数的梯度计算如下:

上面的式子意思就是说,当要更新第j个参数时,对每个样本i,我们先计算其预估值和实际值的差,再乘上样本i第j个特征值,随后对每个样本计算后再取平均值作为第j个参数的梯度。咱们可以把平均值拆分为两部分,一部分是预估值 * 特征值,一部分是实际值 * 特征值,因此,我们之前讲过的sumproduct函数又派上用场了,梯度计算如下:

对每个参数都执行一次,我们就得到了每个参数的梯度:

接下来,咱们要计算更新后的参数,计算公式如下:

那么,在excel中,同样对参数进行更新(下图中的K11,应该用$进行锁定):

接下来,要把“更新后参数”那一行对应的参数,复制到“参数”那一行。直接复制是不行的,会出现下面的问题:

我们要选择只粘贴值:

你有没有发现,但我们粘贴值过去的时候,“梯度”和“更新后参数”那一行变了,没错,因为参数那一行的变动,导致整个梯度、预估值、损失等都变了,此时的梯度等已经是下一轮的梯度了。

所以!要想实现不断的更新,其实关键的一步就是把“更新后参数”那一行只复制值到“参数”那一行,但我们总不能手动复制吧,想要更方便的话,就是将其变为一个快捷键,实现一键更新!这时候录制宏功能就来了!

接下来我们就可以通过刚才设置的快捷键command + option + e来不断更新参数了,也可以发现,咱们的loss在不断下降。这样一个简单的逻辑回归过程就实现了!

咱们现在实现的一个功能,还比较简单,只能通过单步运算来优化参数。像一次运行多步、正则项、early stop、绘制损失函数等等还没有实现。

python爬虫人工智能大数据公众号

python 逻辑回归_不会Python没问题!用Excel实现简单的逻辑回归!相关推荐

  1. 不会Python没问题!用Excel实现简单的逻辑回归!

    作者|石晓文 来源|小小挖掘机(ID:wAIsjwj) 上一篇文章中,咱们通过Excel来演示了一下Transformer,有群友反馈: 所以,今天这篇文章中,咱们就先来用Excel来实现一个简单的逻 ...

  2. python意外缩进引发逻辑错误_如何编写 Python 程序

    如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...

  3. 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...

    大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...

  4. python 判断类型_青少年之Python编程课程安排lt;第一季gt;

    第一章    开启Python之旅 1.   你将了解什么是Python 2.   在电脑上安装并简单使用Python 3.   开始通过Python与计算机进行交流(编程) 第二章    变量 1. ...

  5. python优化网站_[练习] 用PYTHON来优化网站中的图片

    我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...

  6. python开发中级_针对中级Python开发人员的13个项目构想

    python开发中级 Learning the basics of Python is a wonderful experience. But the euphoria of just learnin ...

  7. python列表拆包_详解python 拆包可迭代数据如tuple, list

    详解python 拆包可迭代数据如tuple, list 拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, ...

  8. python len函数_知识清单Python必备的69个函数,你掌握了吗?

    本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...

  9. 只会python怎么挣钱_业余学python有用吗

    Python的火热我就不细说了,大家都是编程老司机,对最前沿最火热的编程语言肯定比我还了解. 前几天,我看了一篇"如何用Python制造一个抖音小姐姐发掘器?",阅读量竟然比头条上 ...

  10. python求加速度_如何利用Python 为自然语言处理加速度

    自去年发布 Python 的指代消解包(coreference resolution package)之后,很多用户开始用它来构建许多应用程序,而这些应用与我们最初的对话应用完全不同. 利用 spaC ...

最新文章

  1. Android笔记——四大组件详解与总结
  2. ArcCatalog连接远程ArcGIS Server服务器
  3. qudpsocket 丢包 线程解决_服装毕业设计一站式解决方案——线下amp;线上辅导课程...
  4. 构造函数,实例,原型,以及原型链
  5. python api接口 安全_App开放接口api安全性的设计与实现
  6. c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)
  7. sql 拼接同列的值
  8. [ An Ac a Day ^_^ ] CodeForces 680A Bear and Five Cards
  9. css table布局大法,解决你大部分居中、多列等高、左右布局的问题
  10. myBatis --(3)数据的增删改查
  11. 机组0:为什么补码比原码多一个-128清晰解释
  12. 三层交换(VLAN间通信)
  13. Fluentd (td-agent) 日志处理
  14. WAIC | 九章云极方磊:Hypernets——自动化机器学习的基础框架
  15. 为什么大型高难度工程的首选支模架是盘扣架?
  16. 基于matlab毕业设计题目,matlab毕业设计题目.doc
  17. PDF分割与合并(充分利用Spire的bug实现操作PDF)
  18. 前端的工程化、模块化和组件化
  19. H3C/华为网络设备常规命令集
  20. Quartus生成原理图

热门文章

  1. 【洛谷1985】【USACO07OPEN】翻转棋
  2. SpringBoot结合ActiveMQ(同时支持Queue和Topic)
  3. JavaScript之数组学习
  4. KitKat带来短信应用的改变
  5. Install R language on Linux RHEL5 or RHEL6
  6. 解读IBM存储虚拟化的两大法宝
  7. 取得客户端的机器名,域名,登陆用户名...转
  8. python如何安装pipwindows_如何在Windows上使用python 2.6安装pip
  9. springboot修改默认端口号,启动端口号
  10. idea如何操控git分支