吴恩达机器学习-可选实验室:逻辑回归(Logistic Regression))

在这个不评分的实验中,你会探索sigmoid函数(也称为逻辑函数)探索逻辑回归;哪个用到了sigmoid函数

python 复制代码
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函数

正如在讲座视频中所讨论的,对于分类任务,我们可以从线性函数开始回归模型fw,b(x0) = w·x +b,在给定x的情况下预测y。然而,我们希望我们的分类模型的预测在0到1之间,因为我们的输出变量y是0或1。这可以通过使用"sigmoid函数"来实现,该函数将所有输入值映射到0到1之间的值。我们来实现sigmoid函数,自己看看。

Sigmoid函数的公式

sigmoid函数的公式如下

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

在逻辑回归的情况下,z (sigmoid函数的输入)是线性回归模型的输出。

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

NumPy有一个名为exp()的函数,它提供了一种方便的方法来计算指数(e^z)输入数组(z)中所有元素的值。

它还可以使用单个数字作为输入,如下所示。

python 复制代码
# 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)

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

python 复制代码
def sigmoid(z):
    """
    Compute the sigmoid of z

    Args:
        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值这个函数的输出是什么

python 复制代码
# 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,右列中的值是sigmoid (z)。可以看到,sigmoid的输入值范围从-10到10,输出值范围从0到1.现在,让我们尝试使用matplotlib库绘制这个函数。

python 复制代码
# 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趋于负值时,sigmoid函数趋于0,当z趋于正值时,sigmoid函数趋于1。

逻辑回归

让我们将逻辑回归应用到肿瘤分类的分类数据示例中。首先,加载示例和参数的初始值。

python 复制代码
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'或w.x +b。它与线性回归模型中的直线不匹配。通过应用阈值进一步改进这些结果。
  • 勾选"切换0.5阈值"上的复选框,以显示应用阈值时的预测结果。
  • 这些预测看起来不错。预测与数据相符
  • 现在,在大肿瘤大小范围内(接近10)添加进一步的数据点,并重新运行线性回归。
  • 与线性回归模型不同,该模型持续做出正确的预测

(1)

(2)

(3)

恭喜

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

相关推荐
九年义务漏网鲨鱼2 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间2 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享3 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾3 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码3 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5893 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien3 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松4 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能
heart000_14 小时前
128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
人工智能·自然语言处理·pdf
敲键盘的小夜猫4 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain