我是ML的新手,我不明白为什么对KNN使用随机排列。我指的是k最近邻居分类器部分中的http://www.scipy-lectures.org/advanced/scikit-learn/。提供了以下代码:
>>> perm = np.random.permutation(iris.target.size)
>>> iris.data = iris.data[perm]
>>> iris.target = iris.target[perm]
>>> knn.fit(iris.data[:100], iris.target[:100])
KNeighborsClassifier(...)
>>> knn.score(iris.data[100:], iris.target[100:])
0.95999...
并提出了以下问题:
Bonus question: why did we use a random permutation?
有人可以帮助解释为什么排列会影响结果吗?
最佳答案
虹膜默认情况下是经过排序的,前50个实例来自类1,下一个类2和最后一个类3。因此,它们将仅在类1和2上进行训练,并尝试预测类3的标签(如果它们不会置换)。通常,从排列数据开始是一个好习惯,因为由于数据集创建者采用的方法,它们总是可能涉及某种结构。
关于machine-learning - 为什么在knn分类器中使用置换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34030946/