#data #algorithm #browser #parameters #models #function

rusfun

一个小型的实验性 crate,通过 WASM 在浏览器中拟合简单模型到数据

6 个版本

0.4.0 2021 年 5 月 25 日
0.3.2 2019 年 11 月 4 日
0.3.1 2019 年 8 月 22 日
0.2.2 2019 年 8 月 5 日

#889 in WebAssembly

每月 33 下载

MIT 许可证

33KB
623 代码行

RUSFUN

Build Status

rusfun crate 是一个小型库,可以将 Rust 中的参数化函数编译成 wasm。此外,它还包含最小化例程,用于在给定的数据集中找到最小化成本函数的参数。

目前实现了 Levenberg-Marquardt 算法来最小化

equation

要定义一个函数,定义一个 Func1D 结构体,其中包含初始参数 p 的引用,域 x 的引用以及将 p 和 x 映射到模型值 f(x) 的函数。标准库中预定义了一些模型,包括 size_distribution 和 sas 模块。

例如,要初始化高斯函数,可以这样做

let p = array![300.0, 3.0, 0.2, 0.0];
let model = size_distribution::gaussian;

let model_function = func1d::Func1D::new(&p, &x, model);

注意,p 和 x 是 ndarray

然后可以通过调用

model_function.output()

来评估该函数

let mut minimizer = curve_fit::Minimizer::init(&model_function, &y, &sy, 0.01);

为了最小化给定数据 (xᵢ, yᵢ, σᵢ) 的模型,需要将 Minimizer 结构体初始化为可变变量,其中包含先前定义的模型函数,y 和 σ 的 ndarray 引用,以及 LM 步骤的初始 ƛ 值。

minimizer.fit()

然后可以通过

minimizer.report()

来执行拟合,并通过

来打印结果

到目前为止,rusfun crate 的基本功能。该 crate 非常年轻,当实现更多拟合算法的灵活性时,语法可能会有破坏性更改。
依赖项