Подгонка одного шаблона данных к другому в Python

#python #data-analysis #curve-fitting

#python #анализ данных #подгонка кривой

Вопрос:

Пусть существует шаблон, который известен в определенных точках, но имеет неизвестную функциональную форму. Пусть также существует набор данных. Оба, насколько это может касаться компьютера, представляют собой всего лишь набор значений (x, y).

Тем не менее, я все еще хочу подогнать свой шаблон к данным с помощью простого отношения, a*P b , и я хочу найти наилучшие значения для параметров a,b с помощью реальной процедуры подгонки. Как я могу сделать это с помощью чего-то похожего optimize.curve_fit() , или мне нужно изобрести свой собственный метод?

Комментарии:

1. Используйте optimize.curve_fit. Примеров тому предостаточно. Также смотрите realpython.com/linear-regression-in-python

2. насколько я могу судить из документации, optimize,curve_fit() требует передачи функции модели, а у меня ее нет.

3. @BrandonMyers если я правильно понимаю, у вас есть точки данных, и вы хотите вписать в них кривую и получить ее параметры?

4. Нет, у меня в основном 2 набора точек данных. Один из них — это известный шаблон (точнее, звездный спектр K7), а затем данные (спектр другой системы, которую мы хотим ввести). Шаблон не имеет функциональной формы, y=mx b для этого шаблона нет типа, это просто набор точных (x, y) точек данных. Я хочу знать, каковы наилучшие параметры для масштабирования этих точек в соответствии с данными. Другими словами, учитывая набор данных вида {(Dx, Dy)} и набор шаблонов вида {(Px,Py)}, существует ли функция, которая выдает a,b так, что Dy-aPy b минимизируется.

5. @BrandonMyers Ваша модельная функция f(x) = ax b .

Ответ №1:

То, чего вы пытаетесь достичь, имеет название. Это проблема регрессии. Вы хотите найти связь между точками данных и тем, как они связаны.

Сказав это, вы можете заглянуть в LinearRegression() раздел sci-kit learn. Это было бы полезно для вашего случая.

Примечание: Возможно, что, возможно, линейная регрессия не может зафиксировать любую связь, которую содержат ваши данные, тогда попробуйте другие модели, например SVM , с нелинейным ядром или, может быть, NN. (дух).