Python梯度下降法实现二元逻辑回归

二元逻辑回归假设函数


定义当函数值大于等于0.5时,结果为1,当函数值小于0.5时,结果为0.函数的值域是(0, 1)。

二元逻辑回归的损失函数


上图为二元逻辑回归的概率公式,则代价函数可以表示为

损失函数求偏倒数为

可以发现和线性回归的结果是一样的,只不过是假设函数h发生了变化。

正则化

为了避免过拟合,通常在代价函数后加一个正则化项,针对二元逻辑回归,填加正则化项,
12∑j=1nθj2\frac{1}{2}\sum_{j=1}^{n}\theta _{j}^{2}21​∑j=1n​θj2​
这样,随时函数后就应该添加一项
1m∑j=1nθj\frac{1}{m}\sum_{j=1}^{n}\theta _{j}m1​∑j=1n​θj​

Python代码实现

import numpy as np
import matplotlib.pyplot as plt# 特征数目
n = 2
# 构造训练集
X1 = np.arange(-2., 2., 0.02)
m = len(X1)X2 = X1 + np.random.randn(m)
# print(X1, X2)
one = np.full(m, 1.0)
Y = 1 / (np.full(m, 1.0) + np.exp(-(0.1 * np.random.randn(m)-np.full(m, 0.6) + 5*X1 + 2 * X2)))
# Y
Y = np.array([np.int(round(i)) for i in Y])# 梯度下降法
theta = np.random.rand(n+1)
print(theta)
X = np.vstack([np.full(m, 1), X1, X2]).T
# 前一次的theta
pre = np.zeros(n + 1)
diff = 1e-10
max_loop = 10000
alpha = 0.01
lamda = 1
now_diff = 0
while max_loop > 0:#sum = np.zeros(n + 1)sum = np.sum([(1 / (1. + np.exp(- np.dot(theta, X[i]))) - Y[i])*X[i] for i in range(m)], axis=0)# for i in range(m):#    sum += (1 / (1. + np.exp(- np.dot(theta, X[i]))) - Y[i])*X[i]theta = theta - (alpha * sum + alpha * lamda * theta)print("还差 %d 次" % max_loop, "theta = ", theta)now_diff = np.linalg.norm(theta - pre)if(now_diff <= diff):breakpre = thetamax_loop -= 1# 打印
print("find theta : ", theta, "now_diff : ", now_diff)# 画出平测试例子图
X_1 = np.array([(X1[i], X2[i]) for i in range(m) if Y[i] == 1])
X_0 = np.array([(X1[i], X2[i]) for i in range(m) if Y[i] == 0])
plt.scatter(X_1[:, 0], X_1[:, 1], c='r', marker='o')
plt.scatter(X_0[:, 0], X_0[:, 1], c='g', marker='v')# 画出求得的模型图
point1 = np.arange(-2, 2, 0.02)
point2 = (theta[0] + theta[1] * point1)/(-theta[2])plt.plot(point1, point2)
plt.xlabel('X1')
plt.ylabel('X2')
plt.show()

效果图如下

Python梯度下降法实现二元逻辑回归相关推荐

  1. 鸢尾花分类python_二元逻辑回归实现鸢尾花数据分类(python)

    说明: 本文利用python实现二元逻辑回归,没有加正则项.挑选iris数据前100个样本作为训练集,他们分属于两个类别,样本特征选择第1列(花萼长度x1)和第2列(花萼宽度x2). 程序以函数形式实 ...

  2. 《人工智能》机器学习 - 第5章 逻辑回归(二 二元逻辑回归实战)

    5.2二元逻辑回归实战 5.2.1二元逻辑回归简单实例 首先看看数据吧. 随机的一些数据,这是一个二分问题的数据.先导入数据.Python代码如下. """ 函数说明:读 ...

  3. 基于Octave/Matlab的二元逻辑回归(logistic regression)算法

    基于Octave/Matlab的二元逻辑回归(logistic regression)算法 本博文基于吴恩达老师的机器学习网课,是对作业代码进行简化和补充完整后的实现. 逻辑回归算法的基本思想 sig ...

  4. 数学推导+纯Python实现机器学习算法:逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 自本系列第一讲推出以来,得到了不少同学的反响和赞成,也有同学留言说最好能把数学推导部分写的详细点,笔者只能说尽力,因为打公式实 ...

  5. 二元逻辑回归 · 数学推导过程及代码实现完全解析

    文章目录 概述 两个重要函数 预测的基本思想 二元逻辑回归 线性模型的简单回顾 从线性回归到二元逻辑回归 参数怎么估计 梯度下降 牛顿迭代 最近修改:2021/6/17 原文<从二元逻辑回归到多 ...

  6. 练习:二元逻辑回归实现

    一.什么是逻辑回归模型 逻辑回归模型是线性的二分类模型. 逻辑回归的表达式: f(x)就是大名鼎鼎的Sigmoid函数,也称为Logistic函数.这个函数的曲线如下: sigmoid函数的作用就是将 ...

  7. 机器学习 -- 二元逻辑回归实例

    二元逻辑回归可用于向量的概率预测,是一种分类算法.迭代方式可选择最小二乘法或梯度下降. 迭代之后会得到每个特征的系数. 公式(对于有N个特征的向量,其中w[i]为权): f(x) = 1/(1+ e^ ...

  8. 二元logistic模型案例_二元逻辑回归的简介与操作演示

    二元逻辑回归介绍 定义 Logistic回归主要用于因变量为分类变量(如是否等)的回归分析,自变量可以为分类变量,也可以为连续变量.它可以从多个自变量中选出对因变量有影响的自变量,并可以给出预测公式用 ...

  9. 数据分析之非参数检验与二元逻辑回归结果不一致的原因

    在对两组数据进行非参数检验时,各项属性间无统计学差异,但以分类变量作为因变量使用二元逻辑回归进行分析时,其中存在属性p值小于0.05,即该变量对因变量的影响具有显著性. 导致该情况的原因 可能是由于两 ...

最新文章

  1. android 点击事件消费,Android View事件分发和消费源码简单理解
  2. nagios配置文档
  3. 全凭“脚感”,这个不看路的机器人就能稳稳爬楼梯,一脚踩空也不怕 | RSS 2021...
  4. QTP的那些事--学习QTP必备的网站整理
  5. android源码编译烧鸡,android4.0源码下载 编译 系统体验~图解
  6. 可以储存照片的字段类型是_sql server 中 哪个字段类型可以储存图象?
  7. po3580SuperMemo(splay)
  8. LINUX环境:MySQL和Oracle开机自启动
  9. HTML5项目笔记8:使用HTML5 的跨域通信机制进行数据同步
  10. java生成背景透明的png图片,Java生成背景透明的png图片
  11. apq用linux镜像,apq模拟器如何使用 apq模拟器使用方法教程
  12. 科目三-上海松江小昆山
  13. 健身管理系统【管理员添加,删除,个人信息,项目】
  14. safari浏览网页时显示“不安全网站”怎么办?
  15. 开关电源补偿环路设计(2):实践部分-例题
  16. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享
  17. 有关mean iou 言简意赅的介绍 及python 代码实现
  18. 7-20 表达式转换(中缀转后缀)
  19. 【原创】新韭菜日记18--学习股市发展趋势,牛市回顾,券商分析
  20. 07_python爬虫内容以及介绍

热门文章

  1. 3D模型 Solidworks CATIA UG
  2. basler 相机取图超时_一款Basler相机拍图问题(单次拍照时间过长,连续拍照正常)的处理经验...
  3. swal弹窗_为何无法弹出 swal 提示框?
  4. 拿到月薪20k的前端工程师简历是什么样的?
  5. GIT 学习笔记(2) —— GIT 基础
  6. 超好看的30款网站侧边栏设计
  7. 互联网产品设计进阶(8)读别人的详细设计说明书
  8. java弹出浏览器提示框_js弹出框、对话框、提示框、弹窗总结
  9. 微信公众号运营,图文编辑过程中有哪些常识
  10. html语言的核心是,WEB前端三大核心技术