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

吴恩达机器学习-C1W3L2-逻辑回归之S型函数

可选实验:逻辑回归

在这个不评分的实验中,你会

  • 探索sigmoid函数(也称为logistic函数)
  • 探索逻辑回归;哪个用到了s型函数
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from plt_one_addpt_onclick import plt_one_addpt_onclick
from lab_utils_common import draw_vthresh
plt.style.use('./deeplearning.mplstyle')

Sigmoid或Logistic函数

正如讲座视频中所讨论的,对于分类任务,我们可以从使用线性回归模型 f w , b ( x ( i ) ) = w ⋅ x ( i ) + b f_{\mathbf{w},b}(\mathbf{x}^{(i)}) = \mathbf{w} \cdot \mathbf{x}^{(i)} + b fwb(x(i))=wx(i)+b开始,来预测给定 x x x y y y
-然而,我们希望我们的分类模型的预测在0和1之间,因为我们的输出变量 y y y是0或1。
-这可以通过使用“sigmoid函数”来完成,该函数将所有输入值映射到0到1之间的值。
我们来实现s型函数,自己看看。
在这里插入图片描述

Sigmoid函数的公式

s型函数的公式如下
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1
在逻辑回归的情况下,z (sigmoid函数的输入)是线性回归模型的输出。

  • 单个示例时,“ z z z”为标量。
  • 在多个示例的情况下, z z z可能是由 m m m值组成的向量,每个示例一个。
  • sigmoid函数的实现应该涵盖这两种可能的输入格式。让我们在Python中实现它。

NumPy有一个名为exp()的函数,它提供了一种方便的方法来计算输入数组 z 中所有元素的指数( e z e^{z} ez)。
它还可以使用单个数字作为输入,如下所示。

# Input is an array. 
input_array = np.array([1,2,3])
exp_array = np.exp(input_array)print("Input to exp:", input_array)
print("Output of exp:", exp_array)# Input is a single number
input_val = 1  
exp_val = np.exp(input_val)print("Input to exp:", input_val)
print("Output of exp:", exp_val)

sigmoid函数是用python实现的,如下面的单元格所示。

def sigmoid(z):"""Compute the sigmoid of zArgs:z (ndarray): A scalar, numpy array of any size.Returns:g (ndarray): sigmoid(z), with the same shape as z"""g = 1/(1+np.exp(-z))return g

让我们看看对于不同的z值这个函数的输出是什么

# Generate an array of evenly spaced values between -10 and 10
z_tmp = np.arange(-10,11)# Use the function implemented above to get the sigmoid values
y = sigmoid(z_tmp)# Code for pretty printing the two arrays next to each other
np.set_printoptions(precision=3) 
print("Input (z), Output (sigmoid(z))")
print(np.c_[z_tmp, y])

左列的值为z,右列的值为s型(z)。如您所见,sigmoid的输入值范围从-10到10,输出值范围从0到1。
现在,让我们尝试使用matplotlib库绘制这个函数。

# Plot z vs sigmoid(z)
fig,ax = plt.subplots(1,1,figsize=(5,3))
ax.plot(z_tmp, y, c="b")ax.set_title("Sigmoid function")
ax.set_ylabel('sigmoid(z)')
ax.set_xlabel('z')
draw_vthresh(ax,0)

如你所见,当z趋于负值时,s型函数趋于0,当z趋于正值时,s型函数趋于1。

逻辑回归

逻辑回归模型将s型曲线应用于我们熟悉的线性回归模型,如下图所示:
f w , b ( x ( i ) ) = g ( w ⋅ x ( i ) + b ) (2) f_{\mathbf{w},b}(\mathbf{x}^{(i)}) = g(\mathbf{w} \cdot \mathbf{x}^{(i)} + b ) \tag{2} fw,b(x(i))=g(wx(i)+b)(2)
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1

在这里插入图片描述
让我们将逻辑回归应用到肿瘤分类的分类数据示例中。
首先,加载示例和参数的初始值。

x_train = np.array([0., 1, 2, 3, 4, 5])
y_train = np.array([0,  0, 0, 1, 1, 1])w_in = np.zeros((1))
b_in = 0

尝试以下步骤:

  • 点击“运行逻辑回归”以找到给定训练数据的最佳逻辑回归模型
    • 注意所得模型与数据拟合得很好。
    • 注意,橙色线是’ z z z’或 w ⋅ x ( i ) + b \mathbf{w} \cdot \mathbf{x}^{(i)} + b wx(i)+b。它与线性回归模型中的直线不匹配。
      通过应用“阈值”进一步改进这些结果。
  • 勾选“切换0.5阈值”上的框,以显示如果应用阈值的预测。
    • 这些预测看起来不错。预测与数据相符
    • 现在,在大肿瘤大小范围内(接近10)添加进一步的数据点,并重新运行线性回归。
    • 与线性回归模型不同,该模型持续做出正确的预测
plt.close('all') 
addpt = plt_one_addpt_onclick( x_train,y_train, w_in, b_in, logistic=True)

恭喜

你已经探索了s型函数在逻辑回归中的应用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【c++】爬虫到底违不违法?
  • 美元/日元交易分析与市场展望
  • Django项目为后台admin用户添加密码
  • webstorm配置项目Typescript编译环境
  • Java 9 新特性(JKD9)
  • SetuptoolsDeprecationWarning: setup.py install is deprecated
  • 【初阶数据结构】11.排序(2)
  • 2024年技校云计算实验室建设及云计算实训平台整体解决方案
  • 深入分析 Android ContentProvider (十)
  • 【C语言】宏定义常量加 ; 的错误
  • 第一阶段面试问题(前半部分)
  • 基于Vue的实时单号采集与校验系统开发:扫码枪自动输入与后台验证
  • 利用人工智能ChatGPT自动生成基于PO的数据驱动测试框架
  • 关于python问题 ,生成的excel文件内无爬取的数据存在,请问应如何解决?
  • 花10分钟写个漂亮的后端API接口模板!
  • 30天自制操作系统-2
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular 2 DI - IoC DI - 1
  • es6
  • go append函数以及写入
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript HTML DOM
  • mac修复ab及siege安装
  • Meteor的表单提交:Form
  • 从tcpdump抓包看TCP/IP协议
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 反思总结然后整装待发
  • 批量截取pdf文件
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 我有几个粽子,和一个故事
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​如何使用QGIS制作三维建筑
  • ### RabbitMQ五种工作模式:
  • #大学#套接字
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)Nginx简介和安装教程
  • (14)Hive调优——合并小文件
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (6)设计一个TimeMap
  • (C语言)球球大作战
  • (pycharm)安装python库函数Matplotlib步骤
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十八)SpringBoot之发送QQ邮件
  • (五)c52学习之旅-静态数码管
  • (源码分析)springsecurity认证授权
  • (转)VC++中ondraw在什么时候调用的
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .gitignore不生效的解决方案
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端