scipy's curve_fit function
.我使用了不同的模型,但你可以很容易地改变它。
这是一段非常不言自明的代码:
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import pandas as pd
def f(x, a, b, n):
return a * x ** n / (x ** n + b)
data = pd.read_csv('data.txt.txt', sep='\t')
y = data['y'].astype(float)
x = data['X'].astype(float)
popt, pcov = curve_fit(f, x, y, p0=[1800., 20., 1.])
plt.scatter(x, y)
plt.plot(x, f(x, *popt), 'r-')
plt.show()