P3389.第2题-高斯朴素贝叶斯
题目内容
请你在仅使用 numpy/pandas 的前提下,手写实现高斯朴素贝叶斯(Gaussian Naive Bayes,GNB),并对给定测试样本输出类别预测。具体流程:
1.读取数据
-
train 字段:二维列表,每行最后一列为类别标签 y∈ {0,1},其余为数值特征
-
test 字段:二维列表,仅包含与训练集同维度的特征
2.参数估计
3.预测
- 使用对数后验:
log P(c∣x)=log πc +∑j[−21log(2πσcj2)-2σcj2(xj−μcj)2]
- 取 arg maxc log P(c∣x) 作为预测标签
4.结果输出
- 预测值保留整数 0/1,以 JSON 数组形式一次性输出,顺序与输入 test 保持一致
输入描述
标准输入为 一行 JSON。
输出描述
标准输出仅含一行:即测试集中每个样本的预测标签(整数),使用单行 JSON数组表示。
补充说明
1.流程无需随机数;若实现中使用随机过程,必须固定为 np.random.seed(42)。
2.为确保通过全部测试用例,请使用仅 Numpy 与 Pandas 库实现本题。
3.计算方差使用总体力差 (np,var( ...doof=0))。
4.方差为 0 的特征设为 1e−9 防止除零。
样例1
输入
{"train": [[1,1,0],[1,1,0],[4,4,1],[4,2,1]], "test": [[1,1],[4,4]]}
输出
[0,1]