吴恩达机器学习-可选实验室:逻辑回归,决策边界(Logistic Regression,Decision Boundary))

文章目录

    • 目标
    • 数据集
    • 图数据
    • 逻辑回归模型
    • 复习逻辑回归和决策边界
    • 绘图决策边界
    • 恭喜

目标

在本实验中,你将:绘制逻辑回归模型的决策边界。这会让你更好地理解模型的预测。

import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from lab_utils_common import plot_data, sigmoid, draw_vthresh
plt.style.use('./deeplearning.mplstyle')

数据集

假设你有以下训练数据集

  • 输入变量X是一个numpy数组,它有6个训练样本,每个样本有两个特征
  • 输出变量y也是一个包含6个示例的numpy数组,y为0或1
X = np.array([[0.5, 1.5], [1,1], [1.5, 0.5], [3, 0.5], [2, 2], [1, 2.5]])
y = np.array([0, 0, 0, 1, 1, 1]).reshape(-1,1) 

图数据

让我们使用一个辅助函数来绘制这些数据。标签y = 1的数据点显示为红色,标记为y=0的数据点用蓝色圆圈表示。

fig,ax = plt.subplots(1,1,figsize=(4,4))
plot_data(X, y, ax)ax.axis([0, 4, 0, 3.5])
ax.set_ylabel('$x_1$')
ax.set_xlabel('$x_0$')
plt.show()

在这里插入图片描述

逻辑回归模型

  • 假设您想在这个数据上训练一个逻辑回归模型,其形式为

F (x) = g(w0x0 + w1x1 + b)

g(z)是sigmoid函数

  • 假设你训练了模型,得到的参数是b=-3, w0= 1 w 1=1。也就是说,

F (x) = g(xo +x1 - 3)

(您将在课程中学习如何进一步将这些参数拟合到数据中)让我们试着通过绘制决策边界来理解这个训练过的模型预测的是什么

复习逻辑回归和决策边界

  • 回想一下,对于逻辑回归,模型表示为

fw.b (x^i) = g (w·x ^i + b)(1)

其中g(z)被称为sigmoid函数,它将所有输入值映射到0到1之间的值:

g (z) =1/(1+e^-z)

w·x是向量的点积

W·X= w0x0 + w1x1

  • 我们将模型(fw.b(x))的输出解释为给定x并由w和b参数化的y= 1的概率。
  • 因此,为了从逻辑回归模型中获得最终预测(y=0或y = 1),我们可以使用以下启发式方法

如果fw,b(x) >= 0.5,则预测y=1
如果fw,b(x) < 0.5,则预测y = 0

  • 让我们画出sigmoid函数,看看g(z) >= 0.5的地方
# Plot sigmoid(z) over a range of values from -10 to 10
z = np.arange(-10,11)fig,ax = plt.subplots(1,1,figsize=(5,3))
# Plot z vs sigmoid(z)
ax.plot(z, sigmoid(z), c="b")ax.set_title("Sigmoid function")
ax.set_ylabel('sigmoid(z)')
ax.set_xlabel('z')
draw_vthresh(ax,0)

在这里插入图片描述

  • 如您所见,对于z>=0, g(z) >=0.5
  • 对于逻辑回归模型,z = w·x+b。因此,

如果w·x+b>= 0,则模型预测y= 1
如果w·x+b<0,则模型预测y=0

绘图决策边界

现在,让我们回到我们的例子来理解逻辑回归模型是如何进行预测的。

  • 我们的逻辑回归模型是这样的

f (x) = g ( -3 + x0 + x1)

  • 从上面你学到的,你可以看到这个模型预测y= 1 如果-3+x0 +x1>=0

我们来看看它的图形是怎样的。我们先画出-3 +x0 +x 1= 0,也就是x1 =3- x0。

# Choose values between 0 and 6
x0 = np.arange(0,6)x1 = 3 - x0
fig,ax = plt.subplots(1,1,figsize=(5,4))
# Plot the decision boundary
ax.plot(x0,x1, c="b")
ax.axis([0, 4, 0, 3.5])# Fill the region below the line
ax.fill_between(x0,x1, alpha=0.2)# Plot the original data
plot_data(X,y,ax)
ax.set_ylabel(r'$x_1$')
ax.set_xlabel(r'$x_0$')
plt.show()

在这里插入图片描述

  • 在上图中,蓝线表示x0 +x1-3=0,它应该与x1轴相交于3(如果我们设置x1 = 3, x0 =0)和x0轴相交于3(如果我们设置x1 =0, x0 = 3)。
  • 阴影区域表示-3+x0+x1 <0。这条线上的区域是-3+xo+x >0。阴影区域(线下)的任何点都被分类为y =0。
  • 直线上或直线上的任何点都归为y = 1。这条线被称为“决策边界”。

正如我们在讲座中看到的,通过使用高阶多项式项(例如:f(x)= g(x0^2 +x1-1))我们可以得到更复杂的非线性边界。

恭喜

你已经在逻辑回归的背景下探索了决策边界。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day41| 416 分割等和子集

目录 416 分割等和子集 416 分割等和子集 class Solution { public:bool canPartition(vector<int>& nums) {int sum 0;vector<int> dp(10010, 0);for (int i 0; i < nums.size(); i) {sum nums[i];}if (sum % 2 1) return false;int target sum /…

软考笔记--信息系统架构

一.架构风格 信息系统架构设计的一个核心问题是能否使用重复的信息系统架构模式&#xff0c;即能否达到架构级别的软件重用。信息系统架构风格是描述某个特定应用领域中系统组织方式的惯用模式&#xff0c;架构风格定义了一个系统家族&#xff0c;即一个架构定义一个词汇表和一…

pytorch单机多卡训练 logger日志记录和wandb可视化

PyTorch 单机多卡训练示例 1、工具&#xff1a;2、代码3、启动 1、工具&#xff1a; wandb&#xff1a;云端保存训练记录&#xff0c;可实时刷新logging&#xff1a;记录训练日志argparse&#xff1a;设置全局参数 2、代码 import os import time import torch import wandb…

elementPlus的坑

记录由 element ui 到element plus的过程 el-form v-model与:model v-model就不用说了&#xff0c;这个:model类似于内置的API接口&#xff0c;用的时候这两个值一样就行 不一样的话会出现&#xff0c;如下奇怪的情况 能输入&#xff0c;但是只能文本框中只显示1个字符&#x…

jmeter快速使用

文章目录 前言一、安装jmeter二、插件安装三、添加常用监听器参考 前言 Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications. It can be used to simulate a heavy load on a server, group of servers, network…

Redis核心数据结构之整数集合

整数集合 概述 整数集合(intset)是集合键的底层实现之一&#xff0c;当一个集合只包含整数值元素&#xff0c;并且这个结合的元素数量不多时&#xff0c;Redis就会使用整数集合作为集合键的底层实现。 例子 举个例子&#xff0c;如果创建一个只包含五个元素的集合键&#x…

MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件

文章目录 MySQL 8.0 架构 之 慢查询日志&#xff08;Slow query log&#xff09;&#xff08;2&#xff09;流程图&#xff1a;查询记录到慢查询日志中的条件确定查询是否会记录在慢查询日志中的流程图参考 【声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何…

JavaScript数组方法常用方法大全

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. push()2. pop()3. unshift()4. shift()5. isArray()6. map()7. filter()8. every()9. some()10. splice()11. slice()12. indexOf()13. includes()14. concat()1…

RK3588 Android 12 系统内核开发+Native层脚本自启动+SELinux配置

前言 开发板型号&#xff1a;RK_EVB7_RK3588_LP4…_V11目标&#xff1a;在开发板上随开机自启动脚本&#xff0c;带起二进制程序&#xff0c;并完备一些其他系统功能。简介&#xff1a;本文自启动脚本run.sh唯一的作用就是拉起二进制程序demo&#xff1b;demo是简单的hello_wo…

Linux下阻塞IO驱动实验三的测试

一. 简介 前面一篇文章实现了驱动代码,以实现应用程序阻塞式访问设备,核心使用的Linux内核提供的阻塞IO机制:等待队列。文章地址如下: Linux下阻塞IO驱动实验实例三-CSDN博客 本文对驱动模块进行测试,测试按键功能是否正常,查看应用程序运行时CPU占用率是否接近0%,当…

【大厂AI课学习笔记NO.76】人工智能人才金字塔

人工智能领域&#xff0c;分为源头创新人才、产业研发人才、应用开发人才和实用技能人才。 人工智能领域的人才结构呈现多样化特点&#xff0c;主要可以分为源头创新人才、产业研发人才、应用开发人才和实用技能人才四大类。这四大类人才在人工智能领域的发展中各自扮演着不可或…

Android下使用OpenOCD

目录 1. 准备工作 2. 运行bootstrap 3. 运行Configure 4. 编译make 4.1 错误1 4.2 错误2 4.3 错误3 4.4 错误4 4.5 错误5 4.6 错误6 4.7 错误7 5. 安装 主要是使用NDK编译OpenOCD源码。最好先在Ubuntu中编译通过OpenOCD。 1. 准备工作 Ubuntu下下载NDK和OpenOCD&…

linux安全配置规范

一、 概述 1.1 适用范围 本配置规范适用于凝思操作系统&#xff0c;主要涉及LINUX操作系统安全配置方面的基本要求&#xff0c;用于指导LINUX操作系统安全加固工作&#xff0c;落实信息安全等级保护等保三级系统操作系统安全配置&#xff0c;为主机安全配置核查提供依据。…

Python刘诗诗

写在前面 刘诗诗在电视剧《一念关山》中饰演了女主角任如意&#xff0c;这是一个极具魅力的女性角色&#xff0c;她既是一位有着高超武艺和智慧的女侠士&#xff0c;也曾经是安国朱衣卫前左使&#xff0c;身怀绝技且性格坚韧不屈。剧中&#xff0c;任如意因不满于朱衣卫的暴行…

P1948 [USACO08JAN] Telephone Lines S

Here 典中之典&#xff01;&#xff01; 解题思路 可选k条边代价为0如何决策&#xff1f; 将到当前位置选择了几条代价为0的边放入状态&#xff0c;即若当前状态选的边数小于&#xff0c;则可以进行决策&#xff0c;是否选择当前边&#xff0c;若选&#xff0c;则&#xff0c…

基于智慧灯杆的智慧城市解决方案(2)

功能规划 智慧照明功能 智慧路灯的基本功能仍然是道路照明, 因此对照明功能的智慧化提升是最基本的一项要求。 对道路照明管理进行智慧化提升, 实施智慧照明, 必然将成为智慧城市中道路照明发展的主要方向之一。 智慧照明是集计算机网络技术、 通信技术、 控制技术、 数据…

uniapp:小程序数字键盘功能样式实现

代码如下&#xff1a; <template><view><view><view class"money-input"><view class"input-container" click"toggleBox"><view class"input-wrapper"><view class"input-iconone"…

C++ 队列

目录 队列的应用场景 1、429. N 叉树的层序遍历 2、 103. 二叉树的锯齿形层序遍历 3、662. 二叉树最大宽度 4、515. 在每个树行中找最大值 队列的应用场景 广度优先搜索&#xff08;BFS&#xff09;&#xff1a;队列是广度优先搜索算法的核心数据结构。在BFS中&#xff…

C语言:深入补码计算原理

C语言&#xff1a;深入补码计算原理 有符号整数存储原码、反码、补码转换规则数据与内存的关系 补码原理 有符号整数存储 原码、反码、补码 有符号整数的2进制表示方法有三种&#xff0c;即原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c;符号位用0表示“…

Linux:kubernetes(k8s)lable和selecto标签和选择器的使用(11)

通过标签是可以让我们的容器和容器之间相互认识&#xff0c;简单来说一边打了标签&#xff0c;一边使用选择器去选择就可以快速的让他们之间耦合 定义标签有两种办法&#xff0c;一个是文件中&#xff0c;一个是命令行里 我们在前几章编进文件的时候里面都有lable比如 这个就是…