Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец для скачивания полного примера кода. Или запустить этот пример в браузере через 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)
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
114 -0.052506 -0.592373 3.0 4.0
62 0.189830 -1.973554 2.0 1.0
33 -0.416010 2.630382 0.0 1.0
107 1.765012 -0.362176 4.0 3.0
7 -1.021849 0.788808 1.0 1.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)
HistGradientBoostingRegressor(interaction_cst=[[0], [1], [2], [3], [4], [5],
                                               [6], [7], [8], [9]],
                              random_state=0)
В среде Jupyter, пожалуйста, перезапустите ячейку, чтобы отобразить HTML-представление, или доверьтесь блокноту.
На GitHub HTML-представление не может быть отображено, пожалуйста, попробуйте загрузить эту страницу с nbviewer.org.
HistGradientBoostingRegressor(interaction_cst=[[0], [1], [2], [3], [4], [5],
                                               [6], [7], [8], [9]],
                              random_state=0)


Новые и улучшенные отображения

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]
)
plot release highlights 1 2 0

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)
)
plot release highlights 1 2 0
/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,
)
plot release highlights 1 2 0

Более быстрый парсер в 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()
pclass name sex age sibsp parch ticket fare cabin embarked boat body home.dest
0 1 Allen, Miss. Elisabeth Walton female 29.0000 0 0 24160 211.3375 B5 S 2 NaN St Louis, MO
1 1 Allison, Master. Hudson Trevor male 0.9167 1 2 113781 151.5500 C22 C26 S 11 NaN Montreal, PQ / Chesterville, ON
2 1 Allison, Miss. Helen Loraine female 2.0000 1 2 113781 151.5500 C22 C26 S NaN NaN Montreal, PQ / Chesterville, ON
3 1 Allison, Mr. Hudson Joshua Creighton male 30.0000 1 2 113781 151.5500 C22 C26 S NaN 135.0 Montreal, PQ / Chesterville, ON
4 1 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) female 25.0000 1 2 113781 151.5500 C22 C26 S NaN NaN Montreal, PQ / Chesterville, ON


Экспериментальная поддержка Array API в LinearDiscriminantAnalysis

Была добавлена экспериментальная поддержка спецификации Array API для LinearDiscriminantAnalysis. Теперь оценщик может работать с любой библиотекой, совместимой со спецификацией Array API, такой как CuPy, библиотека GPU-ускоренных массивов. Подробности см. в Руководстве пользователя.

Улучшенная эффективность многих оценщиков

В версии 1.1 эффективность многих оценщиков, использующих вычисление парных расстояний (в основном оценщиков, связанных с алгоритмами кластеризации, обучения на основе многообразия и поиска соседей), была значительно улучшена для плотных входных данных float64. Улучшения эффективности коснулись, в частности, уменьшения потребления памяти и лучшей масштабируемости на многоядерных машинах. В версии 1.2 эффективность этих оценщиков была дополнительно улучшена для всех комбинаций плотных и разреженных входных данных на наборах данных float32 и float64, за исключением комбинаций разреженный-плотный и плотный-разреженный для метрик Евклидова и Квадратного Евклидова расстояния. Подробный список затронутых оценщиков можно найти в журнале изменений.

Общее время выполнения скрипта: (0 минут 4.878 секунд)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_release_highlights_1_2_0.ipynb

Download Python source code: plot_release_highlights_1_2_0.py

Download zipped: plot_release_highlights_1_2_0.zip

Связанные примеры

Основные моменты выпуска scikit-learn 1.4

Введение API set_output

Основные моменты выпуска scikit-learn 1.6

Основные моменты выпуска scikit-learn 0.22

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API