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.55 milliseconds
Fitting the threshold classifier took 0.66 milliseconds

Обучение классификатора пороговых значений пропустило обучение внутреннего SGDClassifier. Для получения более подробной информации, обратитесь к примеру Примеры использования FrozenEstimator.

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

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

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

sklearn.set_config(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.

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

Поддержка пропущенных значений для 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.

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

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

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

Поддержка многопоточного CPython 3.13

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

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

Для получения дополнительной информации о многопоточном CPython см. документацию py-free-threading, в частности как установить многопоточный CPython и отслеживание совместимости с экосистемой.

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

END_OF_DOCUMENT_MARKER

Улучшения 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,102 секунды)

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.2

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

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

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

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

Spec-Zone.ru

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