Ich bin auf der Suche nach einer nichtlinearen Kurvenanpassungsroutine (wahrscheinlich am wahrscheinlichsten in R oder Python zu finden, aber ich bin offen für andere Sprachen), die x, y Daten und passe eine Kurve an.Finden einer Kurve, um Daten zu entsprechen
Ich sollte in der Lage sein, als eine Zeichenfolge den Typ des Ausdrucks anzugeben, den ich anpassen möchte.
Beispiele:
"A+B*x+C*x*x"
"(A+B*x+C*x*x)/(D*x+E*x*x)"
"sin(A+B*x)*exp(C+D*x)+E+F*x"
Was aus diesem Ich würde die Werte für die Konstanten (A, B, C, etc.) Und hoffentlich Statistiken über die Fitness des Spiels zumindest bekommen.
Es gibt kommerzielle Programme, um dies zu tun, aber ich erwartete, in der Lage zu sein, etwas zu finden, das so häufig ist, passend zu einem gewünschten Ausdruck in einer Sprachbibliothek heutzutage. Ich vermute, dass SciPy's Optimierungskram dazu in der Lage ist, aber ich kann nicht sehen, dass es mir erlaubt, eine Gleichung zu definieren. Ebenso kann ich anscheinend nicht genau finden, was ich in R. will.
Ist, was ich da draußen suche, oder muss ich meine eigenen rollen? Ich hasse es zu tun, wenn es da ist und ich habe nur Schwierigkeiten, es zu finden.
Edit: Ich möchte dies für ein bisschen mehr Kontrolle über den Prozess als ich von LAB Fit bekommen. Das LAB Fit UI ist schrecklich. Ich möchte auch in der Lage sein, den Bereich in mehrere Teile zu zerlegen und verschiedene Kurven für die verschiedenen Teile des Sortiments zu haben. Am Ende muss das Ergebnis in der Lage sein, eine LUT mit linearer Interpolation (Geschwindigkeit) zu schlagen, oder ich bin nicht interessiert.
In meiner aktuellen Reihe von Problemen habe ich trig Funktionen oder exp() und ich muss sie 352.800 mal pro Sekunde in Echtzeit ausführen (und verwenden Sie nur einen Bruchteil der CPU). Also zeichne ich die Kurve und verwende die Daten, um den Kurvenanpasser zu fahren, um weniger teure Annäherungen zu erhalten. In den alten Tagen waren LUTs fast immer die Lösung, aber heutzutage ist es manchmal schneller, die Speicher-Lookups zu überspringen und eine Annäherung durchzuführen.
Ist dir klar, dass dies eine wirklich schlechte Idee ist, statistisch gesehen? Wenn Sie nur eine flexible Anpassung an Ihre Daten wünschen, verwenden Sie ein flexibles Modell wie Löss, Splines oder generalisierte additive Modelle. – hadley
Selbst wenn ich den Bereich in kleinere Bereiche unterteile, muss ich vorsichtig sein. Ich habe Zugriff auf alle möglichen Interpolatoren für Audiodaten, aber für mich sind sie im Allgemeinen viel zu rechenintensiv. Im Allgemeinen, wenn ich anfangen muss, die Reihe in Stücke zu brechen, bin ich besser dran mit einer LUT. Approximationen von Kurven sind in DSP-Anwendungen immer noch ziemlich nützlich. – Nosredna