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
相关产品推荐
相关产品推荐

