w,让两类在这条线上分得更开。在仅使用 numpy/pandas 的前提下,手写实现 Flsher 线性判别分析 (Linear Dscrimlnant Analysis, LDA) 用于二分类;并对调试样本输出预测标签。
1.读取数据
train:二维列表;最后一列为标签 y∈[0,1],前m 列为数值待征,m≥1
test:二维列表;仅含特征,与训练集同维度
2.参数估计
设
类别均值 μc=Nc1∑vi=cXi
类内散度矩阵 SW=∑c=01∑vi=c(Xi−μc)(Xi−μc)T
为避免奇异,使用 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
输入
{"train":[[1,1,0],[1.1,1.2,0],[5,5,1],[5.2,5.1,1]],"test":[[1,1],[5,5]]}
输出
[0, 1]