初始化: 用 train 的前 3 行作为质心 c0,c1,c2。
迭代(≤100轮):
请你实现 K−Means 聚类 (K=3) 并用训练好的质心为测试样本打上“簇标签”。
步骤
1.读取数据:train 为二维数值列表(无标签),test 同维度:所有元素整数或浮点数
2.初始化质心:取训练集的前 3 行作为初始质心 c0,c1,c2 (保持原序)
3.迭代更新:最多 100 轮;每轮 ① 计算训练样本到 3 个质心的欧氏距离;分配到最近质心 ② 重新计算各簇均值作为新质心;若某簇空,其质心保持不变 ③ 收敛条件:若 3 个质心中每个质心的每个坐标分量相比上一轮的变化量(绝对值)都小于 1e−6 ,则算法收敛。
4.质心排序与重映射:迭代结束后,将 3 个质心按第一维坐标升序排序(若相等再按第二维、依此类推),并将它们重新编号为标签 0、1、25 . 测试预测:用最终质心为 test 每行计算最近质心编号(重映射后的 0/1/2 );依次输出
标准输入仅 一行 JSON :
{
"train":[[f11,...,f1m],
...
[fn1,...,fnm]],
"test":[[t11,...,t1m],
...
[tk1,...,tkm]]
}
训练样本数 n≥3 ,特征维度 m≥1,测试样本数 k≥1 。
行与行之间无额外空白
标准输出仅一行——测试集中每个样本对应的簇标签 (0/1/2) 组成的 JSON 数组,例如: [0,1,2]
1.距离并列时,numpy.argmin 自带的“索引最小者优先”即可
2.排序后的质心重新编号为 0、1、2
3.精度判断阈值为 1e−6 ;不用额外随机种子
输入
{"train":[[0,0],[5,5],[10,0],[0,1],[6,6],[10,1]],"test":[[0.2,0.1],[5.5,5.2],[9,0]]}
输出
[0,1,2]