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

逻辑回归决策边界绘制异常问题求助及原因咨询

问题分析与解决

嘿,我来帮你搞清楚这个决策边界的问题~

首先,核心问题出在你对逻辑回归决策边界的方程推导,和代码里特征与权重的对应关系搞混了,咱们一步步拆解:

1. 先理清楚你的特征和权重对应关系

看你的代码里构造输入特征的部分:

Xs = np.hstack((X, np.ones((n*2,1)))) # (200, 3)

这里的Xs每一行是 [x₁, x₂, 1],其中:

  • x₁ 是第一个特征(对应图上的x轴)
  • x₂ 是第二个特征(对应图上的y轴)
  • 最后一列的1是偏置项,用来拟合截距

而你的权重矩阵w是(3,1)的维度,对应:

  • w[0] → x₁的权重
  • w[1] → x₂的权重
  • w[2] → 偏置项(截距)

2. 逻辑回归决策边界的正确推导

逻辑回归的决策边界是模型输出概率为0.5的点,此时线性组合部分等于0:

w₀*x₁ + w₁*x₂ + w₂ = 0

我们需要把这个方程转换成x₂ = f(x₁)的形式(因为图上x轴是x₁,y轴是x₂),解这个方程:

w₁*x₂ = -w₀*x₁ - w₂
x₂ = (-w₀*x₁ - w₂) / w₁

对应到代码里就是:

y = (-(w[0].item()*x + w[2])/w[1]).T

这正是你调整后能正常工作的公式!

3. 为什么原始公式不对?

你最初写的公式是:

y = (-(w[0]+w[1].item()*x)/w[2]).T

这个式子相当于你把方程写成了:

w₁*x₁ + w₀ + w₂*x₂ = 0

完全颠倒了权重和特征的对应关系:把w[1]当成了x₁的权重,把w[2]当成了x₂的权重,还把w[0]当成了偏置项,自然画出来的边界完全不符合预期。

补充:为什么损失收敛但边界不对?

损失函数收敛说明你的模型训练过程是对的,权重w已经学到了正确的参数,但绘制边界时代入的方程错误,和模型本身无关——就像你算对了数学题的答案,但写在答题卡上的位置错了,结果当然不对。

小建议

以后可以给变量加更清晰的注释,或者把偏置项单独处理,比如:

# 明确拆分权重和偏置
w_weights = w[:2]
b = w[2]
# 然后推导决策边界
y = (-(b + w_weights[0].item()*x)/w_weights[1]).T

这样能减少混淆的概率~

内容的提问来源于stack exchange,提问作者Marcel Braasch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:17:48