You need to enable JavaScript to run this app. sklearn K近邻(K-Nearest Neighbours)代码报X未定义错误,X指代什么?
优惠活动
大模型
产品
解决方案
定价
更多

sklearn K近邻(K-Nearest Neighbours)代码报X未定义错误,X指代什么?

代码报错原因与解答

你的认知完全正确。

  • scikit-learn 所有估计器(包括本次用到的NearestNeighbors)都遵循统一的接口规范:fit()方法接收的第一个参数X,定义就是训练用的特征矩阵,要求格式为形状是[样本总数, 特征数]的二维数组,每行对应一个已知样本,每列对应样本的一个特征维度。
  • 你这段代码触发报错的原因是:代码里实际存储已知基准样本的变量名是A,写fit()的时候直接沿用了sklearn官方示例里对训练集的通用命名X,没有替换成你自己定义的实际变量,因此系统提示“X未定义”。

X的取值说明

你需要传入的X,就是代码中已经构造好的、存储了所有基准样本坐标的NumPy数组A,它的结构完全符合sklearn对特征矩阵X的格式要求。
如果觉得逐处替换变量名麻烦,你也可以直接把原来定义A = np.array([...])这行的变量名改成X,和官方示例的命名习惯保持一致,代码就能正常运行。
需要额外注意的是:除了fit(X)这一处需要修正,后面绘图代码里的plt.scatter(A[:, 0], X[:, 1], marker = 'o', s = 100, color = 'k') 这一行的X也必须同步替换为A(如果你把原变量A改名为X,就把这行的A改成X),否则修正fit处的报错后,运行到绘图环节依然会触发X未定义的错误。


内容的提问来源于stack exchange,提问作者Hari5000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 19:15:03