Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.

Основные нововведения в scikit-learn 1.6

Рады сообщить о выпуске scikit-learn 1.6! В этой версии исправлено множество ошибок и внесены улучшения, а также добавлены важные новые функции. Ниже описаны основные нововведения этого выпуска. Полный список всех изменений см. в примечаниях к выпуску.

Чтобы установить последнюю версию с помощью pip:

pip install --upgrade scikit-learn

или с помощью conda:

conda install -c conda-forge scikit-learn

FrozenEstimator: фиксация оценивателя

Этот метаоцениватель позволяет взять оцениватель и зафиксировать его метод fit, то есть вызов fit не выполняет никаких операций; кроме того, fit_predict и fit_transform вызывают соответственно predict и transform, не вызывая fit. Остальные методы и свойства исходного оценивателя остаются без изменений. Например, предварительно обученную модель можно использовать как шаг-преобразователь в конвейере или передать её некоторым метаоценивателям. Вот короткий пример:

import time

from sklearn.datasets import make_classification
from sklearn.frozen import FrozenEstimator
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import FixedThresholdClassifier

X, y = make_classification(n_samples=1000, random_state=0)

start = time.time()
classifier = SGDClassifier().fit(X, y)
print(f"Fitting the classifier took {(time.time() - start) * 1_000:.2f} milliseconds")

start = time.time()
threshold_classifier = FixedThresholdClassifier(
    estimator=FrozenEstimator(classifier), threshold=0.9
).fit(X, y)
print(
    f"Fitting the threshold classifier took {(time.time() - start) * 1_000:.2f} "
    "milliseconds"
)
Fitting the classifier took 4.26 milliseconds
Fitting the threshold classifier took 0.62 milliseconds

При обучении классификатора с порогом обучение вложенного SGDClassifier было пропущено. Подробнее см. пример Примеры использования FrozenEstimator.

Преобразование данных, отличных от X, в Pipeline

Pipeline теперь при необходимости поддерживает преобразование передаваемых данных, отличных от X. Для этого можно задать новый параметр transform_input. Это особенно полезно при передаче валидационного набора через конвейер.

Предположим, что EstimatorWithValidationSet — это оцениватель, принимающий валидационный набор. Теперь можно создать конвейер, который преобразует валидационный набор и передаёт его оценивателю:

with sklearn.config_context(enable_metadata_routing=True):
    est_gs = GridSearchCV(
        Pipeline(
            (
                StandardScaler(),
                EstimatorWithValidationSet(...).set_fit_request(X_val=True, y_val=True),
            ),
            # telling pipeline to transform these inputs up to the step which is
            # requesting them.
            transform_input=["X_val"],
        ),
        param_grid={"estimatorwithvalidationset__param_to_optimize": list(range(5))},
        cv=5,
    ).fit(X, y, X_val=X_val, y_val=y_val)

В приведённом выше коде важны вызов set_fit_request, указывающий, что X_val и y_val требуются методу EstimatorWithValidationSet.fit, и параметр transform_input, сообщающий конвейеру, что необходимо преобразовать X_val перед передачей в EstimatorWithValidationSet.fit.

Обратите внимание, что на данный момент оцениватели scikit-learn ещё не были расширены для приёма пользовательских валидационных наборов. Эта функция выпущена заранее, чтобы собрать отзывы сторонних библиотек, которым она может быть полезна.

Поддержка нескольких классов для LogisticRegression(solver="newton-cholesky")

Решатель "newton-cholesky" (впервые представленный в scikit-learn 1.2) ранее поддерживал только бинарную классификацию в LogisticRegression и некоторых других обобщённых линейных регрессионных оценивателях (а именно PoissonRegressor, GammaRegressor и TweedieRegressor).

В этом выпуске добавлена поддержка нескольких классов (мультиномиальная классификация) в LogisticRegression.

Этот решатель особенно полезен, если число признаков небольшое или среднее. Эмпирически показано, что на некоторых наборах данных среднего размера с категориальными признаками, закодированными методом one-hot, он сходится быстрее и надёжнее других решателей, что видно из результатов тестирования производительности в pull request.

Поддержка пропущенных значений в Extra Trees

Классы ensemble.ExtraTreesClassifier и ensemble.ExtraTreesRegressor теперь поддерживают пропущенные значения. Подробнее см. в руководстве пользователя.

import numpy as np

from sklearn.ensemble import ExtraTreesClassifier

X = np.array([0, 1, 6, np.nan]).reshape(-1, 1)
y = [0, 0, 1, 1]

forest = ExtraTreesClassifier(random_state=0).fit(X, y)
forest.predict(X)
array([0, 0, 1, 1])

Загрузка любых наборов данных из интернета

Функция datasets.fetch_file позволяет загружать файлы с любого заданного URL. Эта удобная функция обеспечивает встроенное кэширование на локальном диске, проверку целостности по дайджесту sha256 и автоматические повторные попытки при сетевых ошибках.

Её цель — обеспечить такое же удобство и надёжность, как у средств загрузки наборов данных, сохраняя при этом гибкость при работе с данными из произвольных сетевых источников и файлами различных форматов.

Загруженный файл затем можно открыть с помощью универсальных или специализированных для предметной области функций, таких как pandas.read_csv, pandas.read_parquet и т. д.

Поддержка Array API

Начиная с версии 1.5, многие другие оцениватели и функции были обновлены для поддержки входных данных, совместимых с Array API. В частности, это метаоцениватели для настройки гиперпараметров из модуля sklearn.model_selection и метрики из модуля sklearn.metrics.

Инструкции по использованию scikit-learn с библиотеками, совместимыми с Array API, такими как PyTorch и CuPy, приведены на странице поддержки Array API.

Почти полная поддержка маршрутизации метаданных

Маршрутизация метаданных теперь поддерживается всеми оставшимися оценивателями и функциями, кроме AdaBoost. Подробнее см. в руководстве пользователя по маршрутизации метаданных.

Поддержка CPython 3.13 без глобальной блокировки интерпретатора

scikit-learn получил предварительную поддержку CPython без глобальной блокировки интерпретатора; в частности, доступны free-threaded wheel-пакеты для всех поддерживаемых нами платформ.

CPython 3.13 без глобальной блокировки (также известный как nogil) — это экспериментальная версия CPython 3.13, цель которой — обеспечить эффективную работу в многопоточных сценариях за счёт удаления глобальной блокировки интерпретатора (GIL).

Подробнее о CPython без глобальной блокировки см. в документации py-free-threading, в частности о том, как установить CPython без глобальной блокировки, и о отслеживании совместимости экосистемы.

Попробуйте CPython без глобальной блокировки в своих сценариях использования и сообщите о любых проблемах!

Улучшения API для разработчиков сторонних библиотек

Мы работаем над улучшением API для разработчиков сторонних библиотек. Работа ещё продолжается, но в этом выпуске уже сделано немало. В частности:

  • Добавлена функция sklearn.utils.validation.validate_data, заменившая ранее закрытый метод BaseEstimator._validate_data. Эта функция расширяет check_array и добавляет поддержку запоминания количества и имён входных признаков.
  • Теги оценивателей переработаны и теперь являются частью публичного API через sklearn.utils.Tags. Теперь оцениватели должны переопределять метод BaseEstimator.__sklearn_tags__ вместо реализации метода _more_tags. Если вы хотите поддерживать несколько версий scikit-learn, в своём классе можно реализовать оба метода.
  • В связи с разработкой публичного API тегов мы удалили тег _xfail_checks; тесты, которые должны завершиться с ошибкой, теперь напрямую передаются в check_estimator и parametrize_with_checks. Подробности см. в соответствующей документации API.
  • Многие тесты из общего набора обновлены и теперь выводят более полезные сообщения об ошибках. Мы также добавили новые тесты, которые помогут проще выявлять и устранять возможные проблемы с вашими оценивателями.

Также доступна обновлённая версия руководства Разработка оценивателей scikit-learn, с которой мы рекомендуем ознакомиться.

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

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_release_highlights_1_6_0.ipynb

Download Python source code: plot_release_highlights_1_6_0.py

Download zipped: plot_release_highlights_1_6_0.zip

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

Основные нововведения в scikit-learn 1.8

Основные нововведения в scikit-learn 1.7

Основные нововведения в scikit-learn 1.2

Основные нововведения в scikit-learn 0.22

© 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_6_0.html

Spec-Zone.ru

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