Najpierw musisz oddzielić swoją numpy tablicę na dwie oddzielne tablice zawierające wartości xiy.
x = [1, 2, 3, 9]
y = [1, 4, 1, 3]
curve_fit wymaga również funkcji, która zapewnia odpowiedni rodzaj dopasowania. Na przykład, dopasowanie liniowe użyłby funkcji takich jak
def func(x, a, b):
return a*x + b
scipy.optimize.curve_fit(func, x, y)
zwróci numpy tablicę zawierającą dwie tablice: pierwsza będzie zawierała wartości a
i b
, który najlepiej pasuje do danych, a drugi będzie kowariancji optymalnych parametrów dopasowania.
Oto przykład dopasowania liniowego do podanych danych.
import numpy as np
from scipy.optimize import curve_fit
x = np.array([1, 2, 3, 9])
y = np.array([1, 4, 1, 3])
def fit_func(x, a, b):
return a*x + b
params = curve_fit(fit_func, x, y)
[a, b] = params[0]
Ten kod zwróci a = 0.135483870968
i b = 1.74193548387
Oto działka z twoich punktów i dopasowania liniowego ... co jest wyraźnie zły, ale można zmienić funkcję dopasowania do uzyskania niezależnie od typu pasuje ci się.
Jaką krzywiznę chcesz dopasować? wielomian? – jabaldonedo
tak, wielomian – Bob
Więc spójrz na moją odpowiedź, czy to najprostsze podejście przy użyciu numpy – jabaldonedo