Как узнать или найти вектор весов и удалить выбросы для всех точек данных, используя Constrained np.polyfit или curve_fit? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь подогнать exponential decay к некоторым экспериментальным данным и использую полифит в numpy. Кроме того, сама подгонка взвешивается, то есть каждая точка данных имеет некоторый вес, связанный с ней, и 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)

Выбросы:

enter image description here Есть ли способ сделать это?

Как избавиться от этих выбросов с помощью Curve_fit?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...