我想用倾斜的高斯拟合直方图。我从文本文件中获取数据:
rate, err = loadtxt('hist.dat', unpack = True)
Run Code Online (Sandbox Code Playgroud)
然后将它们绘制为直方图:
plt.hist(rate, bins= 128)
Run Code Online (Sandbox Code Playgroud)
这个直方图有一个偏斜的高斯形状,我想适合。我可以用一个简单的高斯来做到这一点,因为scipy包含了这个函数,但没有倾斜。我该如何继续?
可能返回的拟合优度测试是最好的。
我需要拟合一个函数
z(u,v) = C u v^p
Run Code Online (Sandbox Code Playgroud)
也就是说,我有一个二维数据集,我要找到两个参数,C和p。numpy 或 scipy 中是否有可以直接执行此操作的内容?我查看了 scipy.optimize.leastsq,但我不清楚我将如何在这里使用它。
我是Gnuplot的忠实粉丝,现在我想将fit-function用于时间序列.
我的数据集如下:
1.000000 1.000000 0.999795 0.000000 0.000000 0.421927 0.654222 -25.127700 1.000000 1994-08-12
1.000000 2.000000 0.046723 -0.227587 -0.689491 0.328387 1.000000 0.000000 1.000000 1994-08-12
2.000000 1.000000 0.945762 0.000000 0.000000 0.400038 0.582360 -8.624480 1.000000 1995-04-19
2.000000 2.000000 0.060228 -0.056367 -0.680224 0.551019 1.000000 0.000000 1.000000 1995-04-19
3.000000 1.000000 1.016430 0.000000 0.000000 0.574478 0.489638 -3.286880 1.000000 1995-07-15
Run Code Online (Sandbox Code Playgroud)
我的拟合脚本:
set timefmt "%Y-%m-%d"
set xdata time
set format x "%Y-%m-%d"
f(x)=a+b*x
fit f(x) "model_fit.dat" u 10:($2==2?$4:1/0) via a,b
Run Code Online (Sandbox Code Playgroud)
所以我对时间数据进行了条件拟合.我的问题是,Gnuplot拟合函数不适用于时间数据.我在这里发现了一个类似的问题:使用Gnuplot进行时间序列的线性回归,但我不想使用其他软件.我也不知道如何将时间值更改为数字,然后再返回....
任何人都可以帮我解决这个问题与Gnuplot?
非常感谢!
我正在使用 gnuplot 的拟合例程来拟合某些数据的函数,并提取“特征衰减时间常数”。(我d在我的拟合函数中调用了这个参数。)
我使用脚本代码set fit quiet来防止大量文本被打印到终端。但是我现在无法知道最终的拟合值是多少!(除了检查日志文件......这是艰巨的......)
有没有办法可以获取最终的拟合参数值,将它们存储在变量中,然后打印该变量?
我想这是 2 个问题合二为一......如何打印变量值?
因此,在玩弄 gnuplot 之后,我发现该print命令可以将变量打印到屏幕上,并且参数(例如)d已经可用作变量 - 即;它们已经是变量。
因此,我可以执行以下操作:print "d=",d- 此处的逗号用于分隔要打印的内容。所以我首先打印一个字符串,"d="然后是d.
如何获取我使用的变量的错误?例如; 如果我拟合一个带有参数 a、b 和 c 的函数,我如何在这些值上打印错误?
variables gnuplot curve-fitting data-fitting function-fitting
我有一个拟合函数,其形式如下:
def fit_func(x_data, a, b, c, N)
Run Code Online (Sandbox Code Playgroud)
其中a、b、c是lenth N的列表,其中的每一项都是scipy.optimize.curve_fit()中要优化的可变参数,N是用于循环索引控制的固定数。
按照这个问题,我想我可以修复 N,但我目前正在调用 curve_fit 如下:
params_0 = [a_init, b_init, c_init]
popt, pcov = curve_fit(lambda x, a, b, c: fit_func(x, a, b, c, N), x_data, y_data, p0=params_0)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误: lambda() 正好采用 Q 个参数(给定的 P)
Q 和 P 的变化取决于我的设置方式。
那么:对于初学者来说,这甚至可能吗?我可以将列表作为参数传递给 curve_fit 并具有我希望的行为,其中它将列表元素视为单个参数吗?假设答案是肯定的,那么我的函数调用做错了什么?
我正在使用 Scipy 将我的数据拟合到一个函数中。该函数为我提供了 2 个参数的值,在本例中为a和b。我想使用绑定参数来限制这些参数可以采用的值,每个参数都有自己的可接受值范围。
可接受的值:15< a <50 和 0.05< b <0.2
我想知道如何实现它们。官方文档只展示了如何对 1 个参数进行操作。这个问题类似于:Python curve fit library that allowed me to assignment bounds to parameters。这也只处理 1 个参数的边界。
这是我尝试过的:
def Ebfit(x,a,b):
Eb_mean = a*(0.0256/kt) # Eb at bake temperature
Eb_sigma = b*Eb_mean
Foursigma = 4*Eb_sigma
Eb_a = np.linspace(Eb_mean-Foursigma,Eb_mean+Foursigma,N_Device)
dEb = Eb_a[1] - Eb_a[0]
pdfEb_a = spys.norm.pdf(Eb_a,Eb_mean,Eb_sigma)
## Retention Time
DMom = np.zeros(len(x),float)
tau = (1/f0)*np.exp(Eb_a)
for bb in range(len(x)):
DMom[bb]= (1 - 2*(sum(pdfEb_a*(1 - …Run Code Online (Sandbox Code Playgroud) 假设我从一些在 R2 上定义的简单数据集开始,如下所示:
DataPointsDomain = [0,1,2,3,4,5]
DataPointsRange = [3,6,5,7,9,1]
Run Code Online (Sandbox Code Playgroud)
使用 scipy,我可以使用以下内容制作惰性多项式样条:
ScipySplineObject = scipy.interpolate.InterpolatedUnivariateSpline(
DataPointsDomain,
DataPointsRange,
k = 1, )
Run Code Online (Sandbox Code Playgroud)
sympy 中的等效对象是什么?
SympySplineObject = ...???
Run Code Online (Sandbox Code Playgroud)
(我想定义这个对象并在 sympy 对象上进行分析 sympy 操作,例如取积分、导数等...)
我有一个文件,我阅读如下:
data1 = np.loadtxt('lc1.out')
x = data1[:, 0]
y = data1[:, 1]
Run Code Online (Sandbox Code Playgroud)
我想消除它,我在这里找到了一个非常有用的链接。
model = np.polyfit(x, y, 2)
predicted = np.polyval(model, x)
Run Code Online (Sandbox Code Playgroud)
无论如何,我想掩盖一部分数据,例如我将只使用掩码外的点进行拟合。例如,我只想使用低于 639.5 和大于 641.5 的数据和二阶多项式拟合。
我有使用ma.masked_outside(x, 639.5, 641.5)这样的想法,因为它很容易仅将掩码外的元素保存在数组中......但我不明白如何使用polyfit.
我目前正在 Python 中使用 scipy.optimize 包的 curve_fit 函数,并且知道如果您取从curve_fit 获得的协方差矩阵的对角线项的平方根,您将得到curve_fit 参数的标准偏差计算。我不确定的是,这个标准偏差究竟意味着什么。据我所知,这是使用黑塞矩阵的近似值,但确切的计算是什么?高斯钟形曲线上的标准偏差告诉您曲线特定范围内的面积百分比,所以我假设对于 curve_fit 它告诉您某些参数值之间有多少数据点,但显然这是不对的......
如果这应该是曲线拟合的基本知识,我很抱歉,但我真的无法弄清楚标准偏差的作用,它们表示参数上的错误,但这些参数被计算为最可能的函数拟合,它不像有一个完整的最佳参数集合,我们得到该集合的平均值,因此也有一个标准偏差。只有一个最佳值,有什么可比较的呢?我想我的问题真的归结为:我如何手动准确地计算这些标准偏差,而不仅仅是使用 Hesse 矩阵获得近似值?
我正在尝试使用曲线拟合将自定义函数拟合到某些数据点。我试过一两个免费参数。我其他时候也用过。现在我正在努力适应,因为无论初始值是什么,算法总是返回初始输入值,具有无穷大的西格玛。我还尝试打印调用自定义函数的内部参数,但我不明白,我的自定义函数只调用了 4 次,前三个参数始终相同,最后一个参数相对变化10^-8 的参数。这看起来不对
curve-fitting ×10
python ×6
scipy ×6
gnuplot ×2
numpy ×2
python-3.x ×2
boundary ×1
data-fitting ×1
histogram ×1
python-2.7 ×1
spline ×1
sympy ×1
time-series ×1
variables ×1