Библиотека различных преобразователей для всех видов разработки функций.

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

Повторное использование и переработка ♺

Предварительная обработка данных играет важную роль в повседневной жизни каждого специалиста по данным. Форматирование одного столбца здесь, преобразование значений там и т. д. Вы понимаете, о чем я. Хорошо, что есть Pandas, scikit-learn и т. д.
Если вы работаете с табличными данными, вы можете с удовольствием снова и снова использовать один и тот же метод предварительной обработки. Конвейеры scikit-learn помогают сделать этапы предварительной обработки формальными и простыми в реализации. Ведь структура проектов и процессов чем-то похожа: X и y, трансформируется X — иногда энкодер или Аналогично подгоняется, и, в конце концов, конечный продукт этапов предварительной обработки оказывается в модели. Конечно, это чрезмерное упрощение сложности. Но я думаю, вы поняли мою мысль. Если вы сделали это хорошо, вы можете использовать этапы предварительной обработки, которые привели к индивидуальному обучению в производственной системе.

Как разработчик программного обеспечения и как человек, который не хочет полностью испортить эту планету, я понял:

«Повторное использование и переработка»

Вот почему я особенно счастлив, когда могу переработать свой код предварительной обработки. Внутри у нас есть небольшой пакет, в котором мы собираем — более или менее организованно — все наши методы предварительной обработки. Конечно, важно, чтобы реализации всегда имели какой-то понятный и согласованный API. В противном случае утилизация становится мучением и не приносит ожидаемой простоты использования.

Некоторое время назад я начал искать похожий набор таких шагов. Конечно, вы можете найти их и на просторах Интернета: Feature-engine — отличный проект, стоит упомянуть здесь лишь как один из многих. Однако я не нашел сборника более-менее простых методов препроцессинга, содержащих еще и более конкретные шаги.

Почему нет простого набора методов предварительной обработки, в котором каждый мог бы легко и быстро внести свой вклад?

Формализованная коллекция, поэтому ее легко использовать, легко реализовать, а шаги можно комбинировать для удовлетворения более сложных потребностей предварительной обработки. Коллекция, в которой участие быстрое и несложное, и где другие специалисты по данным могут не только найти другие этапы предварительной обработки, но и вдохновиться идеями других: «А, это неплохая идея — я тоже попробую это на своих данных».

Так как я не нашел такого. Пришлось начинать самому: feature-reviser.

Пока коллекция совсем небольшая, но думаю вместе мы сможем почерпнуть много полезных идей и вдохновить друг друга. Потому что, даже если наборы данных и проекты разнообразны, каким-то образом большой объем кода может использоваться совместно проектами, компаниями и людьми. Так что не стесняйтесь повторно использовать, перерабатывать и вносить свой вклад!

Краткий обзор

API scikit-learn fit/transform широко используется. Будь то XGBoost, CatBoost или методы Feature-engine — все следуют этой структуре. То же самое можно сказать и о шагах предварительной обработки коллекции. Вот упрощенный пример:

import pandas as pd
from sklearn.base import BaseEstimator, TransformerMixin
class DummyTransformer(BaseEstimator, TransformerMixin):
    def __init__(self, string_to_replace: str, column: str) -> None:
        self.string_to_replace = string_to_replace
        self.column = column
    def fit(self, X=None, y=None) -> "DummyTransformer":
        return self
def transform(self, X: pd.DataFrame) -> pd.DataFrame:
    X = X.copy()
    X[self.column] = X[self.column].replace(self.string_to_replace,    "DUMMY!")
    return X

Джа! Для тех, кто не знал, так просто формализовать этапы предварительной обработки и сделать ее совместимой с scikit-learn и т. д.

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

Спасибо за прочтение!