Версия 1.4#

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

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

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

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

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

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

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

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

Версия 1.4.2#

апрель 2024

Этот выпуск включает поддержку только numpy 2.

Версия 1.4.1#

Февраль 2024

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

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

  • Исправление Исправление проблемы маршрутизации с ColumnTransformer при использовании внутри другого мета-оценщика. #28188 by Адрин Джалали.

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

  • Исправление Исправление multioutput.MultiOutputRegressor и multioutput.MultiOutputClassifier для работы с оценщиками, которые не используют метаданные при включенной маршрутизации метаданных. #28240 by Адрин Джалали.

Поддержка DataFrame#

  • Улучшение Исправление Фреймворки Pandas и Polars проверяются напрямую без проверок утиной типизации. #28195 by Томас Фан.

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

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

sklearn.calibration#

  • Исправление calibration.CalibratedClassifierCV поддерживает predict_proba с выходом float32 из внутреннего оценщика. #28247 by Томас Фан.

sklearn.cluster#

sklearn.compose#

  • Исправление compose.ColumnTransformer теперь преобразуется в polars dataframe, когда verbose_feature_names_out=True и преобразователи, внутренне использовавшие одни и те же столбцы несколько раз. Ранее это вызывало ошибку из-за дублирования имен столбцов. #28262 by Guillaume Lemaitre.

sklearn.ensemble#

  • Исправление HistGradientBoostingClassifier и HistGradientBoostingRegressor при обучении на pandas DataFrame с расширенными типами данных, например pd.Int64Dtype #28385 by Loïc Estève.

  • Исправление Исправляет сообщение об ошибке, вызванное ensemble.VotingClassifier когда цель является многометочной или многоклассовой-многозначной в формате DataFrame. #27702 by Guillaume Lemaitre.

sklearn.impute#

  • Исправление : impute.SimpleImputer теперь вызывает ошибку в .fit и .transform if fill_value не может быть приведён к типу входного значения с casting='same_kind'. #28365 by Leo Grinsztajn.

sklearn.inspection#

sklearn.linear_model#

sklearn.preprocessing#

  • Исправление make preprocessing.FunctionTransformer более снисходительный и перезаписывает имена выходных столбцов с помощью get_feature_names_out в следующих случаях: (i) имена входных и выходных столбцов остаются одинаковыми (происходит при использовании NumPy ufunc); (ii) имена входных столбцов являются числами; (iii) вывод будет установлен в фрейм данных Pandas или Polars. #28241 by Guillaume Lemaitre.

  • Исправление preprocessing.FunctionTransformer теперь также предупреждает, когда set_output вызывается с transform="polars" и func не возвращает фрейм данных Polars или feature_names_out не указано. #28263 by Guillaume Lemaitre.

  • Исправление preprocessing.TargetEncoder больше не завершается ошибкой, когда target_type="continuous" и входные данные доступны только для чтения. В частности, теперь он работает с включенным режимом copy-on-write в pandas. #28233 by John Hopfensperger.

sklearn.tree#

  • Исправление tree.DecisionTreeClassifier и tree.DecisionTreeRegressor правильно обрабатывают пропущенные значения. Внутренний критерий не инициализировался, когда в данных не было пропущенных значений, что приводило к потенциально неверным значениям критерия. #28295 by Guillaume Lemaitre и #28327 by Adam Li.

sklearn.utils#

Версия 1.4.0#

Январь 2024

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

Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.

  • Эффективность linear_model.LogisticRegression и linear_model.LogisticRegressionCV теперь имеют гораздо лучшую сходимость для решателей "lbfgs" и "newton-cg". Оба решателя теперь могут достигать гораздо более высокой точности для коэффициентов в зависимости от указанного tol. Кроме того, lbfgs может более эффективно использовать tol, т.е., остановиться раньше или достичь более высокой точности. Примечание: lbfgs является решателем по умолчанию, поэтому это изменение может повлиять на многие модели. Это изменение также означает, что с этой новой версией scikit-learn, результирующие коэффициенты coef_ и intercept_ ваших моделей изменятся для этих двух решателей (при повторном обучении на тех же данных). Величина изменения зависит от указанного tol, для малых значений вы получите более точные результаты. #26721 by Christian Lorentzen.

  • Исправление исправляет утечку памяти, наблюдаемую в PyPy для оценщиков, использующих функции потерь на Cython. #27670 by Guillaume Lemaitre.

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

  • Основная функция Трансформеры теперь поддерживают вывод в polars с set_output(transform="polars"). #27315 by Томас Фан.

  • Улучшение Все оценщики теперь распознают имена столбцов из любого датафрейма, который использует DataFrame Interchange Protocol. Dataframes, которые возвращают корректное представление через np.asarray(df) ожидается работа с нашими оценщиками и функциями. #26464 by Томас Фан.

  • Улучшение HTML-представление оценщиков теперь включает ссылку на документацию и раскрашено для обозначения, является ли оценщик обученным или нет (необученные оценщики оранжевые, обученные — синие). #26616 by Риккардо Каппуццо, Инес Ибнухсеин, Гаэль Варокво, Joel Nothman и Lilian Boulard.

  • Исправление Исправлена ошибка в большинстве оценщиков и функций, где установка параметра на большое целое число вызывала TypeError. #26648 by Naoise Holohan.

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

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

Поддержка разреженных массивов SciPy#

Несколько оценщиков теперь поддерживают разреженные массивы SciPy. Затронуты следующие функции и классы:

Функции:

Классы:

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

Несколько оценщиков и функций поддерживают Array API. Такие изменения позволяют использовать оценщики и функции с другими библиотеками, такими как JAX, CuPy и PyTorch. Это, таким образом, обеспечивает некоторые вычисления с ускорением на GPU.

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

Функции:

Классы:

Модуль приватной функции потерь#

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

sklearn.base#

sklearn.calibration#

sklearn.cluster#

  • Исправление The degree параметр в cluster.SpectralClustering конструктор теперь принимает действительные значения вместо только целочисленных значений в соответствии с degree параметр sklearn.metrics.pairwise.polynomial_kernel. #27668 by Нолан МакМахон.

  • Исправление Исправлена ошибка в cluster.OPTICS где коррекция кластера на основе предшественника не использовала правильную индексацию. Это приводило к несовместимым результатам в зависимости от порядка данных. #26459 by Хаоин Чжан и Guillaume Lemaitre.

  • Исправление Улучшено сообщение об ошибке при проверке количества связных компонентов в fit метод cluster.HDBSCAN. #27678 by Ganesh Tata.

  • Исправление Создание копии предварительно вычисленной разреженной матрицы внутри fit метод cluster.DBSCAN чтобы избежать модификации на месте разреженной матрицы. #27651 by Ganesh Tata.

  • Исправление Вызывает правильное ValueError когда metric="precomputed" и запросили сохранение центров через параметр store_centers. #27898 by Guillaume Lemaitre.

  • Изменение API kdtree и balltree значения теперь устарели и переименованы как kd_tree и ball_tree соответственно для algorithm параметр cluster.HDBSCAN обеспечение согласованности в соглашении об именовании. kdtree и balltree значения будут удалены в версии 1.6. #26744 by Shreesha Kumar Bhat.

  • Изменение API Опция metric=None в cluster.AgglomerativeClustering и cluster.FeatureAgglomeration устарел в версии 1.4 и будет удален в версии 1.6. Используйте значение по умолчанию вместо этого. #27828 by Guillaume Lemaitre.

sklearn.compose#

  • Основная функция Добавляет polars поддержка ввода для compose.ColumnTransformer через DataFrame Interchange Protocol. Минимальная поддерживаемая версия для polars — 0.19.12. #26683 by Томас Фан.

  • Исправление cluster.spectral_clustering и cluster.SpectralClustering теперь выдают явное сообщение об ошибке, указывающее, что разреженные матрицы и массивы с np.int64 индексы не поддерживаются. #27240 by Yao Xiao.

  • Изменение API выходные данные, использующие типы данных расширения pandas и содержащие pd.NA в ColumnTransformer теперь приводят к FutureWarning и вызовет ValueError в версии 1.6, если контейнер вывода не был настроен как "pandas" с set_output(transform="pandas"). Раньше такие выходы приводили к массивам numpy с типом данных object содержащий pd.NA которые не могли быть преобразованы в numpy floats и вызывали ошибки при передаче другим оценщикам scikit-learn. #27734 by Жером Докес.

sklearn.covariance#

sklearn.datasets#

  • Улучшение datasets.make_sparse_spd_matrix теперь использует более эффективную по памяти разреженную структуру. Он также принимает новый ключевой параметр sparse_format который позволяет указывать формат вывода разреженной матрицы. По умолчанию sparse_format=None, который возвращает плотный numpy ndarray, как и раньше. #27438 by Yao Xiao.

  • Исправление datasets.dump_svmlight_file теперь не вызывает исключения ValueError когда X доступен только для чтения, например, numpy.memmap экземпляр. #28111 by Yao Xiao.

  • Изменение API datasets.make_sparse_spd_matrix Алгоритм LARS, сделанный более численно устойчивым с помощью эвристик для отбрасывания слишком коррелированных регрессоров, а также для остановки пути, когда числовой шум становится преобладающим, путем dim в пользу n_dim. dim будет удален в версии 1.6. #27718 by Adam Li.

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.inspection#

sklearn.kernel_ridge#

sklearn.linear_model#

  • Эффективность linear_model.LogisticRegression и linear_model.LogisticRegressionCV теперь имеют гораздо лучшую сходимость для решателей "lbfgs" и "newton-cg". Оба решателя теперь могут достигать гораздо более высокой точности для коэффициентов в зависимости от указанного tol. Кроме того, lbfgs может более эффективно использовать tol, т.е. остановиться раньше или достичь более высокой точности. Это достигается за счет лучшего масштабирования целевой функции, т.е. использования средних потерь на выборку вместо суммы потерь на выборку. #26721 by Christian Lorentzen.

  • Эффективность linear_model.LogisticRegression и linear_model.LogisticRegressionCV с решателем "newton-cg" теперь может быть значительно быстрее для некоторых данных и настроек параметров. Это достигается за счёт улучшенной проверки сходимости линейного поиска для незначительных улучшений потерь, которая учитывает информацию о градиенте. #26721 by Christian Lorentzen.

  • Эффективность Решатель "newton-cg" в linear_model.LogisticRegression и linear_model.LogisticRegressionCV использует немного меньше памяти. Эффект пропорционален количеству коэффициентов (n_features * n_classes). #27417 by Christian Lorentzen.

  • Исправление Убедитесь, что sigma_ атрибут linear_model.ARDRegression и linear_model.BayesianRidge всегда имеет float32 dtype при обучении на float32 создает многоклассовый набор данных, распределяя каждый класс по одному нормально распределенному кластеру точек. Он предоставляет контроль над центрами и стандартными отклонениями каждого кластера. Этот набор данных используется для демонстрации кластеризации. #27899 by Оливье Гризель.

  • Изменение API Атрибут loss_function_ of linear_model.SGDClassifier и linear_model.SGDOneClassSVM устарел и будет удален в версии 1.6. #27979 by Christian Lorentzen.

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.neighbors#

sklearn.preprocessing#

sklearn.tree#

sklearn.utils#

  • Улучшение sklearn.utils.estimator_html_repr динамически адаптирует цвета диаграмм на основе prefers-color-scheme, обеспечивая улучшенную адаптируемость к темным темам окружения. #26862 by Эндрю Гох Ишенг, Томас Фан, Адрин Джалали.

  • Улучшение MetadataRequest и MetadataRouter теперь имеют consumes метод, который можно использовать для проверки, будет ли использован заданный набор параметров. #26831 by Адрин Джалали.

  • Улучшение Сделать sklearn.utils.check_array попытка вывести int32-индексированные CSR и COO массивы при конвертации из DIA массивов, если количество ненулевых элементов достаточно мало. Это гарантирует, что оценщики, реализованные на Cython и которые не принимают int64-индексированная разреженная структура данных теперь последовательно принимает те же форматы разреженного ввода для разреженных матриц и массивов SciPy. #27372 by Guillaume Lemaitre.

  • Исправление sklearn.utils.check_array должен принимать как матрицы, так и массивы из разреженного модуля SciPy. Предыдущая реализация завершалась ошибкой, если copy=True путем вызова конкретных функций NumPy np.may_share_memory который не работает с разреженными массивами SciPy и не возвращает правильный результат для разреженных матриц SciPy. #27336 by Guillaume Lemaitre.

  • Исправление check_estimators_pickle с readonly_memmap=True теперь полагается на собственную возможность joblib выделять выровненные массивы, отображённые в память, при загрузке сериализованного оценщика, вместо вызова выделенной приватной функции, которая могла бы завершиться сбоем, когда OpenBLAS неправильно определяет архитектуру процессора. #27614 by Оливье Гризель.

  • Исправление Сообщение об ошибке в check_array когда передавалась разреженная матрица, но accept_sparse является False теперь предлагает использовать .toarray() и не X.toarray(). #27757 by Lucy Liu.

  • Исправление Исправить функцию check_array для вывода правильного сообщения об ошибке когда входные данные являются Series вместо DataFrame. #28090 by Stan Furrer и Yao Xiao.

  • Изменение API sklearn.utils.extmath.log_logistic устарел и будет удалён в версии 1.6. Используйте -np.logaddexp(0, -x) вместо этого. #27544 by Christian Lorentzen.

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

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

101AlexMartin, Abhishek Singh Kushwah, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Alex, Alexander Al-Feghali, Alexis IMBERT, AlexL, Alex Molas, Anam Fatima, Andrew Goh, andyscanzio, Aniket Patil, Artem Kislovskiy, Arturo Amor, ashah002, avm19, Ben Holmes, Ben Mares, Benoit Chevallier-Mames, Bharat Raghunathan, Binesh Bannerjee, Brendan Lu, Brevin Kunde, Camille Troillard, Carlo Lemos, Chad Parmet, Christian Clauss, Christian Lorentzen, Christian Veenhuis, Christos Aridas, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, cynthias13w, DaminK, Daniele Ongari, Daniel Schmitz, Daniel Tinoco, David Brochart, Deborah L. Haar, DevanshKyada27, Dimitri Papadopoulos Orfanos, Dmitry Nesterov, DUONG, Edoardo Abati, Eitan Hemed, Elabonga Atuo, Elisabeth Günther, Emma Carballal, Emmanuel Ferdman, epimorphic, Erwan Le Floch, Fabian Egli, Filip Karlo Došilović, Florian Idelberger, Franck Charras, Gael Varoquaux, Ganesh Tata, Hleb Levitski, Guillaume Lemaitre, Haoying Zhang, Harmanan Kohli, Ily, ioangatop, IsaacTrost, Isaac Virshup, Iwona Zdzieblo, Jakub Kaczmarzyk, James McDermott, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, John Cant, John Hopfensperger, Jona Sassenhagen, Jon Nordby, Julien Jerphanion, Kennedy Waweru, kevin moore, Kian Eliasi, Kishan Ved, Konstantinos Pitas, Koustav Ghosh, Kushan Sharma, ldwy4, Linus, Lohit SundaramahaLingam, Loic Esteve, Lorenz, Louis Fouquet, Lucy Liu, Luis Silvestrin, Lukáš Folwarczný, Lukas Geiger, Malte Londschien, Marcus Fraaß, Marek Hanuš, Maren Westermann, Mark Elliot, Martin Larralde, Mateusz Sokół, mathurinm, mecopur, Meekail Zain, Michael Higgins, Miki Watanabe, Milton Gomez, MN193, Mohammed Hamdy, Mohit Joshi, mrastgoo, Naman Dhingra, Naoise Holohan, Narendra Singh dangi, Noa Malem-Shinitski, Nolan, Nurseit Kamchyev, Oleksii Kachaiev, Olivier Grisel, Omar Salman, partev, Peter Hull, Peter Steinbach, Pierre de Fréminville, Pooja Subramaniam, Puneeth K, qmarcou, Quentin Barthélemy, Rahil Parikh, Rahul Mahajan, Raj Pulapakura, Raphael, Ricardo Peres, Riccardo Cappuzzo, Roman Lutz, Salim Dohri, Samuel O. Ronsin, Sandip Dutta, Sayed Qaiser Ali, scaja, scikit-learn-bot, Sebastian Berg, Shreesha Kumar Bhat, Shubhal Gupta, Søren Fuglede Jørgensen, Stefanie Senger, Tamara, Tanjina Afroj, THARAK HEGDE, thebabush, Thomas J. Fan, Thomas Roehr, Tialo, Tim Head, tongyu, Venkatachalam N, Vijeth Moudgalya, Vincent M, Vivek Reddy P, Vladimir Fokow, Xiao Yuan, Xuefeng Xu, Yang Tao, Yao Xiao, Yuchen Zhou, Yuusuke Hiramatsu