2016-11-10 3 views
0

Ich benutze den KNN-Regressor von scikit-learn, um ein Modell an einen großen Datensatz mit n_neighbors = 100-500 anzupassen. Angesichts der Art der Daten sind einige Teile (denken Sie: scharfe Delta-Funktion wie Peaks) besser mit weniger Nachbarn (n_neighbors ~ 20-50), so dass die Peaks nicht geglättet werden. Die Position dieser Peaks ist bekannt (oder kann gemessen werden).Variierende n_neighbors in scikit-learn KNN Regression

Gibt es eine Möglichkeit, den Parameter n_neighbors zu variieren?

Ich könnte zwei Modelle passen und sie zusammenheften, aber das wäre ineffizient. Es wäre vorzuziehen, entweder 2-3 Werte für n_neighbors vorzuschreiben oder, schlimmer noch, eine Liste von n_neighbors zu senden.

Antwort

1

Ich fürchte nicht. Dies ist teilweise auf einige algebraische Annahmen zurückzuführen, dass die Beziehung symmetrisch ist: A ist ein Nachbar von B, wenn B ein Nachbar von A ist. Wenn Sie verschiedene k Werte angeben, wird diese Symmetrie garantiert aufgehoben.

Ich denke, der Hauptgrund ist einfach, dass der Algorithmus einfacher ist mit einer festen Anzahl von Nachbarn, was zu besseren Ergebnissen führt im Allgemeinen. Sie haben einen speziellen Fall, dass KNN nicht so gut passt.

Ich schlage vor, dass Sie Ihre zwei Modelle zusammenfügen, abhängig von der imputierten zweiten Ableitung.

+0

Danke, ich hatte Angst, dass das der Fall war. Ich wusste nichts über das Symmetrie-Postulat, aber es macht Sinn. – saud