2013-10-24 2 views
2

Ниже приведен пример использования Curve_Fit от Scipy на основе линейного уравнения. Мое понимание Curve Fit в целом состоит в том, что он берет график случайных точек и создает кривую, чтобы показать «наилучшую подгонку» к ряду точек данных. Мой вопрос заключается в использовании scipy curve_fit возвращается:Объяснение возвращаемого значения Scipy Curve_Fit

«Оптимальные значения параметров так, чтобы сумма квадратов ошибки е (XData, * Popt) - ydata сведено к минимуму».

Что именно означают эти два значения на простом английском языке? Благодаря!

import numpy as np 
from scipy.optimize import curve_fit 
# Creating a function to model and create data 
def func(x, a, b): 
    return a * x + b 
# Generating clean data 
x = np.linspace(0, 10, 100) 
y = func(x, 1, 2) 
# Adding noise to the data 
yn = y + 0.9 * np.random.normal(size=len(x)) 
# Executing curve_fit on noisy data 
popt, pcov = curve_fit(func, x, yn) 
# popt returns the best fit values for parameters of 
# the given model (func). 
print(popt) 

ответ

4

Вы просите SciPy сказать вам «лучший» линию через множество пар точек (х, у).

Вот уравнение прямой линии:

y = a*x + b 

Наклон линии a; y-перехват b.

У вас есть два параметра: a и b, поэтому вам нужны только два уравнения для решения двух неизвестных. Две точки определяют линию, не так ли?

Итак, что происходит, когда у вас более двух точек? Вы не можете пройти все баллы. Как вы выбираете наклон и перехват, чтобы дать вам «лучшую» линию?

Один из способов определить «лучший», чтобы вычислить наклон и перехват, что минимизирует квадрат разности между каждым значением у и прогнозируемые у при этом й на линии:

error = sum[(y(i) - (a*x(i) + b))^2] 

Это если вы знаете исчисление: возьмите первые производные от ошибки wrt a и b и установите их равными нулю. У вас будет два уравнения с двумя неизвестными: a и b. Вы решаете их, чтобы получить коэффициенты для «лучшей» линии.

Смежные вопросы