Примечание
Перейти в конец для скачивания полного примера кода. Или запустить этот пример в браузере через 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.datasets import load_iris
from sklearn.preprocessing import StandardScaler, KBinsDiscretizer
from sklearn.compose import ColumnTransformer
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),
],
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)
)

/home/circleci/miniforge3/envs/testenv/lib/python3.9/site-packages/joblib/externals/loky/backend/fork_exec.py:38: RuntimeWarning: Using fork() can cause Polars to deadlock in the child process. In addition, using fork() with Python in general is a recipe for mysterious deadlocks and crashes. The most likely reason you are seeing this error is because you are using the multiprocessing module on Linux, which uses fork() by default. This will be fixed in Python 3.14. Until then, you want to use the "spawn" context instead. See https://docs.pola.rs/user-guide/misc/multiprocessing/ for details. If you really know what your doing, you can silence this warning with the warning module or by setting POLARS_ALLOW_FORKING_THREAD=1.
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.preprocessing import OrdinalEncoder
from sklearn.pipeline import make_pipeline
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
Была добавлена экспериментальная поддержка спецификации Array API для LinearDiscriminantAnalysis. Теперь оценщик может работать с любой библиотекой, совместимой со спецификацией Array API, такой как CuPy, библиотека GPU-ускоренных массивов. Подробности см. в Руководстве пользователя.
Улучшенная эффективность многих оценщиков
В версии 1.1 эффективность многих оценщиков, использующих вычисление парных расстояний (в основном оценщиков, связанных с алгоритмами кластеризации, обучения на основе многообразия и поиска соседей), была значительно улучшена для плотных входных данных float64. Улучшения эффективности коснулись, в частности, уменьшения потребления памяти и лучшей масштабируемости на многоядерных машинах. В версии 1.2 эффективность этих оценщиков была дополнительно улучшена для всех комбинаций плотных и разреженных входных данных на наборах данных float32 и float64, за исключением комбинаций разреженный-плотный и плотный-разреженный для метрик Евклидова и Квадратного Евклидова расстояния. Подробный список затронутых оценщиков можно найти в журнале изменений.
Общее время выполнения скрипта: (0 минут 4.878 секунд)
Связанные примеры
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/release_highlights/plot_release_highlights_1_2_0.html