
监督学习
|
35
ax.set_title(
"{} neighbor(s)\n train score: {:.2f} test score: {:.2f}".format(
n_neighbors, reg.score(X_train, y_train),
reg.score(X_test, y_test)))
ax.set_xlabel("Feature")
ax.set_ylabel("Target")
axes[0].legend(["Model predictions", "Training data/target",
"Test data/target"], loc="best")
图 2-10:不同
n_neighbors
值的 k 近邻回归的预测结果对比
从图中可以看出,仅使用单一邻居,训练集中的每个点都对预测结果有显著影响,预测结
果的图像经过所有数据点。这导致预测结果非常不稳定。考虑更多的邻居之后,预测结果
变得更加平滑,但对训练数据的拟合也不好。
5.
优点
、
缺点和参数
一般来说,KNeighbors 分类器有
2
个重要参数:邻居个数与数据点之间距离的度量方法。
在实践中,使用较小的邻居个数(比如
3
个或
5
个)往往可以得到比较好的结果,但你应
该调节这个参数。选择合适的距离度量方法超出了本书的范围。默认使用欧式距离,它在
许多情况下的效果都很好。
k-NN
的优点之一就是模型很容易理解,通常不需要过多调节就可以得到不错的性能。在
考虑使用更高级的技术之前,尝试此算法是一种很好的基准方法。构建最近邻模型的速度 ...