如何用曲线拟合拟合 excel 文件的数据?
How to fit data of an excel file with curve fit?
我是 python 的初学者。我有一个 excel 文件。它有 4 列。第一列是日期,其他列分别是速度 (v)、温度 (t) 和压力 (p)。此 excel 文件包含一年的数据。这是我的 excel 文件的示例。
Date V t p
2016-01-01 0.01 2 7
2016-01-02 0.04 2.1 6.6
.
.
.
2016-12-30 0.07 4 5
我想通过线性方程将温度和压力拟合到速度。
V = a*t+b*p+c
我想通过曲线拟合Scipy包找到a、b、c。我想我应该使用循环!这是我的代码。
import pandas as pd
from datetime import datetime, timedelta
from matplotlib import pyplot as plt
from matplotlib import dates as mpl_dates
from matplotlib.dates import date2num
from scipy.optimize import curve_fit
from scipy.optimize import least_squares
df =pd.read_excel ('final-all-filters.xlsx')
x = df['Date']
V = df['V']
t = df['t']
p = df['p']
def model(a, b, c):
return a*t+b*p+c
popt,pcov = curve_fit (model, t, p, V, maxfev = 10000)
plt.plot(t, p, V, label="Original Noised Data")
plt.plot(t, p, model(t, p, *popt), 'r-', label="Fitted Curve")
plt.legend()
plt.show()
您想用两个自变量(t 和 c)拟合模型。您需要将 model_fit 的 xdata 参数作为数组 [t,p] 传递,并构造模型函数,例如第一个参数是该数组。像这样:
def model(TP,a, b, c):
t,p = TP
return a*t+b*p+c
popt,pcov = curve_fit (model, [t, p], V, maxfev = 10000)
或许也插入 p0 参数是个好主意,它是一个包含 a、b 和 c 初始猜测的树元素的数组。
请注意,a、b 参数的解决方案不止一种。您可能需要查看文档以获取更多信息
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html
我是 python 的初学者。我有一个 excel 文件。它有 4 列。第一列是日期,其他列分别是速度 (v)、温度 (t) 和压力 (p)。此 excel 文件包含一年的数据。这是我的 excel 文件的示例。
Date V t p
2016-01-01 0.01 2 7
2016-01-02 0.04 2.1 6.6
.
.
.
2016-12-30 0.07 4 5
我想通过线性方程将温度和压力拟合到速度。
V = a*t+b*p+c
我想通过曲线拟合Scipy包找到a、b、c。我想我应该使用循环!这是我的代码。
import pandas as pd
from datetime import datetime, timedelta
from matplotlib import pyplot as plt
from matplotlib import dates as mpl_dates
from matplotlib.dates import date2num
from scipy.optimize import curve_fit
from scipy.optimize import least_squares
df =pd.read_excel ('final-all-filters.xlsx')
x = df['Date']
V = df['V']
t = df['t']
p = df['p']
def model(a, b, c):
return a*t+b*p+c
popt,pcov = curve_fit (model, t, p, V, maxfev = 10000)
plt.plot(t, p, V, label="Original Noised Data")
plt.plot(t, p, model(t, p, *popt), 'r-', label="Fitted Curve")
plt.legend()
plt.show()
您想用两个自变量(t 和 c)拟合模型。您需要将 model_fit 的 xdata 参数作为数组 [t,p] 传递,并构造模型函数,例如第一个参数是该数组。像这样:
def model(TP,a, b, c):
t,p = TP
return a*t+b*p+c
popt,pcov = curve_fit (model, [t, p], V, maxfev = 10000)
或许也插入 p0 参数是个好主意,它是一个包含 a、b 和 c 初始猜测的树元素的数组。
请注意,a、b 参数的解决方案不止一种。您可能需要查看文档以获取更多信息
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html