В чем разница между sklearn Pipeline и DataFrameMapper?

Конвейер Sklearn: http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html

DataFrameMapper: https://github.com/paulgb/sklearn-pandas

В чем разница между ними?

Мне кажется, что у конвейера sklearn больше возможностей, но DataFrameMapper мне удобнее.


person nkhuyu    schedule 31.10.2016    source источник


Ответы (1)


Изменить: см. Обсуждение комментариев о, возможно, лучшем ColumnTransformer подходе. Может быть интересна сравнительная таблица, которую можно найти Здесь.


По сути, DataFrameMapper (и весь пакет sklearn-pandas) нацелен на объединение преимуществ объектов pandas DataFrame с мощью пакета машинного обучения sklearn.

sklearn.Pipeline описывает упорядоченный список преобразований для выполнения в матричных форматах (предоставляемых пакетами numpy и scipy). Эти преобразования будут выполняться для всей матрицы одно за другим в последовательности и будут кодировать весь процесс обучения и прогнозирования от начала до конца.

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

С другой стороны, DataFrameMapper работает с объектами DataFrame, созданными пакетом pandas, и может применять преобразования к определенным частям фрейма данных (не обязательно ко всему набору данных). DataFrames похожи на матрицы numpy и scipy, с одной заметной разницей в отслеживании меток и метаданных строк и столбцов. Операции DataFrames обеспечивают доступ к строкам и столбцам, управление ими и чтение с использованием логических идентификаторов вместо индексов.

Первая часть кортежа преобразования DataFrameMapper описывает, какие столбцы должны пройти преобразование.

Три больших отличия:

  1. DataFrameMapper - более гибкий инструмент, он позволяет выполнять различные преобразования в разных столбцах и больше ориентирован на преобразование сложных структур данных, а sklearn.Pipeline больше ориентирован на выполнение преобразований, связанных с машинным обучением, на однородном наборе данных.
  2. DataFrameMapper позволит вам сохранить аннотации и метки, которые вы присвоили своему объекту pandas DataFrame, а sklearn.Pipeline уменьшит любой результат до массива / матрицы numpy / scipy.
  3. sklearn.Pipeline является частью гораздо более стабильного и хорошо известного пакета и поэтому может быть более безопасным выбором, если важны такие соображения, как стабильность и обслуживание.
person NirIzr    schedule 01.11.2016
comment
sklearn.compose.ColumnTransformer теперь предоставляет возможность обрабатывать разнородные наборы данных. В частности, можно создавать разные конвейеры (например, для числовых и категориальных функций), а затем применять эти конвейеры к нужным столбцам. - person Evan Rosica; 21.09.2019
comment
@EvanRosica: Знаете ли вы, есть ли большое преимущество использования DataFrameMapper, когда вы можете использовать упомянутый ColumnTransformer со стандартным sklearn Pipeline? - person Nerxis; 24.11.2020
comment
@Nerxis Нет, я не знаю каких-либо серьезных преимуществ использования DataFrameMapper - person Evan Rosica; 24.11.2020
comment
@EvanRosica: Я только что нашел это сравнение таблиц Уточнить отношение к ColumnTransformer, которое показывает несколько (довольно незначительных) отличий. Спасибо. - person Nerxis; 25.11.2020