Найти подходящий полином для данных в Python - PullRequest
0 голосов
/ 07 января 2019

Есть ли в Python функция или библиотека для автоматического вычисления наилучшего соответствия полинома для набора точек данных? Я не очень заинтересован в случае использования ML для обобщения набора новых данных, я просто сосредотачиваюсь на данных, которые у меня есть. Я понимаю, что чем выше степень, тем лучше. Тем не менее, я хочу что-то, что оштрафует или смотрит, где ошибка локти? Когда я говорю о локтях, я имею в виду нечто подобное (хотя обычно это не так резко или очевидно): enter image description here

Одна из идей, которые у меня возникли, состояла в том, чтобы использовать полифит Нампи: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.polyfit.html для вычисления полиномиальной регрессии для диапазона порядков / градусов. Polyfit требует от пользователя указать степень полинома, что создает проблему, потому что у меня нет никаких предположений или предвзятых представлений. Чем выше степень соответствия, тем ниже будет погрешность, но в конечном итоге она становится плато, как на изображении выше. Поэтому, если я хочу автоматически вычислить степень полинома, в которой кривая ошибки изгибается: если моя ошибка - E, а d - моя степень, я хочу максимизировать (E [d + 1] -E [d]) - (E [d +1] - E [d]).

Это даже правильный подход? Существуют ли другие инструменты и подходы в хорошо зарекомендовавших себя библиотеках Python, такие как Numpy или Scipy, которые могут помочь в поиске подходящего полиномиального соответствия (без необходимости указывать порядок / степень)? Буду признателен за любые мысли или предложения! Спасибо!

1 Ответ

0 голосов
/ 08 января 2019

Для выбора «правильной» подгонки и предотвращения перекоса можно использовать Информационный критерий Акиаке или Байесовский информационный критерий . Обратите внимание, что ваша процедура подбора может быть не байесовской, и вы все равно можете использовать ее для сравнения подгонок. Вот быстрое сравнение между двумя методами.

...