本题要求仅使用 numpy 实现完整的二分类训练流程,模型为逻辑回归。
首先,使用训练集特征按列计算均值 μ 和标准差 σ,标准差使用 ddof=0。若某一列的 σ=0,则将其改为 1,避免除零。然后使用训练集得到的 μ 和 σ 对 train、val、test 做相同标准化。
模型使用逻辑回归:
小美正在处理一个二分类任务,她希望你帮她在仅依赖 numpy 的前提下,完整实现下面她设计的
“端到端”二分类训练流程,并对测试集输出预测标签。
所有细节都已确定;任何遗漏或自由发挥都会导致结果与评测不符。
i. 按列计算训练集均值 μ、标准差 σ(ddof = 0)
ii. 对 train / val / test 逐列标准化:x′=σx−μ(σ=0→σ=1)
逻辑回归:y^=σ(wTx+b),σ(z)=1+e−z1
损失:二元交叉熵 + L2 正则
优化器:Adam
初始学习率:0.01
β1/β2:0.9 / 0.999
ϵ:1e-8
批大小:16(最后不足 16 取剩余)
Warm-up:前 5 epochs,学习率线性从 0 → 0.01;第 6 epoch 起固定 0.01
i. 计算测试集概率 p
ii. 阈值 0.5 → 标签 1,否则 0
单行 JSON:
{
"train": [[f1, ..., fd, y], ...],//训练集
"val": [[f1, ..., fd, y], ...],//验证集
"test": [[f1, ..., fd], ...]//测试集
}
单行 JSON 数组输出,例如 [0, 1, 0]
np.random.seed(42) 后 np.random.permutation输入
{"train":[[-3,-3,0],[-2.5,-2.5,0],[-3.1,-2.9,0],[3,3,1],[2.7,3.2,1],[3.3,2.8,1]],"val":[[-2.8,-2.9,0],[3.1,2.9,1]],"test":[[-3,-3],[3,3]]}
输出
[0, 1]