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

KNN算法肘部法实现报错:ValueError问题求助

KNN肘部法错误率计算报错的解决方案

报错原因及修复方法

  • 维度不匹配:knn.predict(X_test)返回一维数组(如(300,)),若y_test是二维结构(比如DataFrame或形状为(300,1)的数组),两者比较会触发维度错误。
    修复代码:

    error_rate = []
    for i in range(1,40):    
        knn = KNeighborsClassifier(n_neighbors=i)
        knn.fit(X_train,y_train)
        pred_i = knn.predict(X_test)
        # 将y_test转为一维数组
        error_rate.append(np.mean(pred_i != y_test.values.ravel()))
    
  • 索引对齐问题:若y_test是带自定义索引的pandas Series,与无索引的pred_i数组比较时,会因索引无法对齐产生异常。
    修复代码:

    error_rate = []
    for i in range(1,40):    
        knn = KNeighborsClassifier(n_neighbors=i)
        knn.fit(X_train,y_train)
        pred_i = knn.predict(X_test)
        # 直接使用Series的数值部分进行比较
        error_rate.append(np.mean(pred_i != y_test.values))
    
  • 先验证维度一致性:可以先打印两者形状确认匹配:

    print("预测结果形状:", pred_i.shape)
    print("测试标签形状:", y_test.shape)
    

    若输出为(300,)和(300,1),必须将y_test转为一维后再比较。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:15:16