#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. (дух).