Теория позади модуля `curvefit ()` в Python - PullRequest
0 голосов
/ 14 октября 2018

Предположим, у меня есть следующие данные:

0.000000000000000000e+00 4.698409927534825670e-01
1.052631578947368363e+00 8.864688755521996200e+00
2.105263157894736725e+00 1.554529316011567630e+01
3.157894736842105310e+00 9.767558170900922931e+00
4.210526315789473450e+00 2.670221074763470881e+01

Теперь я хотел бы использовать эти данные для статистического анализа.

%pylab inline
# Loads numpty
my_data = loadtxt("numbers.dat")
dataxaxis = my_data[:,0]
datayaxis = my_data[:,1]

Я знаю, что я храню данные в качестве переменной и, следовательно, принимаю первый столбец в качестве моих xdata для оси x, а второй столбец - в качестве данных y для оси y.

Я узнал о функции curvefit(), которая работает аналогично polyfit() в поиске градиента и точки пересечения линии наилучшего соответствия (LOBF).

Я понял, что сначала я должен определить функцию прямой линии y = mx+c.

Вот где я запутался.
По словам лектора, мне нужно было указать xdata в качестве аргумента, но также определить градиент и перехват в качестве параметров:

def straightline(dataxaxis, m, c):
    "Returns values of y according to y = mx + c"
    return m*dataxaxis + c

И позже я мог бы вызвать функцию curvefit() как таковую:

lineinfo = curve_fit(line, dataxaxis, datayaxis)
lineparams = lineinfo[0]
m = lineparams[0]
c = lineparams[1]

, который дал соответствующие значения.

Но когда я вызвал функцию straightline в качестве первого параметра в curve_fit, я не передавал никакой информации о dataxaxis или какой-либо информации о m или c, но она все ещевычислил градиент и перехват для возврата в матрицу независимо.

Как это возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...