У меня есть эти данные, к которым я подгоняю линейную функцию, и подгонка определяет другую работу (неважно, не важно). Я использую numpy.polyfit
, и когда я просто включаю данные и степень соответствия, ничего больше, получается такой график:
Теперь с подгонкой все в порядке, но общий консенсус заключается в том, что линия наилучшего подгонки искажается этими красными точками данных над ней, и я на самом деле должен подгонять данные чуть ниже нее, которые образуют красивую линейную форму (начиная с этого перегруженного сгусток синих точек). Поэтому я попытался добавить взвешивание к моему вызову polyfit
и выбрал произвольное взвешивание 1/sqrt(значения y), поэтому в основном меньшие значения y будут иметь более благоприятный вес. Это дало следующее:
Что, по общему признанию, лучше, но я все еще недоволен, так как теперь кажется, что линия слишком низкая. В идеале я хотел бы золотую середину, но, поскольку я выбрал действительно произвольное взвешивание, мне было интересно, есть ли вообще способ выполнить более надежную подгонку с помощью Python, или даже можно ли это сделать с помощью polyfit
? Использование отдельного пакета, если он работает, тоже подойдет.
Classification for outlier removal
,clustering
,k-nearest neighbor
,RANSAC
,robust regression
. В конце концов, понимание вашего эксперимента и, возможно, поиск причин для исключения определенных данных, как правило, является лучшим подходом первого порядка. - person roadrunner66   schedule 07.03.2016