解题思路
按题面规定的随机顺序构造 T 个最近质心分类器,再多数投票。随机过程必须用 np.random.RandomState(seed),先 randint 再 choice,否则特征下标和抽袋下标会对不上评测。
- 拆开训练集:前 d 列是特征,最后一列是标签。全体类别取训练集中出现过的标签,按编号排序。
- 第 t 个分类器:idx=rg.randint(0,n,size=n),feat=rg.choice(d,size=m,replace=False),再把 feat 升序排列并记入输出。
- 对每个类别,若该袋里出现过,质心用袋内均值;若一次都没抽到,改用全训练集在同一特征子集上的均值。
- 测试点用平方欧氏距离找最近质心,距离并列取更小标签。
- T 个分类器对每个测试点投票,票数并列同样取更小标签。