gpt4 book ai didi

Python sklearn : why are my neighbors. KNeighborsRegressor 预测 "perfect"?

转载 作者:行者123 更新时间:2023-11-30 09:33:03 27 4
gpt4 key购买 nike

我正在运行以下代码:

from sklearn import neighbors
import numpy as np
import pandas as pd
X = pd.DataFrame(np.random.randn(50, 4), columns=list('ABCD'))
y = pd.DataFrame(np.random.randn(50, 1), columns=list('T'))
KNN_ = neighbors.KNeighborsRegressor(n_neighbors=20, weights='distance').fit(X, y)
yhat = KNN_.predict(X)
error = yhat-y
print(error)

为什么所有错误都为零?据我了解,误差应该捕获拟合/预测值与我的数据点之间的差异?

我已经对其他估计器(例如随机森林回归器)应用了基本相同的过程,并且错误按预期非零,所以我担心我在代码中遗漏了一个微妙之处?

最佳答案

这是因为您正在同一数据集上进行训练和测试。您在以下行中使用 X 进行训练

KNN_ = neighbors.KNeighborsRegressor(n_neighbors=20, weights='distance').fit(X, y)

然后根据相同的值进行预测

yhat = KNN_.predict(X)

您需要将数据集分解为训练和测试,例如 tran_X 和 test_X。然后在 train_X 上进行训练并使用 test_X 进行预测。

更新如果您阅读 documentation of KNN它说的是

The target is predicted by local interpolation of the targets associated of the nearest neighbors in the training set.

所以基本上,当您提供新的预测目标时,它会在本地插入训练集。由于这些值完全相同,因此它返回确切的数据行和标签。我的观点是,误差的差异与 KNN 内部的实际工作方式有关。我的猜测是,由于随机森林是一种防止过度拟合的决策树集合,因此误差范围不为零(这就是防止过度拟合的全部意义)。您需要了解这些算法的内部工作原理才能了解这一点。您可以看一下thisthis了解为什么预测完全相同。

关于Python sklearn : why are my neighbors. KNeighborsRegressor 预测 "perfect"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com