Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You can also use numpy's <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html" rel="noreferrer">polyfit</a>:</p> <pre><code>data = np.array([[1,5], [2,10], [3,15], [4,20], [5,25]]) fit = np.polyfit(data[:,0], data[:,1] ,1) #The use of 1 signifies a linear fit. fit [ 5.00000000e+00 1.58882186e-15] #y = 5x + 0 line = np.poly1d(fit) new_points = np.arange(5)+6 new_points [ 6, 7, 8, 9, 10] line(new_points) [ 30. 35. 40. 45. 50.] </code></pre> <p>This allows you to alter the degree of the polynomial fit quite easily as the function <code>polyfit</code> take thes following arguments <code>np.polyfit(x data, y data, degree)</code>. Shown is a linear fit where the returned array looks like <code>fit[0]*x^n + fit[1]*x^(n-1) + ... + fit[n-1]*x^0</code> for any degree <code>n</code>. The <code>poly1d</code> function allows you turn this array into a function that returns the value of the polynomial at any given value <code>x</code>.</p> <p>In general extrapolation without a well understood model will have sporadic results at best.</p> <hr> <p>Exponential <a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html" rel="noreferrer">curve fitting</a>.</p> <pre><code>from scipy.optimize import curve_fit def func(x, a, b, c): return a * np.exp(-b * x) + c x = np.linspace(0,4,5) y = func(x, 2.5, 1.3, 0.5) yn = y + 0.2*np.random.normal(size=len(x)) fit ,cov = curve_fit(func, x, yn) fit [ 2.67217435 1.21470107 0.52942728] #Variables y [ 3. 1.18132948 0.68568395 0.55060478 0.51379141] #Original data func(x,*fit) [ 3.20160163 1.32252521 0.76481773 0.59929086 0.5501627 ] #Fit to original + noise </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload