【发布时间】:2021-03-16 18:24:51
【问题描述】:
我目前正在尝试将一组数据点拟合到函数 e^x。似乎数据点绘制得很好,但无论出于何种原因,当我尝试拟合 e^x 时,结果都是一条水平线。数据点是指数的。任何人都可以看到可能导致此问题的原因吗?
这里是一些示例数据:csv data
代码如下:
from matplotlib import pyplot as plt
from matplotlib import style
from scipy.optimize import curve_fit
from math import e
import numpy as np
x_data, y_data = np.loadtxt("analog-data.csv", unpack=True, delimiter=',')
def func1(x, a, b, c):
return a + (b * (e**(c * x)))
initialGuess = [1, -1, -1]
params, params_covariance = curve_fit(func1, x_data, y_data, p0=initialGuess, absolute_sigma=True)
print(params)
plt.plot(x_data, func1(x_data, params[0], params[1], params[2]), color='orange', label='Sin Fit')
plt.plot(x_data, (y_data - func1(x_data, params[0], params[1], params[2])), 'o', color='orange')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.title('Title')
plt.legend()
plt.show()
【问题讨论】:
-
从analog-data.csv 发布一些样本。
pd.read_csv('analog-data.csv').head(5)
标签: python matplotlib scipy curve-fitting