Aspiring Data Science
370 subscribers
425 photos
11 videos
10 files
1.87K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Prepping tables for machine learning

#varoquaux #inria #ml #sklearn #missingvalues #imputing #perezlebel #skrub #minhashencoder #gapencoder #datetimeencoder #tablevectorizer #fuzzy_join

Общие советы, как учиться на табличных данных в экосистеме sklearn.

Оказывается, заполнение пропусков лучше всего нативное от деревянных моделей. Потом уже идут более гораздо затратные вычислительно условные импутации. Если у вас нейросеть, используйте в конвейере add_indicator=True, чтобы обработать возможные случаи, когда пропуски не случайны.

По дефолту советуют HistGradientBoosting.
Если же нет, рекомендуют QuantileTransformer НА ПРИЗНАКАХ. Такое я чёт впервые встречаю, обычно это делают на таргете... хм... +IterativeImputer (хотя только что говорили про его затратность).

Гаель предлагает как стандарт весь препроцессинг отдать трансформеру tablevectorizer из либы skrub, который знает, как обрабатывать фичи времени, строки, категории.

Для категориальных столбцов у них реализована интересная разновидность one hot, основанная на строковой близости меток. Например, Police officer I и Police officer IV попадут в одну корзину вместо разных. Семантическая близость, к сожалению, (пока?) не учитывается.

Ещё в skrub для обогащения данных из справочных таблиц есть джойнеры, которые, как я понял, заменяют featuretools по сути. Но если в featuretools чёрт ногу сломит, тут вроде попроще. Очевидное преимущество skrub - fuzzy_join (всё по той же текстовой схожести).

Что интересно, есть несколько бэкендов - pandas, polars.

https://www.youtube.com/watch?v=I4Sksd93bZ4