2016-11-10 62 views
0

我正在使用scikit-learn的KNN回归器来将模型拟合到一个大型数据集中,其编号为n_neighbors = 100-500。考虑到数据的性质,一些部分(想象:峰值等尖锐的delta函数)更适合于较少的邻居(n_neighbors ~ 20-50),以便峰值不会被平滑掉。这些峰的位置是已知的(或可以测量)。在scikit-learn中改变n_neighbors KNN回归

有没有办法改变n_neighbors参数?

我可以安装两个模型并将它们缝合在一起,但效率不高。最好为n_neighbors规定2-3个值,或者更糟糕的是,发送n_neighbors列表。

回答

1

恐怕不是。部分原因是由于一些代数假设关系是对称的:A是B的邻居如果B是A的邻居。如果给出不同的值,则可以保证打破这种对称性。

我认为主要原因是简单的算法是简单的与固定数量的邻居,产生更好的结果一般。你有一个KNN不适合的具体情况。

我建议你缝合你的两个模型,切换依赖于估算的二阶导数。

+0

谢谢,我很害怕这种情况。我不知道对称假设,但它是有道理的。 – saud