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

从零构建线性分类模型:模型推理步骤咨询

你的线性分类预测思路完全正确!

对于你训练的{-1,1}二分类线性模型,只需要计算输入样本特征与模型参数的点积,根据结果的正负判断类别就可以了——这正是线性分类模型(比如感知机、支持向量机)的核心预测逻辑。

你的示例验证

我们用你给出的例子来确认:
输入样本(5维特征):

[1, 1, -1, -1, -1]

模型参数:

[7, 5, -2, 0, 3]

点积计算:

1*7 + 1*5 + (-1)*(-2) + (-1)*0 + (-1)*3 = 7+5+2+0-3=11

因为11>0,所以预测类别为1,和你的结论完全一致。

关于你的训练代码的补充说明

你的learn_reg_ERM函数实现了带正则化的经验风险最小化训练,这里有几个小细节可以帮你更顺畅地完成预测:

  • 确保你的loss函数是适配{-1,1}分类的损失(比如hinge损失,这是SVM的标准损失),如果用了平方损失,虽然预测逻辑依然成立,但模型的分类效果可能会打折扣。
  • 预测阶段可以直接用NumPy的sign函数简化代码:
    def predict(x, w):
        return np.sign(np.dot(x, w))
    
    这个函数会直接返回-1或1,完美匹配你的类别取值。
  • 你的正则项(reg函数)是用来防止模型过拟合的,这部分不影响预测逻辑,训练阶段正常使用即可。

你的训练代码格式化版

import numpy as np

def learn_reg_ERM(X,y,lbda):
    # define consts
    max_iter = 200
    e = 0.001
    alpha = 1.
    # init model
    w = np.random.randn(X.shape[1])
    g_old = None
    for k in np.arange(max_iter):
        # dot product/scalar product
        h = np.dot(X,w)
        # calculate loss and gradient of loss
        l,lg = loss(h, y)
        # print 'loss: {}'.format(np.mean(l))
        # calculate regularizers and gradient of regularizer at point w
        r,rg = reg(w, lbda)
        # calc loss + regularizer gradient
        g = np.dot(X.T,lg) + rg
        if (k > 0):
            # update alpha
            alpha = alpha * (np.dot(g_old.T,g_old))/(np.dot((g_old - g).T,g_old))
        w = w - alpha * g
        # check if minimum is found
        if (np.linalg.norm(alpha * g) < e):
            break
        g_old = g
    return w

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:07