Как обрабатывать отсутствующие значения в Python, которые должны отсутствовать (NaN не должны интерполироваться)? - PullRequest
0 голосов
/ 07 мая 2020

Я работаю над проектом по моделированию изменения счастья человека в зависимости от многих переменных.

Большинство объясняющих переменных являются ежедневными (сколько еды они съели, ежедневные упражнения, сон и т. Д.), Но некоторые из них - еженедельные - и они должны быть еженедельными и влияют на прогноз переменная раз в неделю.

Например, одной из недельных переменных является изменение веса человека, когда он взвешивается в один и тот же день каждую неделю.

Эти данные доступны только один раз в неделю. и влияет на его счастье в этот день.

В таком случае, может кто-нибудь посоветовать, как я могу обрабатывать отсутствующие данные в python в дни, когда нет данных для недельных переменных?

Было бы неправильно экстраполировать данные о пропущенных днях, поскольку на счастье человека эти недельные переменные вообще не влияют в те дни, когда они недоступны.

Я создал манекен с 1, если доступны еженедельные данные, и 0, если нет, но я не знаю, что делать с недостающими данными. Я не могу оставить NaN, иначе python не запустит регрессию, но я не могу поставить 0, поскольку иногда фактическое значение переменной (например, изменение веса) в день, когда данные доступны, может быть 0.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

SciKit-learn предоставляет классы, называемые Imputers, которые работают с пропущенными значениями, следуя определенной пользователем стратегии (т. Е. Используя значение по умолчанию, используя среднее значение столбца ...). Если вы не хотите искажать обучение, я бы посоветовал вам использовать статистику c вместо некоторого произвольного значения по умолчанию.

Кроме того, вы можете хранить информацию о том, какие значения были вменены, а какие из значений являются органическими. c с использованием MissingIndicator .

Вы можете узнать больше о различных Imputers с некоторыми примерами кода в документации SciKit-Learn

0 голосов
/ 08 мая 2020

Один из способов решения этой проблемы:

  • Заполните NaN последним значением (в данном случае измеренным весом)

  • Добавить логическая переменная «значение, доступное сегодня» (что уже было сделано, как описано в вопросе)

  • Добавьте еще одну переменную: (последнее доступное значение / предыдущее значение) * «значение, доступное сегодня» .

Предупреждение: моделирование продукта может оказаться немного сложным для алгоритмов линейной регрессии.

...