Предположим, у меня есть следующие данные:
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
, но она все ещевычислил градиент и перехват для возврата в матрицу независимо.
Как это возможно?