k-NN算法最简单的版本是只考虑一个最近邻,也就是想要预测的数据点最近的训练数据点,预测结果就是这个训练数据点的已知输出。
除了仅考虑最近邻,还可以考虑任意(k个)邻居,这也是k近邻算法名字的由来。在考虑多余一个邻居的情况时,用‘投票法’来制定标签,也就是对于每个测试点,计算多少个邻居属于类别0、多少个属于类别1,然后将次数更多的类别作为预测结果。
import mglearn.datasets
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifierX,y=mglearn.datasets.make_forge()
iris_dataset=load_iris()
X_train,X_test,y_train,y_test=train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0
)
clf=KNeighborsClassifier(n_neighbors=1)
clf.fit(X_train,y_train)
print('Test score:{:.2f}'.format(clf.score(X_test,y_test)))