Chcę użyć do obliczeń fizycznych numpy.polyfit
, dlatego potrzebuję wielkości błędu.Jaki jest błąd numpy.polyfit?
Odpowiedz
Jeśli podasz full=True
w wywołaniu polyfit
będzie zawierać dodatkowe informacje:
>>> x = np.arange(100)
>>> y = x**2 + 3*x + 5 + np.random.rand(100)
>>> np.polyfit(x, y, 2)
array([ 0.99995888, 3.00221219, 5.56776641])
>>> np.polyfit(x, y, 2, full=True)
(array([ 0.99995888, 3.00221219, 5.56776641]), # coefficients
array([ 7.19260721]), # residuals
3, # rank
array([ 11.87708199, 3.5299267 , 0.52876389]), # singular values
2.2204460492503131e-14) # conditioning threshold
Wartość rezydualna jest zwracana suma kwadratów nadające błędów, nie wiem, czy to jest to, czego po:
>>> np.sum((np.polyval(np.polyfit(x, y, 2), x) - y)**2)
7.1926072073491056
w wersji 1.7 jest również cov
kluczowe że zwróci macierz kowariancji dla współczynników, które można użyć do obliczenia niepewności pasowania samych współczynników.
Jak widać w documentation:
Returns
-------
p : ndarray, shape (M,) or (M, K)
Polynomial coefficients, highest power first.
If `y` was 2-D, the coefficients for `k`-th data set are in ``p[:,k]``.
residuals, rank, singular_values, rcond : present only if `full` = True
Residuals of the least-squares fit, the effective rank of the scaled
Vandermonde coefficient matrix, its singular values, and the specified
value of `rcond`. For more details, see `linalg.lstsq`.
Co oznacza, że jeśli można zrobić dopasowanie i uzyskać pozostałości jak:
import numpy as np
x = np.arange(10)
y = x**2 -3*x + np.random.random(10)
p, res, _, _, _ = numpy.polyfit(x, y, deg, full=True)
Następnie p
są o dopasowanie parametrów, a res
będzie pozostałością, jak opisano powyżej. _
są dlatego, że nie trzeba zapisywać ostatnich trzech parametrów, więc można po prostu zapisać je w zmiennej _
, której nie będziecie używać. Jest to konwencja i nie jest wymagana.
@ Odpowiedź Jaime'a wyjaśnia, co oznacza wartość rezydualna. Inną rzeczą, którą możesz zrobić, to przyjrzeć się kwadratowym odchyleniom jako funkcji (której suma wynosi res
). Jest to szczególnie pomocne, aby zobaczyć trend, który nie pasował dostatecznie. res
mogą być duże, ponieważ hałas statystycznych, ewentualnie systematycznym złym montażu, na przykład:
x = np.arange(100)
y = 1000*np.sqrt(x) + x**2 - 10*x + 500*np.random.random(100) - 250
p = np.polyfit(x,y,2) # insufficient degree to include sqrt
yfit = np.polyval(p,x)
figure()
plot(x,y, label='data')
plot(x,yfit, label='fit')
plot(x,yfit-y, label='var')
Więc na rysunku, należy zwrócić uwagę na złe dopasowanie pobliżu x = 0
:
- 1. numpy.polyfit daje pusty reszt tablicę
- 2. Jaki jest sens tego C++ Błąd std :: length_error
- 3. Jaki jest lepszy sposób sprawdzenia EOF i błąd fgetc()?
- 4. Jaki jest błąd zmiennej widoczności w tym kodzie?
- 5. W jaki sposób naprawić błąd "System.Security.Permissions.SecurityAction.RequestMinimum" jest przestarzały?
- 6. Jaki jest pożytek z __RequestVerificationToken?
- 7. Jaki jest najdłuższy ciąg jaki mogę mieć?
- 8. Jaki jest pożytek z window.external?
- 9. Jaki jest cel preompompiledApp.config?
- 10. Jaki jest cel używania?
- 11. Jaki jest cel Rake?
- 12. Jaki jest cel JNDI
- 13. Jaki jest cel Mage_Core_Block_Template_Facade
- 14. Jaki jest typ dolny?
- 15. Jaki jest cel IApplicationBuilder.New()
- 16. Jaki jest odpowiednik „OnBackKeyPress”
- 17. Jaki jest cel "() =>"
- 18. Jaki jest cel curdoc()?
- 19. Jaki jest cel aclocal?
- 20. Jaki jest cel vertexAttribPointer?
- 21. Jaki jest cel IAsyncStateMachine.SetStateMachine?
- 22. Jaki jest cel Ember.Container
- 23. Jaki jest limit Sinatry?
- 24. Jaki jest sens Html.DisplayTextFor()?
- 25. Jaki jest antonim hermetyzacji?
- 26. Jaki jest sens _MERGE_PROXYSTUB?
- 27. Jaki jest sens document.defaultView?
- 28. Jaki jest cel layout.xml?
- 29. Jaki jest cel XNoImplicitPrelude?
- 30. Jaki jest cel CMakeScripts?
wiesz, jeśli np.polyfit używa TLS (Total Least Squares, znany również jako Orthogonal Least Squares), lub OLS (Ordinary Least Squares), aby znaleźć najlepsze dopasowanie? –