P3517.第2题-线性判别分析
题目内容
在仅使用 numpy/pandas 的前提下,手写实现 Flsher 线性判别分析 (Linear Dscrimlnant Analysis, LDA) 用于二分类;并对调试样本输出预测标签。
1.读取数据
-
train:二维列表;最后一列为标签 y∈[0,1],前m 列为数值待征,m≥1
-
test:二维列表;仅含特征,与训练集同维度
2.参数估计
设
为避免奇异,使用 SWreg=SW+10−6I
3.投影向量
W=(SWreg)−1(μ1−μ0)
4.分类准则
将样本投影到一维:z=WTX0
计算训练集中两类投影均值 m0,m1。
对任一样本 x ,预测规则固定为
yˊ={1,∣z−m1∣<∣z−m0∣}
yˊ={0,otherwise}
(即“谁更近选谁”,可消除 W 方向符号的不确定性。)
输入描述
标准输入仅 1 行 JSON ,示例
{
"train":[[1,1,0]],
[1.1,1.2,0],
[5,5,1],
[5.2,5.1,1]],
"test":[[1,1]],
[5,5]]
}
- 训练集 n≥4 ,列数 m≥1
- 所有数值为整数/浮点数,无空行
输出描述
仅输出一行:
[0,1]1
- 长度等于测试样本数
- 合法 JSON ,逗号后加空格
补充说明
1.正则项 10−6I 必须加入 SW 对角以避免奇异
2.为确保通过测试用例,仅使用 numpy/pandas
样例1
输入
{"train":[[1,1,0],[1.1,1.2,0],[5,5,1],[5.2,5.1,1]],"test":[[1,1],[5,5]]}
输出
[0, 1]