2016-11-22 3 views
1

Отсутствующие значения являются общей проблемой при анализе данных. Одна из общих стратегий заключается в том, что недостающие значения заменяются значениями, случайно выбранными из распределения существующих значений.Устранение недостающих значений путем выборки из распределения существующих

Есть ли код библиотеки Python, который удобно выполняет этот шаг предварительной обработки на фрейме данных? Насколько я вижу, модуль sklearn.preprocessing не предлагает эту стратегию.

+0

Вы можете использовать ['sample'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sample.html) для этого – EdChum

+2

statsmodels имеет MICE (в главном и 0.8 rc), который реализует предсказательное среднее совпадение, которое выбирает вмененные наблюдения от соседей, где окрестность определяется предсказательной близостью. – user333700

ответ

2

Чтобы получить образец из распределения существующих значений, вам необходимо знать распределение. Если распределение неизвестно, вы можете использовать оценку плотности ядра, чтобы соответствовать ей. Это сообщение в блоге имеет хороший обзор реализаций оценки плотности ядра для Python: http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/.

Существует реализация в scikit-learn (см. http://scikit-learn.org/stable/modules/density.html#kernel-density); У kernelDensity у sklearn есть метод .sample(). В статистических моделях также имеется оценка плотности ядра (http://statsmodels.sourceforge.net/devel/generated/statsmodels.nonparametric.kernel_density.KDEMultivariate.html); он поддерживает категориальные функции.

Другим методом является выбор случайных существующих значений, не пытаясь генерировать значения, которые не видны в наборе данных. Проблема с этим решением заключается в том, что значение может зависеть от других значений в одной и той же строке, а random.sample без учета этого может привести к нереалистичным примерам.

 Смежные вопросы

  • Нет связанных вопросов^_^