loops - 尝试实现一个嵌套循环来测试 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))