我试图说明分类错误如何随着KNN中k值的增加而变化。从理论上讲,k值较低(由于欠拟合)和较高(由于过度拟合)值的误差很大,因此我们得到一些中间k的最小误差,因此图形稍微向上出现" U"成形。但是我得到的图是不断增加的,对于k的最低值(即1),误差最小。请提供这种行为的解释,或者我做错了什么。 这是代码片段和情节图像:
# creating odd list of K for KNN
from sklearn.model_selection import cross_val_score
myList = list(range(1,50))
# subsetting just the odd ones
neighbors = filter(lambda x: x % 2 != 0, myList)
# empty list that will hold cv scores
cv_scores = []
# perform 10-fold cross validation
for k in neighbors:
print(k)
knn = KNeighborsClassifier(n_neighbors=k)
scores = cross_val_score(knn, x_train, y_train, cv=10, scoring='accuracy')
print(scores)
cv_scores.append(scores.mean())
# changing to misclassification error
MSE = np.array([1 - x for x in cv_scores])
neighbors = list(filter(lambda x: x % 2 != 0, myList))
neighbors = np.array(neighbors)
# plot misclassification error vs k
plt.plot(neighbors, MSE)
plt.xlabel('Number of Neighbors K')
plt.ylabel('Misclassification Error')
plt.show()