吴恩达机器学习-可选实验室:逻辑回归的成本函数(Cost Funtion for Logistic Regression)

目标

在本实验中,你将:检查执行情况并利用成本函数进行逻辑回归。

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

数据集

让我们从决策边界实验室中使用的相同数据集开始。

X_train = np.array([[0.5, 1.5], [1,1], [1.5, 0.5], [3, 0.5], [2, 2], [1, 2.5]])  #(m,n)
y_train = np.array([0, 0, 0, 1, 1, 1])                                           #(m,)

我们将使用一个辅助函数来绘制这些数据。标签y = 1的数据点显示为红色标记为y = 0的数据点用蓝色圆圈表示。
在这里插入图片描述

成本函数

在之前的实验中,你开发了逻辑损失函数。回想一下,loss被定义为应用于一个示例。在这里,您将损失组合起来形成成本,其中包括所有示例。
回想一下,对于逻辑回归,成本函数是这样的形式在这里插入图片描述

代码描述

compute_cost_logistic循环的算法遍历所有示例,计算每个示例求和的损失。注意变量X和y不是标量值,而是形状分别为(m, n)和(m,)的矩阵,其中n是特征的数量,m是训练样例的数量。

def compute_cost_logistic(X, y, w, b):
    """
    Computes cost

    Args:
      X (ndarray (m,n)): Data, m examples with n features
      y (ndarray (m,)) : target values
      w (ndarray (n,)) : model parameters  
      b (scalar)       : model parameter
      
    Returns:
      cost (scalar): cost
    """

    m = X.shape[0]
    cost = 0.0
    for i in range(m):
        z_i = np.dot(X[i],w) + b
        f_wb_i = sigmoid(z_i)
        cost +=  -y[i]*np.log(f_wb_i) - (1-y[i])*np.log(1-f_wb_i)
             
    cost = cost / m
    return cost

使用下面的单元格检查成本函数的实现。

w_tmp = np.array([1,1])
b_tmp = -3
print(compute_cost_logistic(X_train, y_train, w_tmp, b_tmp))

在这里插入图片描述

例子

现在,让我们看看对于不同的w值,代价函数的输出是什么。

  • 在之前的实验中,您绘制了b = -3, w0 = 1, w1 = 1的决策边界。也就是说,w= np.array([- 3,1,1])。

  • 假设你想知道b = -4, w0 = 1, w1 = 1,或者w = np.Array([- 4,1,1])提供了一个更好的模型。

让我们首先绘制这两个不同b值的决策边界,看看哪一个更适合数据。

  • 对于b=-3, w0 =1, w1=1,我们画出-3+xo +x=0(用蓝色表示)
  • 对于b=-4, w0=1,w1=1,我们画出-4+xo+x=0(用洋红色表示)
import matplotlib.pyplot as plt

# Choose values between 0 and 6
x0 = np.arange(0,6)

# Plot the two decision boundaries
x1 = 3 - x0
x1_other = 4 - x0

fig,ax = plt.subplots(1, 1, figsize=(4,4))
# Plot the decision boundary
ax.plot(x0,x1, c=dlc["dlblue"], label="$b$=-3")
ax.plot(x0,x1_other, c=dlc["dlmagenta"], label="$b$=-4")
ax.axis([0, 4, 0, 4])

# Plot the original data
plot_data(X_train,y_train,ax)
ax.axis([0, 4, 0, 4])
ax.set_ylabel('$x_1$', fontsize=12)
ax.set_xlabel('$x_0$', fontsize=12)
plt.legend(loc="upper right")
plt.title("Decision Boundary")
plt.show()

在这里插入图片描述
你可以从这张图中看到。对于训练数据,Array([- 4,1,1])是一个较差的模型。让我们看看成本函数的实现是否反映了这一点

w_array1 = np.array([1,1])
b_1 = -3
w_array2 = np.array([1,1])
b_2 = -4

print("Cost for b = -3 : ", compute_cost_logistic(X_train, y_train, w_array1, b_1))
print("Cost for b = -4 : ", compute_cost_logistic(X_train, y_train, w_array2, b_2))

在这里插入图片描述
您可以看到成本函数的行为与预期一致,并且成本w = np.array([- 4,1,1])确实比w=np.array[-3,1,1]的代价高

恭喜

在本实验中,您检查并使用了逻辑回归的成本函数。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,吴恩达机器学习课程中对逻辑回归进行了实验。逻辑回归是一种用于预测二分类问题的机器学习算法。在这个实验中,假设你是一个大学部门的管理员,想根据申请人在两次考试中的成绩来确定他们的入学机会。你可以使用以前申请人的历史数据作为逻辑回归的训练集。对于每个训练样本,你都有申请人在两门考试中的成绩和录取决定。通过建立一个逻辑回归模型,你可以根据申请人的考试成绩来预测他们是否会被大学录取。这个实验的目的是通过训练样本来构建一个逻辑回归模型,用以预测学生是否被录取。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [吴恩达机器学习--逻辑回归](https://blog.csdn.net/m0_68111267/article/details/129910241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [吴恩达机器学习课后作业Python实现(二):逻辑回归](https://blog.csdn.net/weixin_50345615/article/details/125984757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值