Версия 1.5#

Для краткого описания основных особенностей выпуска, пожалуйста, обратитесь к Основные новости выпуска scikit-learn 1.5.

Легенда для списков изменений

  • Основная функция что-то большое, что вы не могли сделать раньше.

  • Функция что-то, что вы не могли делать раньше.

  • Эффективность существующий признак теперь может не требовать столько вычислений или памяти.

  • Улучшение различные мелкие улучшения.

  • Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.

  • Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.

Версия 1.5.2#

Сентябрь 2024

Изменения, затрагивающие многие модули#

  • Исправление Исправлена регрессия производительности в нескольких модулях Cython в sklearn._loss, sklearn.manifold, sklearn.metrics и sklearn.utils, которые были собраны без поддержки OpenMP. #29694 by Лоик Эстев.

Журнал изменений#

sklearn.calibration#

  • Исправление Вызывать ошибку, когда LeaveOneOut используется в cv, соответствуя тому, что произошло бы, если KFold(n_splits=n_samples) использовался. #29545 by Lucy Liu

sklearn.compose#

  • Исправление Исправлено compose.TransformedTargetRegressor не вызывать UserWarning если выход преобразования установлен в pandas или polars, поскольку это не преобразователь. #29401 by Stefanie Senger.

sklearn.decomposition#

  • Исправление Увеличить порог недостатка ранга на этапе отбеливания в decomposition.FastICA с whiten_solver="eigh" для повышения платформонезависимости оценщика. #29612 by Оливье Гризель.

sklearn.metrics#

sklearn.svm#

  • Исправление Исправлена регрессия в svm.SVC и svm.SVR таким образом, что мы принимаем C=float("inf"). #29780 by Guillaume Lemaitre.

Версия 1.5.1#

Июль 2024

Изменения, затрагивающие многие модули#

  • Исправление Исправлена регрессия в проверке входных данных всех оценщиков, где возникала неожиданная ошибка при передаче DataFrame, основанного на буфере только для чтения. #29018 by Жереми дю Буаберранже.

  • Исправление Исправлена регрессия, вызывающая взаимную блокировку во время импорта в некоторых настройках. #29235 by Жереми дю Буаберранже.

Журнал изменений#

sklearn.compose#

sklearn.metrics#

  • Исправление Исправлена регрессия в metrics.r2_score. Передача тензоров torch CPU с отключенной диспетчеризацией API массивов будет жаловаться на устройства не-CPU вместо неявного преобразования этих входных данных как обычных массивов NumPy. #29119 by @Olivier Grisel.

  • Исправление Исправлена регрессия в metrics.zero_one_loss вызывает ошибку при диспетчеризации Array API с многометочными входными данными. #29269 by Ярослав Коробко.

sklearn.model_selection#

sklearn.tree#

  • Исправление Исправлена проблема в tree.export_graphviz и tree.plot_tree что потенциально может привести к исключению или неверным результатам на 32-битных ОС. #29327 by Loïc Estève.

sklearn.utils#

  • Изменение API utils.validation.check_array имеет новый параметр force_writeable, чтобы контролировать возможность записи выходного массива. Если установлено в True, выходной массив будет гарантированно доступен для записи, и копия будет создана, если входной массив доступен только для чтения. Если установлено False, не гарантируется возможность записи в выходной массив. #29018 by Жереми дю Буаберранже.

Версия 1.5.0#

Май 2024

Безопасность#

  • Исправление feature_extraction.text.CountVectorizer и feature_extraction.text.TfidfVectorizer больше не хранят отброшенные токены из обучающего набора в своих stop_words_ атрибут. Этот атрибут содержал бы слишком частые (выше max_df) но и слишком редкие токены (ниже min_df). Это устраняет потенциальную проблему безопасности (утечка данных), если отброшенные редкие токены содержат конфиденциальную информацию из обучающего набора без ведома разработчика модели.

    Примечание: пользователям этих классов рекомендуется либо переобучить свои пайплайны с новой версией scikit-learn, либо вручную очистить stop_words_ атрибут из ранее обученных экземпляров этих трансформеров. Этот атрибут был разработан только для целей инспекции модели и не влияет на поведение трансформеров. #28823 by Оливье Гризель.

Измененные модели#

  • Эффективность Подвыборка в preprocessing.QuantileTransformer теперь более эффективен для плотных массивов, но подобранные квантили и результаты transform может немного отличаться от предыдущего (сохраняя те же статистические свойства). #27344 by Xuefeng Xu.

  • Улучшение decomposition.PCA, decomposition.SparsePCA и decomposition.TruncatedSVD теперь устанавливают знак components_ атрибут на основе значений компонентов вместо использования преобразованных данных в качестве ссылки. Это изменение необходимо для обеспечения согласованных знаков компонентов во всех PCA солверы, включая новый svd_solver="covariance_eigh" опция, представленная в этом выпуске.

Изменения, затрагивающие многие модули#

Поддержка Array API#

Дополнительные оценщики и функции были обновлены для включения поддержки всех Array API соответствующие входные данные.

См. Поддержка Array API (экспериментальная) для получения дополнительной информации.

Функции:

Классы:

Поддержка сборки с помощью Meson#

Начиная с scikit-learn 1.5, Meson является основным поддерживаемым способом сборки scikit-learn.

Если не будет обнаружен серьезный блокирующий фактор, поддержка setuptools будет удалена в scikit-learn 1.6. Релизы 1.5.x будут поддерживать сборку scikit-learn с setuptools.

Поддержка Meson для сборки scikit-learn была добавлена в #28040 by Loïc Estève

Маршрутизация метаданных#

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

  • Функция impute.IterativeImputer теперь поддерживает маршрутизацию метаданных в своём fit метод. #28187 by Stefanie Senger.

  • Функция ensemble.BaggingClassifier и ensemble.BaggingRegressor теперь поддерживают маршрутизацию метаданных. Методы fit теперь принимают **fit_params которые передаются базовым оценщикам через их fit методы. #28432 by Adam Li и Бенджамин Боссан.

  • Функция linear_model.RidgeCV и linear_model.RidgeClassifierCV теперь поддерживают маршрутизацию метаданных в своих fit метод и маршрутизация метаданных к базовому model_selection.GridSearchCV объект или базовую метрику. #27560 by Omar Salman.

  • Функция GraphicalLassoCV теперь поддерживает маршрутизацию метаданных в своем fit метод и направляет метаданные в разделитель перекрестной проверки. #27566 by Omar Salman.

  • Функция linear_model.RANSACRegressor теперь поддерживает маршрутизацию метаданных в своем fit, score и predict методы и направляют метаданные в базовый оценщик fit, score и predict методы. #28261 by Stefanie Senger.

  • Функция ensemble.VotingClassifier и ensemble.VotingRegressor теперь поддерживают маршрутизацию метаданных и передают **fit_params к базовым оценщикам через их fit методы. #27584 by Stefanie Senger.

  • Функция pipeline.FeatureUnion теперь поддерживает маршрутизацию метаданных в своем fit и fit_transform методами и направлять метаданные в базовые преобразователи fit и fit_transform. #28205 by Stefanie Senger.

  • Исправление Исправлена проблема при разрешении запросов маршрутизации по умолчанию, установленных через атрибуты класса. #28435 by Адрин Джалали.

  • Исправление Исправлена проблема, когда set_{method}_request методы используются как несвязанные методы, что может произойти при попытке их декорирования. #28651 by Адрин Джалали.

  • Исправление Предотвратить RecursionError когда оценки с параметром по умолчанию scoring param (None) маршрутизация метаданных. #28712 by Stefanie Senger.

Журнал изменений#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

  • Функция Обученная compose.ColumnTransformer теперь реализует __getitem__ который возвращает обученные преобразователи по имени. #27990 by Томас Фан.

  • Улучшение compose.TransformedTargetRegressor теперь вызывает ошибку в fit если только inverse_func предоставляется без func (что по умолчанию было бы тождественным преобразованием) также явно установлено. #28483 by Stefanie Senger.

  • Улучшение compose.ColumnTransformer теперь может раскрывать «остаточные» столбцы в обученном transformers_ атрибут как имена столбцов или булевы маски, а не индексы столбцов. #27657 by Жером Докес.

  • Исправление Исправлена ошибка в compose.ColumnTransformer с n_jobs > 1, где промежуточные выбранные столбцы передавались трансформерам как массивы только для чтения. #28822 by Жереми дю Буаберранже.

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

  • Эффективность decomposition.PCA с svd_solver="full" теперь назначает последовательный components_ атрибут вместо несмежного среза сингулярных векторов. Когда n_components << n_features, это может сэкономить память и, что более важно, ускорить последующие вызовы transform метод более чем на порядок за счет использования локальности кэша BLAS GEMM на непрерывных массивах. #27491 by Оливье Гризель.

  • Улучшение PCA теперь автоматически выбирает решатель ARPACK для разреженных входных данных, когда svd_solver="auto" вместо вызова ошибки. #28498 by Thanh Lam Dang.

  • Улучшение decomposition.PCA теперь поддерживает новый параметр solver с именем svd_solver="covariance_eigh" который предлагает ускорение на порядок величины и снижение использования памяти для наборов данных с большим количеством точек данных и небольшим количеством признаков (например, n_samples >> 1000 > n_features). svd_solver="auto" параметр был обновлен для автоматического использования нового решателя для таких наборов данных. Этот решатель также принимает разреженные входные данные. #27491 by Оливье Гризель.

  • Исправление decomposition.PCA обучение с svd_solver="arpack", whiten=True и значение для n_components который больше ранга обучающего набора, больше не возвращает бесконечные значения при преобразовании отложенных данных. #27491 by Оливье Гризель.

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.impute#

sklearn.inspection#

sklearn.linear_model#

sklearn.manifold#

  • Изменение API Устаревает n_iter в пользу max_iter в manifold.TSNE. n_iter будет удалено в версии 1.7. Это делает manifold.TSNE согласовано с остальными оценщиками. #28471 by Lucy Liu

sklearn.metrics#

  • Функция metrics.pairwise_distances поддерживает вычисление попарных расстояний для нечисловых массивов. Это поддерживается только через пользовательские метрики. #27456 by Venkatachalam N, Кшитидж Матур и Джулиан Либизеллер-Эггер.

  • Функция sklearn.metrics.check_scoring теперь возвращает многометрический оценщик когда scoring в качестве dict, set, tuple, или list. #28360 by Томас Фан.

  • Функция metrics.d2_log_loss_score был добавлен, который вычисляет оценку D^2 для логарифмических потерь. #28351 by Omar Salman.

  • Эффективность Улучшить эффективность функций brier_score_loss, calibration_curve, det_curve, precision_recall_curve, roc_curve когда pos_label указан аргумент. Также улучшена эффективность методов from_estimator и from_predictions в RocCurveDisplay, PrecisionRecallDisplay, DetCurveDisplay, CalibrationDisplay. #28051 by Пьер де Фреминвиль.

  • Исправление metrics.classification_report теперь показывает только точность, а не микро-среднее, когда ввод является подмножеством меток. #28399 by Vineet Joshi.

  • Исправление Исправление взаимной блокировки OpenBLAS 0.3.26 в Windows при вычислении попарных расстояний. Это, вероятно, повлияет на алгоритмы, основанные на соседях. #28692 by Loïc Estève.

  • Изменение API metrics.precision_recall_curve Алгоритм LARS, сделанный более численно устойчивым с помощью эвристик для отбрасывания слишком коррелированных регрессоров, а также для остановки пути, когда числовой шум становится преобладающим, путем probas_pred в пользу y_score. probas_pred будет удалено в версии 1.7. #28092 by Adam Li.

  • Изменение API metrics.brier_score_loss Алгоритм LARS, сделанный более численно устойчивым с помощью эвристик для отбрасывания слишком коррелированных регрессоров, а также для остановки пути, когда числовой шум становится преобладающим, путем y_prob в пользу y_proba. y_prob будет удалено в версии 1.7. #28092 by Adam Li.

  • Изменение API Для классификаторов и метрик классификации, метки, закодированные как байты, устарели и будут вызывать ошибку в v1.7. #18555 by Kaushik Amar Das.

sklearn.mixture#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.pipeline#

  • Функция pipeline.FeatureUnion теперь может использовать verbose_feature_names_out атрибут. Если True, get_feature_names_out будет добавлять префикс ко всем именам признаков с именем преобразователя, который сгенерировал этот признак. Если False, get_feature_names_out не будет добавлять префиксы к названиям признаков и выдаст ошибку, если названия признаков не уникальны. #25991 by Jiawei Zhang.

sklearn.preprocessing#

sklearn.tree#

  • Улучшение Построение деревьев в matplotlib через tree.plot_tree теперь показывают метку "True/False", чтобы указать направленность, по которой образцы проходят при условии разделения. #28552 by Adam Li.

sklearn.utils#

  • Исправление _safe_indexing теперь работает корректно для polars DataFrame, когда axis=0 и поддерживает индексацию серий polars. #28521 by Yao Xiao.

  • Изменение API utils.IS_PYPY устарел и будет удалён в версии 1.7. #28768 by Жереми дю Буаберранже.

  • Изменение API utils.tosequence устарел и будет удалён в версии 1.7. #28763 by Жереми дю Буаберранже.

  • Изменение API utils.parallel_backend и utils.register_parallel_backend устарели и будут удалены в версии 1.7. Используйте joblib.parallel_backend и joblib.register_parallel_backend вместо этого. #28847 by Жереми дю Буаберранже.

  • Изменение API Выдать информативное предупреждение в type_of_target при представлении в виде байтов. Для классификаторов и метрик классификации, метки, закодированные как байты, устарели и будут вызывать ошибку в версии 1.7. #18555 by Kaushik Amar Das.

  • Изменение API utils.estimator_checks.check_estimator_sparse_data была разделена на две функции: utils.estimator_checks.check_estimator_sparse_matrix и utils.estimator_checks.check_estimator_sparse_array. #27576 by Stefanie Senger.

Участники кода и документации

Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 1.4, включая:

101AlexMartin, Абдулазиз Алокили, Адам Дж. Стюарт, Адам Ли, Адарш Вас, Адейеми Биола, Адити Джунджа, Адрин Джалали, Адвик Синха, Айша, Акаш Шривастава, Акихиро Куно, Алан Гуэдес, Альберто Торрес, Алексис ИМБЕРТ, alexqiao, Ана Паула Гомес, Андерсон Нельсон, Андрей Дзис, Ариф Кодари, Арно Капитен, Артуро Амор, Асватавикки, Одри Фландерс, awwwyan, baggiponte, Бхарат Рагхунатхан, bme-git, brdav, Брендан Лу, Бригитта Сипёц, Бруно, Кайлин Картер, Семлин, Кристиан Лоренцен, Кристиан Венхейс, Синди Лян, Клаудио Сальваторе Арчидиаконо, Коннор Бойл, Конрад Стивенс, crispinlogan, Дэвид Мэтью Черни, Давиде Чикко, davidleon123, dependabot[bot], ДерВе, dinga92, Дипан Баник, Дрю Крейтон, Дуарте Сан-Жозе, ДУОНГ, Эдди Бергман, Эдоардо Абати, Эгехан Гюндюз, Эмад Изадифар, ЭмилиСиньи, Эрих Шуберт, Эвелин, Филип Карло Дошилович, Франк Шаррас, Гаэль Варо, Гёнюль Айджы, Гийом Леметр, Гёнджэ Чой, Харманан Кохли, Хонг Сян Юэ, Ян Фауст, Илья Комаров, itsaphel, Иван Виряди, Джек Боуэр, Хавьер Марин Тур, Жереми дю Буаберранже, Жером Докес, Цзявэй Чжан, Жуан Мораис, Джо Кейни, Джоэл Нотман, Йоханна Байер, Джон Кант, Джон Энблом, Джон Хопфенспергер, jpcars, jpienaar-tuks, Джулиан Чан, Джулиан Либизеллер-Эггер, Жюльен Жерфанион, КанчиМо, Каушик Амар Дас, keyber, Коустав Гхош, kraktus, Крсто Пророкович, Ларс, ldwy4, ЛеоГрин, lihaitao, Линус Зоммер, Лоик Эстеве, Люси Лю, Лукас Гейгер, m-maggi, manasimj, Мануэль Лаббе, Мануэль Моралес, Марко Эдвард Горелли, Марко Вольша, Марен Вестерманн, Мария Влайич, Марк Эллиот, Мартин Хельм, Матеуш Сокул, mathurinm, Mavs, Майкл Доусон, Майкл Хиггинс, Майкл Майер, miguelcsilva, Мики Ватанабе, Мохаммед Хамди, myenugula, Натан Голдбаум, Назия Махимкар, nbrown-ScottLogic, Нето, Нитиш Болледдула, notPlancha, Оливье Гризель, Омар Салман, ПарсифальСю, Патрик Ван, Пьер де Фреминвиль, Пиотр, Приянк Шрофф, Приянш Гупта, Прияш Шах, Пунит К, Рахил Парих, raisadz, Радж Пулапакура, Ральф Гоммерс, Ральф Урлус, Рандольф Шольц, renaissance0ne, Решама Шайх, Ричард Барнс, Роберт Поллак, Роберто Розати, Родриго Ромеро, rwelsch427, Саад Махмуд, Салим Дохри, Сандип Дутта, СараРемус, scikit-learn-bot, Шахарияр Чоудри, Шубхам, sperret6, Стефани Зенгер, Штеффен Шнайдер, Суха Сиддики, Тхань Лам ДАНГ, thebabush, Томас, Томас Дж. Фан, Томас Лазарус, Тиало, Тим Хед, Тушин Шарма, Тушар Парими, ВарунЧадувула, Винет Джоши, virchan, Ваэль Букхобза, Weyb, Уилл Дин, Ксавье Бельтран, Сяо Юань, Сюэфэн Сю, Яо Сяо, yareyaredesuyo, Зиад Амерр, Штепан Сршен