Примечание
Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.
Основные нововведения scikit-learn 1.2
Рады объявить о выпуске scikit-learn 1.2! В него вошло множество исправлений ошибок и улучшений, а также несколько новых ключевых функций. Ниже мы подробно расскажем о некоторых основных возможностях этого выпуска. Полный список всех изменений см. в примечаниях к выпуску.
Чтобы установить последнюю версию с помощью pip:
pip install --upgrade scikit-learn
или с помощью conda:
conda install -c conda-forge scikit-learn
Вывод Pandas с помощью API set_output
Теперь преобразователи scikit-learn поддерживают вывод в формате pandas с помощью API set_output. Подробнее об API set_output см. в примере: Знакомство с API set_output и в этом видео о выводе pandas DataFrame для преобразователей scikit-learn (несколько примеров).
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.datasets import load_iris
from sklearn.preprocessing import KBinsDiscretizer, StandardScaler
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", quantile_method="averaged_inverted_cdf"),
petal_cols,
),
],
verbose_feature_names_out=False,
).set_output(transform="pandas")
X_out = preprocessor.fit_transform(X)
X_out.sample(n=5, random_state=0)
Ограничения взаимодействия в деревьях градиентного бустинга на основе гистограмм
HistGradientBoostingRegressor и HistGradientBoostingClassifier теперь поддерживают ограничения взаимодействия с помощью параметра interaction_cst. Подробности см. в руководстве пользователя. В следующем примере взаимодействие признаков запрещено.
from sklearn.datasets import load_diabetes
from sklearn.ensemble import HistGradientBoostingRegressor
X, y = load_diabetes(return_X_y=True, as_frame=True)
hist_no_interact = HistGradientBoostingRegressor(
interaction_cst=[[i] for i in range(X.shape[1])], random_state=0
)
hist_no_interact.fit(X, y)
Новые и улучшенные визуализации
PredictionErrorDisplay позволяет качественно анализировать регрессионные модели.
import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))
_ = PredictionErrorDisplay.from_estimator(
hist_no_interact, X, y, kind="actual_vs_predicted", ax=axs[0]
)
_ = PredictionErrorDisplay.from_estimator(
hist_no_interact, X, y, kind="residual_vs_predicted", ax=axs[1]
)

LearningCurveDisplay теперь позволяет визуализировать результаты, полученные с помощью learning_curve.
from sklearn.model_selection import LearningCurveDisplay
_ = LearningCurveDisplay.from_estimator(
hist_no_interact, X, y, cv=5, n_jobs=2, train_sizes=np.linspace(0.1, 1, 5)
)

PartialDependenceDisplay получил новый параметр categorical_features для отображения частичной зависимости категориальных признаков с помощью столбчатых диаграмм и тепловых карт.
from sklearn.datasets import fetch_openml
X, y = fetch_openml(
"titanic", version=1, as_frame=True, return_X_y=True, parser="pandas"
)
X = X.select_dtypes(["number", "category"]).drop(columns=["body"])
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import OrdinalEncoder
categorical_features = ["pclass", "sex", "embarked"]
model = make_pipeline(
ColumnTransformer(
transformers=[("cat", OrdinalEncoder(), categorical_features)],
remainder="passthrough",
),
HistGradientBoostingRegressor(random_state=0),
).fit(X, y)
from sklearn.inspection import PartialDependenceDisplay
fig, ax = plt.subplots(figsize=(14, 4), constrained_layout=True)
_ = PartialDependenceDisplay.from_estimator(
model,
X,
features=["age", "sex", ("pclass", "sex")],
categorical_features=categorical_features,
ax=ax,
)

Ускоренный парсер в fetch_openml
fetch_openml теперь поддерживает новый парсер "pandas", который эффективнее использует память и процессор. В версии 1.4 значением по умолчанию станет parser="auto": он будет автоматически использовать парсер "pandas" для плотных данных и "liac-arff" для разреженных данных.
X, y = fetch_openml(
"titanic", version=1, as_frame=True, return_X_y=True, parser="pandas"
)
X.head()
Экспериментальная поддержка Array API в LinearDiscriminantAnalysis
В LinearDiscriminantAnalysis добавлена экспериментальная поддержка спецификации Array API. Теперь оцениватель может работать с любыми библиотеками, совместимыми с Array API, например с CuPy — библиотекой массивов с ускорением на GPU. Подробнее см. в руководстве пользователя.
Повышение эффективности многих оценивателей
В версии 1.1 была значительно повышена эффективность многих оценивателей, использующих вычисление попарных расстояний (в основном оценивателей, связанных с кластеризацией, обучением многообразий и алгоритмами поиска ближайших соседей), при работе с плотными входными данными типа float64. Повышение эффективности выразилось, в частности, в сокращении потребления памяти и значительном улучшении масштабируемости на многоядерных машинах. В версии 1.2 эффективность этих оценивателей была дополнительно повышена для всех сочетаний плотных и разреженных входных данных в наборах данных float32 и float64, за исключением сочетаний «разреженные—плотные» и «плотные—разреженные» для метрик евклидова расстояния и квадрата евклидова расстояния. Подробный список затронутых оценивателей приведён в журнале изменений.
Общее время выполнения скрипта: (0 минут 6.422 секунды)
Похожие примеры
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/release_highlights/plot_release_highlights_1_2_0.html