python - 如何同时将 2 个数据集拟合到 2 个参考数据集并提取共享参数
问题描述
我有 2 个(模拟)数据集和 2 个(实验)参考数据集。
由于模拟是以数值方式进行的,因此没有方法/功能是已知的,只有模拟数据可用。
这两个数据集共享我想通过将模拟拟合到参考数据来提取的参数。
我没有找到任何 python 功能来仅使用数据集而不是拟合函数/模型来执行这种拟合/最小化/优化。
具体来说:我有以下两个方程:
e1 = a * s1 + b * t1 + c * u1 和
e2 = a * s2 + b * t2 + c * u2 和
我想弄清楚参数a,b,c。
e1, e2 是实验性的 NxN np.arrays(可以在热图中可视化或可以视为 f(x,y) )和
s1, s2, t1, t2, u1, u2 是包含模拟数据的 MxM np.arrays。
我希望方程(热图)的左侧和右侧尽可能相似,并考虑两个方程相似以了解 a、b、c。
使 N = M 需要付出努力,但可以做到。我知道,我必须使用两个模型,但我只知道如何将匹配的 1xN 实验和模拟数组传递给模型。
解决方案
我写了一个围绕 scipy 的包装器,symfit
它使这种问题很简单,所以我想你可能有兴趣使用它。使用symfit
你的问题,你可以写
from symfit import parameters, variables, Fit, Model
e1, e2, s1, s2, t1, t2, u1, u2 = variables('e1, e2, s1, s2, t1, t2, u1, u2')
a, b, c = parameters('a, b, c')
model = Model({
e1: a * s1 + b * t1 + c * u1,
e2: a * s2 + b * t2 + c * u2,
})
fit = Fit(model, u1=u1data, s1=s1data, ...)
fit_result = fit.execute()
print(fit_result)
有关更多信息,请参阅文档。祝你好运!
推荐阅读
- azure - 在 Azure 应用程序网关中捕获 HTTP 请求参数
- ios - 如何修复 Opentok Cordova Plugin for iOS 中的发布者错误?
- javascript - 从扩展程序调用 chrome.tabs.update 停止工作
- ruby - 使用 Ruby 的 CLI 数据宝石
- r - 使用逻辑更改 R 中的日期格式
- c# - Xamarin 的 HttpClient 抛出 Java.Net.SocketTimeoutException
- node.js - 如何更改 socket.io 连接网址?
- json - 为什么它不能反序列化它在一分钟前在 GET 中给我的 json?
- crystal-reports - 如何在水晶报表中进行条件求和
- python - 来自同一字典的不同类中的项目重复项的 Python 问题