在scikit中改变n_neighbors - 学习KNN回归

时间:2016-11-10 18:45:06

标签: python scikit-learn regression knn

我正在使用scikit-learn的KNN回归器将模型拟合到n_neighbors = 100-500的大型数据集。鉴于数据的性质,一些部分(认为:像峰值这样的尖锐三角函数)更适合较少的邻居(n_neighbors ~ 20-50),因此峰值不会被平滑。这些峰的位置是已知的(或可以测量)。

有没有办法改变n_neighbors参数?

我可以装入两个模型并将它们拼接在一起,但这样效率会很低。最好为n_neighbors规定2-3个值,或者更糟糕的是,发送n_neighbors列表。

1 个答案:

答案 0 :(得分:1)

我不敢。在某种程度上,这是由于一些代数假设,即关系是对称的:A是B的邻居,如果B是A的邻居。如果你给出不同的 k 值,你就得到了保证打破这种对称性。

我认为主要原因很简单,算法对于固定数量的邻居来说更简单,通常产生更好的结果。你有一个特定的案例,KNN并不适合。

我建议你将两个模型拼接在一起,切换取决于推算的二阶导数。