Примечание
Перейти к концу для скачивания полного примера кода. или для запуска этого примера в вашем браузере через 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 в своих сценариях использования и сообщите о любых проблемах!
Улучшения 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 секунды)
Связанные примеры
© 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