You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于L1曼哈顿距离实现KNN分类预测的可行方法咨询

核心结论

完全可以基于曼哈顿(L1)距离完成KNN分类全流程预测,你之前的实现无效是两类典型的API使用误区,不需要推翻原本能正常运行的L2版KNN框架,仅调整分类器初始化的距离参数即可落地。

此前代码的问题定位
  • 混淆了两类最近邻相关类别的适用场景:NearestNeighbors是无监督的邻域检索工具,仅能完成样本近邻索引、距离计算的查询能力,不内置分类投票、标签预测逻辑,本身就没有对外提供predict()接口,天然不适合直接用于分类建模。
  • 距离参数的传值方式适配错了场景:手动实例化DistanceMetric对象传入metric参数的写法,仅适配NearestNeighbors的邻域查询场景;用于分类的KNeighborsClassifier内置了全量常用距离度量的支持,根本不需要手动实例化距离对象。
正确实现代码

直接沿用原本跑通的KNeighborsClassifier框架,初始化时通过metric参数指定使用曼哈顿距离即可,全流程和原L2版本完全对齐,不需要额外引入NearestNeighbors、DistanceMetric模块:

def L1(trainx, trainy, testx):
    from sklearn.neighbors import KNeighborsClassifier
    # 初始化1近邻分类器,指定使用曼哈顿距离
    knn = KNeighborsClassifier(n_neighbors=1, metric='manhattan')
    # 拟合训练集
    knn.fit(trainx, trainy)
    # 输出测试集预测结果
    y_pred = knn.predict(testx)
    return y_pred

补充说明:KNeighborsClassifier默认使用闵可夫斯基距离,p值取2时就是原代码用到的L2欧氏距离,p值取1时等价于曼哈顿距离;直接传metric='manhattan'的写法,和手动设置p=1的计算效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 18:06:08