Szukam nieliniowej procedury dopasowywania krzywych (prawdopodobnie najprawdopodobniej można znaleźć w R lub Pythonie, ale jestem otwarty na inne języki), która wymagałaby danych x, y i dopasować do niego krzywą.Znajdowanie krzywej pasującej do danych
Powinienem być w stanie określić jako ciąg wyrażenie, które chcę dopasować.
Przykłady:
"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"
Co bym wyjść z tego jest co najmniej wartości stałych (A, B, C, itd.) I miejmy nadzieję statystyki o przydatności meczu.
Są to programy komercyjne, ale spodziewałem się, że w dzisiejszej bibliotece będzie można znaleźć coś tak powszechnego, jak pasujące do pożądanego wyrażenia w bibliotece językowej. Podejrzewam, że rzeczy optymalizacyjne SciPy mogą być w stanie to zrobić, ale nie widzę, że pozwala mi to zdefiniować równanie. Podobnie, nie mogę znaleźć dokładnie tego, czego chcę w R.
Czy jest to, czego szukam tam, czy muszę przetrenować własne? Nienawidzę tego robić, jeśli tam jest i mam problem ze znalezieniem go.
Edytuj: Chcę to zrobić, aby uzyskać nieco większą kontrolę nad procesem niż w przypadku LAB Fit. Interfejs LAB Fit jest okropny. Chciałbym też móc podzielić zakres na wiele części i mieć różne krzywe reprezentujące różne części zakresu. Ostatecznie wynik musi być w stanie (z prędkością) pokonać LUT z interpolacją liniową lub nie jestem zainteresowany.
W moim bieżącym zestawie problemów mam funkcje trig lub exp() i muszę wykonać je w czasie rzeczywistym 352 800 razy na sekundę (i używać tylko ułamka procesora). W związku z tym wykreślam krzywą i wykorzystuję dane do sterowania instalatorem krzywej, aby uzyskać tańsze przybliżenia. W dawnych czasach LUT były prawie zawsze rozwiązaniem, ale obecnie pomijanie wyszukiwań pamięci i przybliżanie jest czasami szybsze.
Czy zdajesz sobie sprawę, że jest to naprawdę zły pomysł, statystycznie rzecz biorąc? Jeśli chcesz tylko elastyczne dopasowanie do danych, użyj elastycznego modelu, takiego jak less, splajny lub uogólnione modele addytywne. – hadley
Nawet rozbicie zakresu na mniejsze zakresy jest kosztem, z którym muszę być ostrożny. Mam dostęp do wszelkiego rodzaju doskonałych interpolatorów dla danych audio, ale generalnie są one dla mnie zbyt intensywne obliczeniowo. Ogólnie rzecz biorąc, kiedy muszę zacząć rozbijanie zasięgu na kawałki, lepiej mi będzie z LUT. Aproksymacje krzywych są nadal bardzo przydatne w aplikacjach DSP. – Nosredna