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

