Библиотека различных преобразователей для всех видов разработки функций.
Обычно вы ожидаете, что здесь будет упомянуто что-то об определенных типах предварительной обработки или что-то подобное. Но сегодня речь должна идти о другом.
Повторное использование и переработка ♺
Предварительная обработка данных играет важную роль в повседневной жизни каждого специалиста по данным. Форматирование одного столбца здесь, преобразование значений там и т. д. Вы понимаете, о чем я. Хорошо, что есть 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 и т. д.
Но хватит читать. Просто взгляните на проект, посмотрите коллекцию трансформеров. Используйте его, выражайте и делитесь своими идеями по препроцессингу, читайте документы и начинайте перерабатывать код! Вместе мы можем сделать жизнь каждого в области науки о данных немного лучше.
Спасибо за прочтение!