- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 (X,Y)
形式的实验数据和 (x(t;*params),y(t;*params))
其中 t
是物理(但不可观察)变量,*params
是我要确定的参数。 t
是一个连续变量,x
和t
、y
和y
之间是1:1的关系t
在模型中。
在一个完美的世界中,我会知道 T
的值(参数的实际值),并且能够进行极其基本的最小二乘法拟合以找到*参数
。 (请注意,我不试图在我的情节中“连接”x
和y
的值,例如 31243002 或 31464345。)我无法保证在我的真实数据中,潜在值 T
是单调的,因为我的数据是跨多个周期收集的。
我在手动进行曲线拟合方面经验不足,而且不得不使用极其粗糙的方法,而且无法轻松访问基本的 scipy 函数。我的基本方法包括:
*params
的一些值并将其应用于模型t
值并将其放入模型中以创建一个数组 model(*params) = (x(*params),y(*params))
X
(数据值)插入到 model
中以获得 Y_predicted
Y
和 Y_predicted
之间运行最小二乘(或其他)比较*params
再做一次*params
选择最佳值这种方法有几个明显的问题。
1) 我没有足够的编码经验来开发一个非常好的“再做一次”,而不是“尝试解决方案空间中的一切”,也许“在粗略的网格中尝试一切”,然后“再次尝试一切”在粗网格的热点中稍细的网格中。”我尝试使用 MCMC 方法,但我从未找到任何最佳值,主要是因为问题 2
2) 第 2-4 步本身效率极低。
我试过类似的东西(类似伪代码;实际功能是编造的)。关于在 A 和 B 上使用广播,可以提出许多小问题,但这些问题没有需要为每一步进行插值的问题那么重要。
我认识的人推荐使用某种 Expectation Maximization 算法,但我对此了解不多,无法从头开始编写代码。我真的希望有一些很棒的 scipy(或其他开源)算法,我一直没能找到它来解决我的整个问题,但在这一点上我并不抱希望。
import numpy as np
import scipy as sci
from scipy import interpolate
X_data
Y_data
def x(t,A,B):
return A**t + B**t
def y(t,A,B):
return A*t + B
def interp(A,B):
ts = np.arange(-10,10,0.1)
xs = x(ts,A,B)
ys = y(ts,A,B)
f = interpolate.interp1d(xs,ys)
return f
N = 101
lsqs = np.recarray((N**2),dtype=float)
count = 0
for i in range(0,N):
A = 0.1*i #checks A between 0 and 10
for j in range(0,N):
B = 10 + 0.1*j #checks B between 10 and 20
f = interp(A,B)
y_fit = f(X_data)
squares = np.sum((y_fit - Y_data)**2)
lsqs[count] = (A,b,squares) #puts the values in place for comparison later
count += 1 #allows us to move to the next cell
i = np.argmin(lsqs[:,2])
A_optimal = lsqs[i][0]
B_optimal = lsqs[i][1]
最佳答案
如果我正确理解了这个问题,参数是每个样本中都相同的常量,但 t
因样本而异。因此,例如,也许您有一大堆您认为是从圆圈中采样的点
x = a+r cos(t)
y = b+r sin(t)
t
的不同值。
在这种情况下,我要做的是消除变量 t
以获得 x
和 y
之间的关系——在这种情况下, (x-a)^2+(y-b)^2 = r^2
。如果您的数据完全符合模型,则每个数据点都有 (x-a)^2+(y-b)^2 = r^2
。有一些错误,你仍然可以找到 (a,b,r)
来最小化
sum_i ((x_i-a)^2 + (y_i-b)^2 - r^2)^2。
Mathematica 的 Eliminate在某些情况下,命令可以自动执行消除 t 的过程。
PS 您可能在 stats.stackexchange、math.stackexchange 或 mathoverflow.net 上做得更好。我知道最后一个名声不好,但我们不咬人,真的!
关于python - 在 Python 中拟合参数曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32133733/
gnuplot 中拟合函数的正确方法是什么 f(x)有下一个表格吗? f(x) = A*exp(x - B*f(x)) 我尝试使用以下方法将其拟合为任何其他函数: fit f(x) "data.txt
(1)首先要建立数据集 ? 1
测量显示一个信号,其形式类似于具有偏移量和因子的平方根函数。如何找到系数并在一个图中绘制原始数据和拟合曲线? require(ggplot2) require(nlmrt) # may be thi
我想将以下函数拟合到我的数据中: f(x) = Offset+Amplitudesin(FrequencyT+Phase), 或根据 Wikipedia : f(x) = C+alphasin(ome
我正在尝试使用与此工具相同的方法在 C# 中拟合 Akima 样条曲线:https://www.mycurvefit.com/share/4ab90a5f-af5e-435e-9ce4-652c95c
问题:开放层适合 map ,只有在添加特征之后(视觉),我该如何避免这种情况? 我在做这个 第 1 步 - 创建特征 var feature = new ol.Feature({...}); 第 2
我有一个数据变量,其中包含以下内容: [Object { score="2.8", word="Blue"}, Object { score="2.8", word="Red"}, Objec
我正在尝试用中等大小的 numpy float 组来填充森林 In [3]: data.shape Out[3]: (401125, 5) [...] forest = forest.fit(data
我想用洛伦兹函数拟合一些数据,但我发现当我使用不同数量级的参数时拟合会出现问题。 这是我的洛伦兹函数: function [ value ] = lorentz( x,x0,gamma,amp )
我有一些数据,我希望对其进行建模,以便能够在与数据相同的范围内获得相对准确的值。 为此,我使用 polyfit 来拟合 6 阶多项式,由于我的 x 轴值,它建议我将其居中并缩放以获得更准确的拟合。 但
我一直在寻找一种方法来使数据符合 beta 二项分布并估计 alpha 和 beta,类似于 VGAM 库中的 vglm 包的方式。我一直无法找到如何在 python 中执行此操作。有一个 scipy
我将 scipy.optimize.minimize ( https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html ) 函数与
在过去的几天里,我一直在尝试使用 python 绘制圆形数据,方法是构建一个范围从 0 到 2pi 的圆形直方图并拟合 Von Mises 分布。我真正想要实现的是: 具有拟合 Von-Mises 分
我有一个简单的循环,它在每次迭代中都会创建一个 LSTM(具有相同的参数)并将其拟合到相同的数据。问题是迭代过程中需要越来越多的时间。 batch_size = 10 optimizer = opti
我有一个 Python 系列,我想为其直方图拟合密度。问题:是否有一种巧妙的方法可以使用 np.histogram() 中的值来实现此结果? (请参阅下面的更新) 我目前的问题是,我执行的 kde 拟
我有一个简单的 keras 模型(正常套索线性模型),其中输入被移动到单个“神经元”Dense(1, kernel_regularizer=l1(fdr))(input_layer) 但是权重从这个模
我正在尝试解决 Boston Dataset 上的回归问题在random forest regressor的帮助下.我用的是GridSearchCV用于选择最佳超参数。 问题一 我是否应该将 Grid
使用以下函数,可以在输入点 P 上拟合三次样条: def plotCurve(P): pts = np.vstack([P, P[0]]) x, y = pts.T i = np.aran
我有 python 代码可以生成数字 x、y 和 z 的三元组列表。我想使用 scipy curve_fit 来拟合 z= f(x,y)。这是一些无效的代码 A = [(19,20,24), (10,
我正在尝试从 this answer 中复制代码,但是我在这样做时遇到了问题。我正在使用包 VGAM 中的gumbel 发行版和 fitdistrplus . 做的时候出现问题: fit = fi
我是一名优秀的程序员,十分优秀!