首页 > 解决方案 > 尝试实现一个嵌套循环来测试 Iris Data 上 KNN 的多个 K 值

问题描述

我试图弄清楚如何以以下代码为基础来遍历 k 值 1、3、5、7、10、20、30、40 和 50。它目前已经是一个循环,因为我正在对数据进行 10 次测试,将其存储在一个列表中,然后计算平均值,以便我可以评估每个 k 级别的准确性。

我在想可能是一个嵌套循环,但我似乎无法将头绕在哪里或如何。

为了完成所有 k 级别,我使用下面的代码块重复 9 次(所以它是一大段代码)但我知道必须有一种更优雅的方式来做到这一点,以便它全部在一个块内运行9 k 值,仍然编译每个 k 值的 10 个准确度结果、平均准确度和预测结果。简直超出了我的水平...

#k value of 1
    a_range = range(0,10)
    scores_list = []
    right_wrong = []
    for a in a_range:
        knn = KNeighborsClassifier(n_neighbors=1)
        knn.fit(x_train, y_train.ravel()) 
        y_pred=knn.predict(x_test)
        scores_list.append(metrics.accuracy_score(y_test,y_pred))
    mscore_list = []
    mscore_list.append(statistics.mean(scores_list))
    mright_wrong.append(np.count_nonzero(y_test == np.atleast_2d(y_pred).T))

标签: loopsknn

解决方案


推荐阅读