我没有得到" U"错误的形状图与kn

时间:2018-06-15 11:53:52

标签: python-3.x machine-learning

我试图说明分类错误如何随着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()

This is the following plot I got

0 个答案:

没有答案