Как использовать алгоритм Гаусса-Ньютона в Python для решения метода наименьших квадратов (нелинейного)? ⇐ Python
Как использовать алгоритм Гаусса-Ньютона в Python для решения метода наименьших квадратов (нелинейного)?
У меня есть скрипт Python, который отображает сумму квадратов ошибок в зависимости от параметра Пуассона μ для данных [1, 2, 2, 1, 2]. Я использую метод наименьших квадратов (нелинейный).
Теперь я хотел бы применить алгоритм Гаусса-Ньютона и найти окончательный (числовой) результат, то есть для одного конечного параметра. Я буду использовать этот параметр в будущем в распределении Пуассона для расчета конкретной и единственной цели.
Я понимаю алгоритм Гаусса-Ньютона в теории, но мне трудно применить его на практике с Python. Итак, я хотел бы:
a) Я идентифицирую матрицу Якобиана J, которая, как правило, состоит из частных производных по всем параметрам. В данном случае у меня есть только один параметр, а матрица на самом деле представляет собой вектор-столбец;
b) Я вычисляю транспонирование J, умноженного на J, которое в данном случае является скаляром (формально числом, которое, однако, в данном случае является функцией неизвестного параметра);
c) алгоритмически это выглядит хорошо: обратное число J^T*J по-прежнему является скаляром, поэтому мне приходится делить на это число (которое, однако, будет содержать параметр mu);
г) Пишу итеративный метод по формуле и критерию остановки;
импортировать matplotlib.pyplot как plt импортировать numpy как np импорт математики цели = [1, 2, 2, 1, 2] защита f(к): """Наблюдаемые данные.""" return len(list(filter(лямбда j: j
У меня есть скрипт Python, который отображает сумму квадратов ошибок в зависимости от параметра Пуассона μ для данных [1, 2, 2, 1, 2]. Я использую метод наименьших квадратов (нелинейный).
Теперь я хотел бы применить алгоритм Гаусса-Ньютона и найти окончательный (числовой) результат, то есть для одного конечного параметра. Я буду использовать этот параметр в будущем в распределении Пуассона для расчета конкретной и единственной цели.
Я понимаю алгоритм Гаусса-Ньютона в теории, но мне трудно применить его на практике с Python. Итак, я хотел бы:
a) Я идентифицирую матрицу Якобиана J, которая, как правило, состоит из частных производных по всем параметрам. В данном случае у меня есть только один параметр, а матрица на самом деле представляет собой вектор-столбец;
b) Я вычисляю транспонирование J, умноженного на J, которое в данном случае является скаляром (формально числом, которое, однако, в данном случае является функцией неизвестного параметра);
c) алгоритмически это выглядит хорошо: обратное число J^T*J по-прежнему является скаляром, поэтому мне приходится делить на это число (которое, однако, будет содержать параметр mu);
г) Пишу итеративный метод по формуле и критерию остановки;
импортировать matplotlib.pyplot как plt импортировать numpy как np импорт математики цели = [1, 2, 2, 1, 2] защита f(к): """Наблюдаемые данные.""" return len(list(filter(лямбда j: j
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение