吴恩达机器学习第二周编程题Practice Lab Linear Regression

文章讲述了如何在线性回归中计算成本函数(costfunction)和梯度,包括对每个训练样例的预测误差、总成本的计算以及参数w和b的梯度更新过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接套用学习的公式进行计算即可。

Exercise 1

Complete the compute_cost below to:

  • Iterate over the training examples, and for each example, compute:

    • The prediction of the model for that example
      fwb(x(i))=wx(i)+b f_{wb}(x^{(i)}) = wx^{(i)} + b fwb(x(i))=wx(i)+b

    • The cost for that example cost(i)=(fwb−y(i))2cost^{(i)} = (f_{wb} - y^{(i)})^2cost(i)=(fwby(i))2

  • Return the total cost over all examples
    J(w,b)=12m∑i=0m−1cost(i)J(\mathbf{w},b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} cost^{(i)}J(w,b)=2m1i=0m1cost(i)

    • Here, mmm is the number of training examples and ∑\sum is the summation operator
代码:
def compute_cost(x, y, w, b): 
    """
    Computes the cost function for linear regression.
    
    Args:
        x (ndarray): Shape (m,) Input to the model (Population of cities) 
        y (ndarray): Shape (m,) Label (Actual profits for the cities)
        w, b (scalar): Parameters of the model
    
    Returns
        total_cost (float): The cost of using w,b as the parameters for linear regression
               to fit the data points in x and y
    """
    # number of training examples
    m = x.shape[0] 
    # You need to return this variable correctly
    total_cost = 0
    ### START CODE HERE ###
    for i in range(m):
        total_cost+=((b+w*x[i])-y[i])**2
    total_cost/=2*m
    return total_cost

Exercise 2

Please complete the compute_gradient function to:

  • Iterate over the training examples, and for each example, compute:

    • The prediction of the model for that example
      fwb(x(i))=wx(i)+b f_{wb}(x^{(i)}) = wx^{(i)} + b fwb(x(i))=wx(i)+b

    • The gradient for the parameters w,bw, bw,b from that example
      ∂J(w,b)∂b(i)=(fw,b(x(i))−y(i)) \frac{\partial J(w,b)}{\partial b}^{(i)} = (f_{w,b}(x^{(i)}) - y^{(i)}) bJ(w,b)(i)=(fw,b(x(i))y(i))
      ∂J(w,b)∂w(i)=(fw,b(x(i))−y(i))x(i) \frac{\partial J(w,b)}{\partial w}^{(i)} = (f_{w,b}(x^{(i)}) -y^{(i)})x^{(i)} wJ(w,b)(i)=(fw,b(x(i))y(i))x(i)

  • Return the total gradient update from all the examples
    ∂J(w,b)∂b=1m∑i=0m−1∂J(w,b)∂b(i) \frac{\partial J(w,b)}{\partial b} = \frac{1}{m} \sum\limits_{i = 0}^{m-1} \frac{\partial J(w,b)}{\partial b}^{(i)} bJ(w,b)=m1i=0m1bJ(w,b)(i)

    ∂J(w,b)∂w=1m∑i=0m−1∂J(w,b)∂w(i) \frac{\partial J(w,b)}{\partial w} = \frac{1}{m} \sum\limits_{i = 0}^{m-1} \frac{\partial J(w,b)}{\partial w}^{(i)} wJ(w,b)=m1i=0m1wJ(w,b)(i)

    • Here, mmm is the number of training examples and ∑\sum is the summation operator
 代码:
 def compute_gradient(x, y, w, b): 
    """
    Computes the gradient for linear regression 
    Args:
      x (ndarray): Shape (m,) Input to the model (Population of cities) 
      y (ndarray): Shape (m,) Label (Actual profits for the cities)
      w, b (scalar): Parameters of the model  
    Returns
      dj_dw (scalar): The gradient of the cost w.r.t. the parameters w
      dj_db (scalar): The gradient of the cost w.r.t. the parameter b     
     """
    
    # Number of training examples
    m = x.shape[0]
    
    # You need to return the following variables correctly
    dj_dw = 0
    dj_db = 0
    
    ### START CODE HERE ###
    for i in range(m):
        dj_db+=(w*x[i]+b)-y[i]
        dj_dw+=((w*x[i]+b)-y[i])*x[i]
    dj_dw=dj_dw/m
    dj_db=dj_db/m
    ### END CODE HERE ###  
    return dj_dw, dj_db
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Magic171

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值