按照题意一步一步实现即可。
数据读取与转换
train 和测试集 test。numpy 数组方便后续矩阵运算。在许多数据简化的场景中,我们希望用一个一维直线尽可能保留高维数据的信息:先将数据点投影到该直线上得到一个标量,再从标量重建出近似点,并评估重建的质量。现在给定一组参考样本和一组待评估样本,你需要通过以下步骤求出一个最优投影方向,并计算每个待评估样本的重建均方误差。\n\n1. 计算参考样本(训练集)的均值向量 μ。\n2. 将参考样本去均值,得到中心化矩阵 X~=Xtrain−μ。\n3. 构造矩阵 C=n1X~⊤X~,其中 n 为参考样本的个数。\n4. 求出 C 的所有特征值与特征向量,并选取最大特征值对应的特征向量,记为 v。\n 为使方向唯一,检查 v 的首个非零分量(忽略绝对值小于 10−12 的微小分量):若该分量为负,则将 v 整体乘以 −1。\n5. 对每个待评估样本 x,计算其投影值 z=(x−μ)⊤v,然后通过 x^=μ+zv 得到重建向量。\n6. 计算该样本的均方误差 MSE(x)=m1∑j=1m(xj−x^j)2,其中 m 为特征维度。\n7. 将所有待评估样本的均方误差保留两位小数(四舍五入),并以字符串形式存入一个 JSON 数组。\n\n约束条件:\n- 参考样本数量 n≥2,每个样本的特征维度 m≥2。\n- 待评估样本数量任意,但每个样本的特征维度必须与参考样本一致。\n- 所有特征值均为实数。
标准输入仅包含一行,为一个 JSON 对象。该对象包含两个键:\n- "train":一个二维数组,表示参考样本集,每一行是一个 m 维实数特征向量,样本数 n≥2。\n- "test":一个二维数组,表示待评估样本集,每一行是一个 m 维实数特征向量,条数任意但维度与参考样本相同。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册