【发布时间】:2018-03-30 10:05:10
【问题描述】:
我正在尝试让多项式适合我的数据。目前,我正在使用 numpy 的 polyfit 来获得对数日志图中的最佳拟合。但我的目标是让数据适合符号图。我的代码如下所示:
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
import scipy.optimize as optimization
l = [ 0.006, 0.01, 0.014, 0.024, 0.0346, 0.049, 0.0535, 0.0736, 0.11 ]
f = [5.3375903383330048, 60.531976422513054, 89.111502526131474, 47.132498501584969, 17.447001214543118, 5.2583622688081455, 3.7779565652126865, 1.0621247249682186, 0.1922152085619766]
logx = np.log(l)
logy = np.log(f)
coeffs = np.polyfit(logx,logy,deg=3)
poly = np.poly1d(coeffs)
yfit = lambda x: np.exp(poly(np.log(x)))
plt.loglog(l,yfit(l), ':')
plt.loglog(l,f, 'o')
plt.show()
【问题讨论】:
-
当我在获取日志之前查看原始数据的散点图时,在我看来,第一个数据点似乎是一个可能的强异常值。记录日志可能会掩盖这一点,值得快速检查以验证此数据点的值。
-
这是一个原始的观察数据,在符号图中看起来完全符合预期。这个 loglog 情节没有揭示其真正的意义,这就是为什么我需要一个符号学拟合
标签: python numpy curve-fitting