首页 文章

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

提问于
浏览
0

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

有没有办法改变 n_neighbors 参数?

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

1 回答

  • 1

    恐怕不是 . 在某种程度上,这是由于一些代数假设,即关系是对称的:A是B的邻居,如果B是A的邻居 . 如果给出不同的 k 值,则可以保证打破这种对称性 .

    我认为主要原因很简单,算法更简单,具有固定数量的邻居,总体上会产生更好的结果 . 你有一个特定的案例,KNN不太适合 .

    我建议你将两个模型拼接在一起,根据推算的二阶导数进行切换 .

相关问题