Версия 1.3#

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

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

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

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

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

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

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

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

Версия 1.3.2#

Октябрь 2023

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

sklearn.datasets#

  • Исправление Все загрузчики наборов данных теперь принимают data_home как любой объект, который реализует os.PathLike интерфейс, например, pathlib.Path. #27468 by Yao Xiao.

sklearn.decomposition#

  • Исправление Исправлена ошибка в decomposition.KernelPCA путём принудительного вывода внутреннего preprocessing.KernelCenterer быть массивом по умолчанию. Когда используется решатель arpack, он ожидает массив с dtype атрибут. #27583 by Guillaume Lemaitre.

sklearn.metrics#

  • Исправление Исправляет ошибку для метрик, использующих zero_division=np.nan (например, precision_score) внутри параллельного цикла (например, cross_val_score), где синглтон для np.nan будет отличаться в подпроцессах. #27573 by Guillaume Lemaitre.

sklearn.tree#

  • Исправление Не допускайте утечки данных через неинициализированную память в файлах pickle деревьев решений и сделайте генерацию этих файлов детерминированной. #27580 by Loïc Estève.

Версия 1.3.1#

Сентябрь 2023

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

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

  • Исправление Модели Ridge с solver='sparse_cg' может давать немного разные результаты с scipy>=1.12, из-за изменения в решателе scipy (см. scipy#18488 для получения дополнительных сведений) #26814 by Loïc Estève

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

  • Исправление The set_output API корректно работает со списком входных данных. #27044 by Томас Фан.

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

sklearn.calibration#

  • Исправление calibration.CalibratedClassifierCV теперь может обрабатывать модели, которые производят большие оценки предсказаний. Раньше это было численно нестабильно. #26913 by Omar Salman.

sklearn.cluster#

sklearn.cross_decomposition#

sklearn.ensemble#

  • Исправление Исправлена ошибка в ensemble.AdaBoostClassifier с algorithm="SAMME" где решающая функция каждого слабого ученика должна быть симметричной (т.е. сумма оценок должна суммироваться в ноль для выборки). #26521 by Guillaume Lemaitre.

sklearn.feature_selection#

sklearn.impute#

  • Исправление impute.KNNImputer теперь корректно добавляет столбец с индикатором пропущенных значений в transform когда add_indicator установлено в True и пропущенные значения наблюдаются во время fit. #26600 by Shreesha Kumar Bhat.

sklearn.metrics#

  • Исправление Оценщики, используемые с metrics.get_scorer правильно обрабатывать матрицу мультиметок-индикаторов. #27002 by Guillaume Lemaitre.

sklearn.mixture#

  • Исправление Инициализация mixture.GaussianMixture от пользователя precisions_init для covariance_type of full или tied был некорректен и был исправлен. #26416 by Ян Тао.

sklearn.neighbors#

  • Исправление neighbors.KNeighborsClassifier.predict больше не вызывает исключение для pandas.DataFrames ввод. #26772 by Жереми дю Буаберранже.

  • Исправление Восстановить sklearn.neighbors.BallTree.valid_metrics и sklearn.neighbors.KDTree.valid_metrics как публичные атрибуты класса. #26754 by Julien Jerphanion.

  • Исправление sklearn.model_selection.HalvingRandomSearchCV больше не вызывает исключение, когда входные данные для param_distributions параметр представляет собой список словарей. #26893 by Stefanie Senger.

  • Исправление Оценщики на основе соседей теперь корректно работают, когда metric="minkowski" и параметр metric p находится в диапазоне 0 < p < 1, независимо от dtype of X. #26760 by Shreesha Kumar Bhat.

sklearn.preprocessing#

sklearn.tree#

  • Исправление tree.plot_tree теперь принимает class_names=True как задокументировано. #26903 by Томас Рёр

  • Исправление The feature_names параметр tree.plot_tree теперь принимает любой массивоподобный объект вместо только списка. #27292 by Rahil Parikh.

Версия 1.3.0#

Июнь 2023

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

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

  • Улучшение multiclass.OutputCodeClassifier.predict теперь использует более эффективное сокращение попарных расстояний. Как следствие, стратегия разрешения ничьих отличается, и поэтому предсказанные метки могут быть другими. #25196 by Guillaume Lemaitre.

  • Улучшение The fit_transform метод decomposition.DictionaryLearning более эффективен, но может давать разные результаты по сравнению с предыдущими версиями, когда transform_algorithm не то же самое, что fit_algorithm и количество итераций мало. #24871 by Omar Salman.

  • Улучшение The sample_weight параметр теперь будет использоваться при инициализации центроидов для cluster.KMeans, cluster.BisectingKMeans и cluster.MiniBatchKMeans. Это изменение нарушит обратную совместимость, поскольку числа, сгенерированные из тех же случайных начальных значений, будут разными. #25752 by Hleb Levitski, Жереми дю Буаберранже, Guillaume Lemaitre.

  • Исправление Более последовательно обрабатывать малые значения в W и H матриц во время fit и transform шаги decomposition.NMF и decomposition.MiniBatchNMF что может давать результаты, отличные от предыдущих версий. #25438 by Йотам Авидар-Константини.

  • Исправление decomposition.KernelPCA может давать разные результаты через inverse_transform if gamma является None. Теперь он будет выбран правильно как 1/n_features данных, на которых он обучен, в то время как ранее он мог быть ошибочно выбран как 1/n_features данных, переданных в inverse_transform. Новый атрибут gamma_ предоставляется для раскрытия фактического значения gamma используется каждый раз при вызове ядра. #26337 by Yao Xiao.

Измененные отображения#

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

Экспериментальный / В разработке#

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

sklearn#

  • Функция Добавлена новая опция skip_parameter_validation, к функции sklearn.set_config и контекстный менеджер sklearn.config_context, что позволяет пропустить проверку параметров, передаваемых оценщикам и публичным функциям. Это может быть полезно для ускорения кода, но следует использовать с осторожностью, так как это может привести к неожиданному поведению или вызвать неясные сообщения об ошибках при установке недопустимых параметров. #25815 by Жереми дю Буаберранже.

sklearn.base#

  • Функция A __sklearn_clone__ протокол теперь доступен для переопределения поведения по умолчанию base.clone. #24568 by Томас Фан.

  • Исправление base.TransformerMixin сейчас сохраняет класс namedtuple, если transform возвращает namedtuple. #26121 by Томас Фан.

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

  • Исправление compose.ColumnTransformer вызывает информативную ошибку, когда отдельные преобразователи ColumnTransformer выводить pandas датафреймы с индексами, которые не согласованы друг с другом, и вывод настроен на pandas. #26286 by Томас Фан.

  • Исправление compose.ColumnTransformer корректно устанавливает вывод остатка, когда set_output вызывается. #26323 by Томас Фан.

sklearn.covariance#

sklearn.datasets#

  • Улучшение Позволяет переопределить параметры, используемые для открытия ARFF файла, с помощью параметра read_csv_kwargs в datasets.fetch_openml при использовании парсера pandas. #26433 by Guillaume Lemaitre.

  • Исправление datasets.fetch_openml возвращает улучшенные типы данных, когда as_frame=True и parser="liac-arff". #26386 by Томас Фан.

  • Исправление Согласно спецификациям ARFF, только маркер "?" теперь считается как пропущенное значение при открытии файлов ARFF, полученных с помощью datasets.fetch_openml Максимальная ошибка read_csv_kwargs позволяет переопределить это поведение. #26551 by Guillaume Lemaitre.

  • Исправление datasets.fetch_openml будет последовательно использовать np.nan как маркер пропущенных значений с обоими парсерами "pandas" и "liac-arff". #26579 by Guillaume Lemaitre.

  • Изменение API The data_transposed аргумент datasets.make_sparse_coded_signal устарел и будет удален в v1.5. #25784 by @Jérémie du Boisberranger.

sklearn.decomposition#

sklearn.discriminant_analysis#

sklearn.ensemble#

sklearn.exceptions#

  • Функция Добавлен exceptions.InconsistentVersionWarning которая возникает когда оценщик scikit-learn распаковывается с версией scikit-learn, которая несовместима с версией scikit-learn, с которой оценщик был упакован. #25297 by Томас Фан.

sklearn.feature_extraction#

  • Изменение API feature_extraction.image.PatchExtractor теперь следует API трансформеров scikit-learn. Этот класс определен как трансформер без состояния, что означает, что не требуется вызывать fit перед вызовом transform. Проверка параметров происходит только при fit time. #24230 by Guillaume Lemaitre.

sklearn.feature_selection#

sklearn.impute#

sklearn.inspection#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.gaussian_process#

  • Исправление gaussian_process.GaussianProcessRegressor имеет новый аргумент n_targets, который используется для определения количества выходов при выборке из априорных распределений. #23099 by Zhehao Liu.

sklearn.mixture#

  • Эффективность mixture.GaussianMixture теперь более эффективен и будет обходить ненужную инициализацию, если веса, средние и точности предоставлены пользователями. #26021 by Jiawei Zhang.

sklearn.model_selection#

  • Основная функция Добавлен класс model_selection.ValidationCurveDisplay которая позволяет легко строить графики кривых валидации, полученных функцией model_selection.validation_curve. #25120 by Guillaume Lemaitre.

  • Изменение API Параметр log_scale в методе plot класса model_selection.LearningCurveDisplay был устаревшим в 1.3 и будет удален в 1.5. Масштаб по умолчанию можно переопределить, установив его непосредственно на ax объект и будет установлен автоматически из интервала точек данных в противном случае. #25120 by Guillaume Lemaitre.

  • Улучшение model_selection.cross_validate принимает новый параметр return_indices возвращать индексы обучающей и тестовой выборок для каждого разделения кросс-валидации. #25659 by Guillaume Lemaitre.

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

  • Исправление neural_network.MLPRegressor и neural_network.MLPClassifier сообщает правильный n_iter_ когда warm_start=True. Это соответствует количеству итераций, выполненных при текущем вызове fit вместо общего количества итераций, выполненных с момента инициализации оценщика. #25443 by Марвин Кравучке.

sklearn.pipeline#

  • Функция pipeline.FeatureUnion теперь может использовать нотацию индексации (например, feature_union["scalar"]) для доступа к трансформаторам по имени. #25093 by Томас Фан.

  • Функция pipeline.FeatureUnion теперь может получить доступ к feature_names_in_ атрибут, если X значение, наблюдаемое во время .fit имеет columns атрибут и все столбцы являются строками. Например, когда X является pandas.DataFrame #25220 by Иэн Томпсон.

  • Исправление pipeline.Pipeline.fit_transform теперь вызывает AttributeError если последний шаг конвейера не поддерживает fit_transform. #26325 by Адрин Джалали.

sklearn.preprocessing#

  • Основная функция Вводит preprocessing.TargetEncoder что является категориальным кодированием на основе среднего целевой переменной, условного по значению категории. #25334 by Томас Фан.

  • Функция preprocessing.OrdinalEncoder теперь поддерживает группировку редких категорий в один признак. Группировка редких категорий включается указанием способа выбора редких категорий с помощью min_frequency или max_categories. #25677 by Томас Фан.

  • Улучшение preprocessing.PolynomialFeatures теперь вычисляет количество развернутых членов априори при работе с разреженными csr матрицы для оптимизации выбора dtype для indices и indptr. Теперь он может выводить csr матрицы с np.int32 indices/indptr компонентов, когда элементов достаточно мало, и автоматически использует np.int64 для достаточно больших матриц. #20524 by niuk-a и #23731 by Meekail Zain

  • Улучшение Новый параметр sparse_output был добавлен в preprocessing.SplineTransformer, доступно начиная с SciPy 1.8. Если sparse_output=True, preprocessing.SplineTransformer возвращает разреженную матрицу CSR. #24145 by Christian Lorentzen.

  • Улучшение Добавляет feature_name_combiner параметр для preprocessing.OneHotEncoder. Это задает пользовательскую вызываемую функцию для создания имен признаков, возвращаемых preprocessing.OneHotEncoder.get_feature_names_out. Вызываемый объект объединяет входные аргументы (input_feature, category) в строку. #22506 by Марио Костелац.

  • Улучшение Добавлена поддержка для sample_weight в preprocessing.KBinsDiscretizer. Это позволяет указать параметр sample_weight для каждого образца, который будет использоваться при обучении. Опция доступна только когда strategy установлено в quantile и kmeans. #24935 by Seladus, Guillaume Lemaitre, и Dea María Léon, #25257 by Hleb Levitski.

  • Улучшение Подвыборка через subsample параметр теперь можно использовать в preprocessing.KBinsDiscretizer независимо от используемой стратегии. #26424 by Жереми дю Буаберранже.

  • Исправление preprocessing.PowerTransformer теперь корректно сохраняет Pandas Index, когда set_config(transform_output="pandas"). #26454 by Томас Фан.

  • Исправление preprocessing.PowerTransformer теперь корректно вызывает ошибку при использовании method="box-cox" на данных с константой np.nan столбец. #26400 by Yao Xiao.

  • Исправление preprocessing.PowerTransformer с method="yeo-johnson" теперь оставляет постоянные признаки неизменными вместо преобразования с произвольным значением для lambdas_ подобранный параметр. #26566 by Жереми дю Буаберранже.

  • Изменение API Значение по умолчанию для subsample параметр preprocessing.KBinsDiscretizer изменится с None to 200_000 в версии 1.5, когда strategy="kmeans" или strategy="uniform". #26424 by Жереми дю Буаберранже.

sklearn.svm#

sklearn.tree#

  • Основная функция tree.DecisionTreeRegressor и tree.DecisionTreeClassifier поддерживает пропущенные значения, когда splitter='best' и критерий равен gini, entropy, или log_loss, для классификации или squared_error, friedman_mse, или poisson для регрессии. #23595, #26376 by Томас Фан.

  • Улучшение Добавляет class_names параметр для tree.export_text. Это позволяет указать параметр class_names для каждого целевого класса в порядке возрастания числовых значений. #25387 by William M и crispinlogan.

  • Исправление tree.export_graphviz и tree.export_text теперь принимает feature_names и class_names как array-like, а не списки. #26289 by Yao Xiao

sklearn.utils#

  • Исправление Исправления utils.check_array для правильного преобразования pandas extension arrays. #25813 и #26106 by Томас Фан.

  • Исправление utils.check_array теперь поддерживает pandas DataFrames с расширенными массивами и типами object, возвращая ndarray с типом object. #25814 by Томас Фан.

  • Изменение API utils.estimator_checks.check_transformers_unfitted_stateless был введен, чтобы гарантировать, что stateless трансформеры не вызывают NotFittedError во время transform без предварительного вызова fit или fit_transform. #25190 by Vincent Maladière.

  • Изменение API A FutureWarning теперь вызывается при создании экземпляра класса, который наследуется от устаревшего базового класса (т.е. декорированного utils.deprecated) и который переопределяет __init__ метод. #25733 by Бригитта Сипёч и Жереми дю Буаберранже.

sklearn.semi_supervised#

Разное#

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

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

2357juan, Abhishek Singh Kushwah, Adam Handke, Adam Kania, Adam Li, adienes, Admir Demiraj, adoublet, Adrin Jalali, A.H.Mansouri, Ahmedbgh, Ala-Na, Alex Buzenet, AlexL, Ali H. El-Kassas, amay, András Simon, André Pedersen, Andrew Wang, Ankur Singh, annegnx, Ansam Zedan, Anthony22-dev, Artur Hermano, Arturo Amor, as-90, ashah002, Ashish Dutt, Ashwin Mathur, AymericBasset, Azaria Gebremichael, Barata Tripramudya Onggo, Benedek Harsanyi, Benjamin Bossan, Bharat Raghunathan, Binesh Bannerjee, Boris Feld, Brendan Lu, Brevin Kunde, cache-missing, Camille Troillard, Carla J, carlo, Carlo Lemos, c-git, Changyao Chen, Chiara Marmo, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, crispinlogan, Da-Lan, DanGonite57, Dave Berenbaum, davidblnc, david-cortes, Dayne, Dea María Léon, Denis, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, Dmitry Nesterov, Dominic Fox, Dominik Prodinger, Edern, Ekaterina Butyugina, Elabonga Atuo, Emir, farhan khan, Felipe Siola, futurewarning, Gael Varoquaux, genvalen, Hleb Levitski, Guillaume Lemaitre, gunesbayir, Haesun Park, hujiahong726, i-aki-y, Ian Thompson, Ido M, Ily, Irene, Jack McIvor, jakirkham, James Dean, JanFidor, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jessicakk0711, Jiawei Zhang, Joey Ortiz, JohnathanPi, John Pangas, Joshua Choo Yun Keat, Joshua Hedlund, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kaushik Amar Das, Kento Nozawa, Kian Eliasi, Kilian Kluge, Lene Preuss, Linus, Logan Thomas, Loic Esteve, Louis Fouquet, Lucy Liu, Madhura Jayaratne, Marc Torrellas Socastro, Maren Westermann, Mario Kostelac, Mark Harfouche, Marko Toplak, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, Max Halford, maximeSaur, Maxwell Liu, m. bou, mdarii, Meekail Zain, Mikhail Iljin, murezzda, Nawazish Alam, Nicola Fanelli, Nightwalkx, Nikolay Petrov, Nishu Choudhary, NNLNR, npache, Olivier Grisel, Omar Salman, ouss1508, PAB, Pandata, partev, Peter Piontek, Phil, pnucci, Pooja M, Pooja Subramaniam, precondition, Quentin Barthélemy, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Rushil Desai, Sadra Barikbin, SANJAI_3, Sashka Warner, Scott Gigante, Scott Gustafson, searchforpassion, Seoeun Hong, Shady el Gewily, Shiva chauhan, Shogo Hida, Shreesha Kumar Bhat, sonnivs, Sortofamudkip, Stanislav (Stanley) Modrak, Stefanie Senger, Steven Van Vaerenbergh, Tabea Kossen, Théophile Baranger, Thijs van Weezel, Thomas A Caswell, Thomas Germer, Thomas J. Fan, Tim Head, Tim P, Tom Dupré la Tour, tomiock, tspeng, Valentin Laurent, Veghit, VIGNESH D, Vijeth Moudgalya, Vinayak Mehta, Vincent M, Vincent-violet, Vyom Pathak, William M, windiana42, Xiao Yuan, Yao Xiao, Yaroslav Halchenko, Yotam Avidar-Constantini, Yuchen Zhou, Yusuf Raji, zeeshan lone