TGViewer
Where is data, Lebowski Where is data, Lebowski @double_data · 219 subscribers
Post #88 257
​​🔥It's a new release of sklearn
.
Если вы частенько работает в sklearn, то вам точно понравятся нововведения, которые появились👇
.
sklearn - библиотека методов и алгоритмов машинного обучения на Python. Для обучения моделей или использования некоторых методов (например, снижения размерности) данные необходимо подготовить:
- отфильтровать выбросы
- преобразовать шкалу
- преобразовать распределение
- сгенерировать новые признаки
- дискретизировать и тд.
.
Некоторые наиболее известные:
- StandardScaler - стандартизация
- PolynomialFeatures - создание полиномиальных комбинаций
.
Для таких задач в библиотеке есть широкий выбор средств для создания Pipeline, например:
- make_pipeline
- ColumnTransformer
.
Мы же любим когда данные лежат в пандах 🐼 - там всё удобно и человекочитаемо😍 Но когда начинаются игры с обработкой данных и подготовкой их к обучению моделей, то всё скатывается до массивов numpy, вот как это выглядело раньше:
X, y = load_iris(as_frame=True, return_X_y=True)
sepal_cols = ["sepal length (cm)", "sepal width (cm)"]
petal_cols = ["petal length (cm)", "petal width (cm)"]

preprocessor = ColumnTransformer(
[
("scaler", StandardScaler(), sepal_cols),
("kbin", KBinsDiscretizer(encode="ordinal"), petal_cols),
("Poly", PolynomialFeatures(degree=2, include_bias=False), sepal_cols)
],
)

pipe = make_pipeline(preprocessor)

X_out = preprocessor.fit_transform(X)


print(type(X_out))
display(X_out[:5, :])

# результат будет на 1 рисунке в комментах

.
Массивы numpy нетакие юзерфрендли, ладно когда мы не создаем новых фич, можно использовать наименования их исходных данных, но когда мы используем полиномиальные фичи, получаются колонки с названиями x0, x1^2 и тд - крайне неудобно.
В одном из последних проектов приходилось страдать от этого😭
.
Но смотрите, что произошло после релиза 1.2. Разработчики подарили нам магию, немного изменим код:

X, y = load_iris(as_frame=True, return_X_y=True)
sepal_cols = ["sepal length (cm)", "sepal width (cm)"]
petal_cols = ["petal length (cm)", "petal width (cm)"]

preprocessor = ColumnTransformer(
[
("scaler", StandardScaler(), sepal_cols),
("kbin", KBinsDiscretizer(encode="ordinal"), petal_cols),
("Poly", PolynomialFeatures(degree=2, include_bias=False), sepal_cols)
],
verbose_feature_names_out=False,
).set_output(transform="pandas")

pipe = make_pipeline(preprocessor)

X_out = preprocessor.fit_transform(X)
X_out.sample(n=5, random_state=0)


Новинки:
- verbose_feature_names_out=False - добавление префикса к названиям колонок, к какому трансформеру они относятся
- set_output(transform="pandas") - истинная магия 🧙‍♂️, да-да, теперь выход пайплайна будет DataFrame c человекочитаемыми признаками - 2 рисунок в комментах
.
Это лучшее нововведение в библиотеках анализа данных с которыми я работаю за последние несколько лет😉.
.
А для тех, кто много работает с моделями появилась классная фича - PartialDependenceDisplay - очень полезная, тк всем хочется узнать, как влияет одна отдельная фича на прогнозы модели
.
А какие вы можете вспомнить изменения, которые упростили вам анализ данных🤔
Еще больше узнать по кнопке👇
More from @double_data
  1. Oct 26, 2025😎😁 А какие у вас рабочие мемы ? . #meme
  2. Oct 11, 2025​​️⃣ Сортировка, не всё хорошо, что упорядочено! При создании таблицы указывается набор по…
  3. Oct 10, 2025​​💡 Sort (partition) me, if you can Разрываем осеннюю непогоду 🍁 заметками про Clickhous…
  4. Oct 8, 2025# Refreshable materialized view (продолжение) Ну как мне всё это мониторить 🖥 Для просмот…
  5. Oct 8, 2025​​# Refreshable materialized view . 💣 Что еще за Refreshable MV ? Ранее были рассмотрены…
  6. May 24, 2025​​🫣Я по рекомендации . Живем в эпоху рекомендательных систем: - рекомендуют что посмотрет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →