给定一批训练样本与若干测试样本,请你手写实现主成分分析 (PCA) 并仅保留第一主成分来压缩-重建数据,最后输出每个测试样本在重建后的均方误差 (MSE)。 1. 输入读取 • train - 二维列表,每行是一个 m 维数值特征向量 • test - 二维列表,维度同上 2. 去均值 (mean-center) \boldsymbol\mu=\text{mean}(X_\text{train})" 3. 协方差矩阵 (总体方差,ddof=0) 4. 求第一主成分 • 用 numpy.linalg.eigh 得到全部特征对 • 按特征值从大到小选取第一主成分 • 方向标准化规则 —— 若 首个非零分量为负,则整体乘以 -1;这样方向唯一 5. 投影-重建 \hat x = \boldsymbol\mu + z\,\mathbf{v}{\max}" 6. 输出 • 对每个测试样本计算 • 结果保留两位小数,使用字符串形式 • 所有测试样本的误差按输入顺序组成 JSON 数组一行输出
输入描述:
标准输入仅一行,为如下 JSON 对象:{ "train": [[...], [...], ...], "test": [[...], [...], ...]}其中 • train 长度 ,每行长度 • test 任意条数,维度同 train • 所有值为整数或浮点数,无额外空行
输出描述:
标准输出仅一行 —— 测试集中 每个样本 MSE 的字符串形式(两位小数),用 JSON 数组包裹。
示例1
输入
{"train": [[0,0],[0,1],[1,0],[1,1]], "test": [[0.5,0.5],[1.5,1.5]]}
备注:
1. 算法不含随机过程(无需设置随机种子)。2. 为了确保通过所有测试用例,仅允许使用Numpy库与Pandas库实现本题。3. 使用总体方差 np.var(x, ddof=0).
加载中...