большой набор данных, интерполяция - PullRequest
0 голосов
/ 16 февраля 2011

Я ищу «метод» для получения формулы, формула, которая получается из подбора набора данных (3000 баллов).Я использовал полином Лежандра, но для> 20 баллов он дает не точные значения.Я могу написать тест chi2, но алгоритму требуется немало времени для вычисления N параметров, и вначале я не знаю, как выглядит функция, поэтому требуется время.Я думал о сплайнах ... Может быть ...

Итак, ввод: 3000 пинт

Вывод: f (x) = ... что-то

Я хочуиметь формулу от пригонки.Какой лучший способ сделать это в python?

Пусть сила будет с нами!Никон

Ответы [ 4 ]

3 голосов
/ 16 февраля 2011

Как насчет полиномиальной подгонки:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

или какая-то другая схема интерполяции:

http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html

Трудно рекомендовать подходящий метод, не зная больше о наборе данных и о том, насколько требуется хорошее соответствие.

2 голосов
/ 17 февраля 2011

За исключением того, что сплайн не дает вам «формулу», по крайней мере, нет, если у вас нет средств для обработки всех кусочных сегментов. Даже тогда, это не будет легко записано, или даст вам что-нибудь, на что вообще приятно смотреть.

Простой сплайн дает вам интерполант. Хуже того, при 3000 точках интерполирующий сплайн даст вам примерно столько кубических сегментов! Вы сказали, что интерполяция раньше. Конечно, интерполирующий полином такого высокого порядка в любом случае будет полной чушь, так что не думайте, что вы можете просто вернуться туда.

Если все, что вам нужно, это инструмент, который может обеспечить точную интерполяцию в любой точке, и вам действительно не нужно иметь явную формулу, тогда интерполяционный сплайн - хороший выбор.

Или ты действительно хочешь приблизительный? Функция, которая приблизительно соответствует вашим данным, сглаживая шум? Дело в том, что большую часть времени, когда люди, которые понятия не имеют, что они делают, говорят «интерполяция», они действительно означают приближение, сглаживание. Это возможно, конечно, но есть целые книги, написанные на тему подбора кривой, моделирования эмпирических данных. Ваша первая цель - выбрать интеллектуальную модель, которая будет представлять эти данные. Лучше всего, конечно, если у вас есть какой-то разумный выбор модели из физического понимания изучаемых отношений, то вы можете оценить параметры этой модели, используя нелинейную регрессионную схему, из которых можно найти много.

Если у вас нет модели, и вы не хотите выбирать ту, которая приблизительно имеет правильную форму, тогда у вас останутся общие модели в форме сплайнов, которые можно подогнать в регрессионном смысле, или с полиномиальными моделями высокого порядка , к которому я мало уважаю.

Моя точка зрения во всем этом заключается в том, что ВАМ необходимо сделать выбор и провести исследование выбора модели.

0 голосов
/ 17 февраля 2011

Вы можете сделать выборку из наблюдаемых точек (случайным образом лучше) и подогнать кубический сплайн к этой выборке (если вы повторите эту процедуру, вы можете создать распределение сплайнов).Подгонка сплайна к 3000 точкам - это немного, но генерация распределения сплайна на основе образца может дать вам представление о том, как будет выглядеть функция.Как упоминал Джош, http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html - хорошее место для начала поиска.

0 голосов
/ 16 февраля 2011

Единственной формулой будет полином порядка 3000.

Насколько хорошим должно быть соответствие?Какой тип формулы вы ожидаете?

...