如何修改KNN代码以打印对应最高准确率的k值而非全部得分
KNN最优k值输出修改方案
你可以通过匹配准确率最大值的索引对应到k值即可,修改后的代码如下:
k_range = range(1, 26) scores = [] for k in k_range: knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) scores.append(metrics.accuracy_score(y_test, y_pred)) # 新增部分:定位最优k值 max_accuracy = max(scores) # 取第一个出现最高准确率的k值 best_k = k_range[scores.index(max_accuracy)] print(f"最高准确率:{max_accuracy:.4f},对应最优k值:{best_k}")
以上代码会返回首次达到最高准确率的k值,如果存在多个k对应相同最高准确率的场景,可使用以下代码输出所有符合条件的k:
max_accuracy = max(scores) all_best_k = [k for k, acc in zip(k_range, scores) if acc == max_accuracy] print(f"最高准确率:{max_accuracy:.4f},所有对应最优k值:{all_best_k}")
内容的提问来源于stack exchange,提问作者wellsinsideout
相关产品推荐
相关产品推荐

