2015-10-07 5 views
0

Я действительно смущен: я .... У меня есть тонна данных, и я пытаюсь построить ее с наилучшей подходящей строкой. Я попробовал два способа:Как построить линию наилучшего соответствия в Python

pl.plot(med[::skip],var[::skip],'k.') 
p, q = np.polyfit(var[::skip],med[::skip], 1) 
pl.plot(med,p*med+q,'-') 

и

pl.plot(med[::skip],var[::skip],'k.') 
p = np.polyfit(var[::skip],med[::skip], 1) 
fit = np.polyval(p, var[::skip]) 
pl.plot(var[::skip],fit) 

но оба они дают мне что-то сумасшедшее:

enter image description here

, что я делаю неправильно?

ответ

1

numpy.polyfit() принимает x затем y в качестве своих аргументов, так что вам нужно поменять var и med в ваших звонков от него.

Обратите внимание, что, поскольку у вас есть лог-журнал, это не даст вам прямой линии. Вместо этого, вы должны вписываться в журнал двух переменных:?.

pl.plot(med[::skip],var[::skip],'k.') 
p, q = np.polyfit(np.log10(med[::skip]),np.log10(var[::skip]), 1) 
pl.plot(med[::skip],10**(p*np.log10(med[::skip])+q),'-') 
+0

, что до сих пор не дает мне одну прямую линию :(только некоторые мазня – Raksha

+0

Вы используете первый или второй метод – michaelrccurtis

+0

второй я попытался используя первый, но получил «OverflowError: Allocated too many blocks» – Raksha

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