You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

逻辑回归代价函数实现报错,请求排查函数正确性问题

逻辑回归代价函数的错误分析与修正

代码中的核心错误

  • 循环缩进错误:外层for i in range(m):仅执行了z_wb = 0,后续的特征遍历、z值计算、损失计算都不在样本循环范围内,导致代码只会处理最后一个样本,而非全部m个样本。
  • 偏置b重复累加:在每个特征j的循环内都执行z_wb += b,正确逻辑是所有特征加权求和完成后,仅添加一次偏置b。
  • 代价计算位置错误:total_cost = (1/m)*loss_sum被放在内层循环中,每次特征遍历都会重复计算平均代价,正确位置应该是所有样本损失累加完成后再计算平均。

修正后的代码

def compute_cost(X, y, w, b, lambda_= 1):
    """
    计算所有样本的代价
    参数:
      X : (ndarray 形状 (m,n)) 数据,m个样本,n个特征
      y : (array_like 形状 (m,)) 目标值
      w : (array_like 形状 (n,)) 模型的参数值
      b : 标量,模型的偏置参数值
      lambda_: 未使用的占位符
    返回:
      total_cost: (标量) 代价
    """

    m, n = X.shape
    loss_sum = 0
    
    for i in range(m): 
        z_wb = 0 
        # 遍历所有特征计算加权和
        for j in range(n): 
            z_wb += w[j] * X[i][j] 
        # 仅添加一次偏置项
        z_wb += b 
        f_wb = sigmoid(z_wb)
        # 计算单个样本的损失
        loss = -y[i] * np.log(f_wb) - (1 - y[i]) * np.log(1 - f_wb) 
        loss_sum += loss 
    # 计算所有样本的平均代价
    total_cost = (1/m) * loss_sum
    
    return total_cost

内容的提问来源于stack exchange,提问作者Benjamin Gardner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:51:20