2016-11-10 40 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