首页 > 解决方案 > 如何使用 Constrained np.polyfit 或 curve_fit 学习或查找权重向量并删除所有数据点的异常值?

问题描述

我正在尝试将 a 拟合exponential decay到一些实验数据并在 numpy 中使用 polyfit。此外,拟合本身是加权的,即每个数据点都有一些与之相关的权重,而polyfit function can find that optimal weights?

参考:受约束的 np.polyfit

所以最终输出将是coefficient value每个weight vector相关数据点的。

另外我想将M参数限制在 0.9 到 1 和N-0.001 到 -0.009之间

数据:

t(x) rate(y)
0   0.950
1   0.940
2   0.931
3   0.921
4   0.912
5   0.902
6   0.893
7   0.884
8   0.875
9   0.866
10  0.857
11  0.849
12  0.840
13  0.831
14  0.823
15  0.814
16  0.806
17  0.798
18  0.790
19  0.782
20  0.774
21  0.766
22  0.758
23  0.750
24  0.743
25  0.735
26  0.728
27  0.720
28  0.713
29  0.705
30  0.698

我想拟合最接近该数据的指数曲线。

我的做法:

    def fit_exp_linear(x, y):
            y = np.log(y)
            M, N_log = np.polyfit(t, y, 1)
            N = np.exp(N_log)
            return M, N

我如何在这里学习每一行的重量?

我想要的最终输出是:M, N and Weights vector of size dim(x)

异常值:

在此处输入图像描述 有办法吗?

如何使用curve_fit去除这些异常值?

标签: python-3.xexponentialscipy-optimize

解决方案


推荐阅读