【发布时间】:2018-08-01 12:47:24
【问题描述】:
只是想知道是否有人知道 sklearn 中 KNN 回归的内核是什么。我想使用高斯内核,但我不确定 KNN 回归器中的内核是否是高斯的,对此主题的任何帮助将不胜感激。
【问题讨论】:
标签: python scikit-learn regression
只是想知道是否有人知道 sklearn 中 KNN 回归的内核是什么。我想使用高斯内核,但我不确定 KNN 回归器中的内核是否是高斯的,对此主题的任何帮助将不胜感激。
【问题讨论】:
标签: python scikit-learn regression
我假设您在这里谈论的是sklearn.neighbors.KNeighborsRegressor。
有点不清楚你所说的“内核”是什么意思,但假设你在谈论 k 个邻居是如何加权的:
weights='uniform')weights='distance' 来设置它,以便在取平均值时根据邻居的距离的倒数对其进行加权。虽然默认情况下未实现高斯内核,但 KNR 还支持决定权重的任意函数。你可以这样定义:
def kernel(distances):
# distances is an array of size K containing distances of neighbours
weights = gaussian(distances) # Compute an array of weights however you want
return distances
然后将其传递给您的 KNR,并使用 weights=kernel 进行初始化。我建议阅读 sklearn 文档以获取更多信息。
【讨论】:
weights = exp(-distances)^2 / sigma。我不确定你的公式是否正确(但这是一个编程论坛而不是数学理论论坛)。