Версия 1.0#

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

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

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

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

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

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

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

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

Версия 1.0.2#

Декабрь 2021

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

sklearn.cluster#

sklearn.datasets#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_selection#

sklearn.impute#

  • Исправление Исправлена ошибка в linear_model.RidgeClassifierCV где метод predict выполнял argmax на оценки, полученные из decision_function вместо возврата матрицы индикаторов мультиметок. #19869 by Guillaume Lemaitre.

sklearn.linear_model#

sklearn.manifold#

  • Исправление Исправлена ненужная ошибка при обучении manifold.Isomap с предварительно вычисленной плотной матрицей расстояний, где граф соседей имеет несколько несвязных компонент. #21915 by Tom Dupre la Tour.

sklearn.metrics#

  • Исправление Все sklearn.metrics.DistanceMetric подклассы теперь правильно поддерживают атрибуты буфера только для чтения. Это исправляет регрессию, введенную в версии 1.0.0 по сравнению с 0.24.2. #21694 by Julien Jerphanion.

  • Исправление Все sklearn.metrics.MinkowskiDistance теперь принимает параметр веса, что позволяет писать код, который ведет себя согласованно как с scipy 1.8, так и с более ранними версиями. В свою очередь, это означает, что все оценки на основе соседей (кроме тех, которые используют algorithm="kd_tree") теперь принимает параметр веса с metric="minkowski" для получения результатов, которые всегда согласованы с scipy.spatial.distance.cdist. #21741 by Оливье Гризель.

sklearn.multiclass#

sklearn.neighbors#

sklearn.preprocessing#

sklearn.tree#

  • Исправление Предотвращает tree.plot_tree от выхода за границы рисунка. #21917 by Томас Фан.

  • Исправление Поддержка загрузки pickle-файлов моделей решающих деревьев, когда pickle был сгенерирован на платформе с другой разрядностью. Типичный пример — обучение и сохранение модели на 64-битной машине и загрузка модели на 32-битной машине для предсказания. #21552 by Loïc Estève.

sklearn.utils#

Версия 1.0.1#

Октябрь 2021

Фиксированные модели#

sklearn.calibration#

sklearn.cluster#

  • Исправление Исправлена ошибка в cluster.KMeans, обеспечивая воспроизводимость и эквивалентность между разреженными и плотными входными данными. #21195 by Жереми дю Буаберранже.

sklearn.ensemble#

sklearn.gaussian_process#

sklearn.feature_extraction#

sklearn.linear_model#

sklearn.neighbors#

sklearn.pipeline#

sklearn.svm#

sklearn.utils#

  • Улучшение utils.validation._check_sample_weight может выполнять проверку неотрицательности весов выборки. Это можно включить с помощью булева параметра only_non_negative. Оценщики, проверяющие неотрицательные веса, обновлены: linear_model.LinearRegression (здесь предыдущее сообщение об ошибке было вводящим в заблуждение), ensemble.AdaBoostClassifier, ensemble.AdaBoostRegressor, neighbors.KernelDensity. #20880 by Guillaume Lemaitre и András Simon.

  • Исправление Исправлена ошибка в sklearn.utils.metaestimators.if_delegate_has_method где базовая проверка атрибута не работала с массивами NumPy. #21145 by Захлии.

Разное#

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

Версия 1.0.0#

Сентябрь 2021

Минимальные зависимости#

Версия 1.0.0 scikit-learn требует python 3.7+, numpy 1.14.6+ и scipy 1.1.0+. Опциональная минимальная зависимость - matplotlib 2.2.2+.

Принудительное использование только ключевых аргументов#

В стремлении обеспечить ясное и недвусмысленное использование библиотеки, большинство параметров конструкторов и функций теперь должны передаваться как ключевые аргументы (т.е. с использованием param=value синтаксис) вместо позиционного. Если параметр, доступный только по ключевому слову, используется как позиционный, возникает TypeError теперь вызывается. #15005 #20002 by Joel Nothman, Адрин Джалали, Томас Фан, Nicolas Hug, и Tom Dupre la Tour. См. SLEP009 для получения дополнительной информации.

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

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

  • Исправление manifold.TSNE теперь избегает проблем численного переполнения при вычислении матрицы сходства.

  • Исправление manifold.Isomap теперь соединяет отключенные компоненты графа соседей вдоль некоторых пар минимального расстояния, вместо изменения всех бесконечных расстояний на ноль.

  • Исправление Критерий разделения tree.DecisionTreeClassifier и tree.DecisionTreeRegressor может быть затронут исправлением в обработке ошибок округления. Ранее могли возникать некоторые дополнительные ложные разделения.

  • Исправление model_selection.train_test_split с stratify параметр и model_selection.StratifiedShuffleSplit может привести к немного другим результатам.

Подробности перечислены в журнале изменений ниже.

(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)

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

  • Изменение API Опция использования квадратичной ошибки через loss и criterion параметров стала более согласованной. Предпочтительный способ — установка значения в "squared_error". Старые имена опций всё ещё действительны, дают те же модели, но устарели и будут удалены в версии 1.2. #19310 by Christian Lorentzen.

    • Для ensemble.ExtraTreesRegressor, criterion="mse" устарело, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для ensemble.GradientBoostingRegressor, loss="ls" устарело, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для ensemble.RandomForestRegressor, criterion="mse" устарело, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для ensemble.HistGradientBoostingRegressor, loss="least_squares" устарел, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для linear_model.RANSACRegressor, loss="squared_loss" устарел, используйте "squared_error" вместо этого.

    • Для linear_model.SGDRegressor, loss="squared_loss" устарел, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для tree.DecisionTreeRegressor, criterion="mse" устарело, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

    • Для tree.ExtraTreeRegressor, criterion="mse" устарело, используйте "squared_error" вместо этого, что теперь является значением по умолчанию.

  • Изменение API Опция использования абсолютной ошибки через loss и criterion параметров стала более согласованной. Предпочтительный способ — установка значения в "absolute_error". Старые имена опций всё ещё действительны, дают те же модели, но устарели и будут удалены в версии 1.2. #19733 by Christian Lorentzen.

    • Для ensemble.ExtraTreesRegressor, criterion="mae" устарело, используйте "absolute_error" вместо этого.

    • Для ensemble.GradientBoostingRegressor, loss="lad" устарело, используйте "absolute_error" вместо этого.

    • Для ensemble.RandomForestRegressor, criterion="mae" устарело, используйте "absolute_error" вместо этого.

    • Для ensemble.HistGradientBoostingRegressor, loss="least_absolute_deviation" устарел, используйте "absolute_error" вместо этого.

    • Для linear_model.RANSACRegressor, loss="absolute_loss" устарел, используйте "absolute_error" вместо этого, что теперь является значением по умолчанию.

    • Для tree.DecisionTreeRegressor, criterion="mae" устарело, используйте "absolute_error" вместо этого.

    • Для tree.ExtraTreeRegressor, criterion="mae" устарело, используйте "absolute_error" вместо этого.

  • Изменение API np.matrix использование устарело в версии 1.0 и вызовет TypeError в версии 1.2. #20165 by Томас Фан.

  • Изменение API get_feature_names_out был добавлен в API трансформера для получения имён выходных признаков. get_feature_names в свою очередь устарел. #18444 by Томас Фан.

  • Изменение API Все оценщики хранят feature_names_in_ при обучении на pandas Dataframes. Эти имена признаков сравниваются с именами, видимыми в не-fit методы, например transform и вызовет FutureWarning если они не согласованы, см. также Основные новости выпуска scikit-learn 1.0. Эти FutureWarning s станет ValueError s в 1.2. #18010 by Томас Фан.

sklearn.base#

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

  • Улучшение compose.ColumnTransformer теперь записывает выход каждого трансформера в output_indices_. #18393 by Luca Bittarello.

  • Улучшение compose.ColumnTransformer теперь позволяет входным данным DataFrame иметь измененный порядок столбцов в transform. Кроме того, столбцы, которые удаляются, не потребуются при преобразовании, а дополнительные столбцы будут проигнорированы, если remainder='drop'. #19263 by Томас Фан.

  • Улучшение Добавляет **predict_params ключевой аргумент для compose.TransformedTargetRegressor.predict который передает именованные аргументы регрессору. #19244 by Рикардо.

  • Исправление compose.ColumnTransformer.get_feature_names поддерживает нестроковые имена признаков, возвращаемые любым из его преобразователей. Однако обратите внимание, что get_feature_names устарел, используйте get_feature_names_out вместо этого. #18459 by Albert Villanova del Moral и Alonso Silva Allende.

  • Исправление compose.TransformedTargetRegressor теперь принимает nD-цели с соответствующим трансформером. #18898 by Орас Фонгпанагнам.

  • Изменение API Добавляет verbose_feature_names_out to compose.ColumnTransformer. Этот флаг управляет добавлением префиксов к именам признаков в get_feature_names_out. #18444 и #21080 by Томас Фан.

sklearn.covariance#

sklearn.datasets#

  • Улучшение datasets.fetch_openml теперь поддерживает категории с пропущенными значениями при возврате pandas dataframe. #19365 by Томас Фан и Аманда Д'Суза и Эль-Атеиф Сара.

  • Улучшение datasets.fetch_kddcup99 выдает более понятное сообщение при недействительном кэшированном файле. #19669 Томас Фан.

  • Улучшение Замените использования __file__ связанный с вводом-выводом файлов ресурсов с importlib.resources чтобы избежать предположения, что эти файлы ресурсов (например, iris.csv) уже существуют в файловой системе, и, как следствие, для обеспечения совместимости с такими инструментами, как PyOxidizer. Примечание: когда остатки предсказаний имеют нулевое среднее, by Jack Liu.

  • Исправление Сократите имена файлов данных в тестах openml для лучшей поддержки установки на Windows и его ограничения по умолчанию в 260 символов на длину имени файла. #20209 by Томас Фан.

  • Исправление datasets.fetch_kddcup99 возвращает датафреймы, когда return_X_y=True и as_frame=True. #19011 by Томас Фан.

  • Изменение API Устаревает datasets.load_boston в 1.0, и он будет удален в 1.2. Предоставлены альтернативные фрагменты кода для загрузки аналогичных наборов данных. Пожалуйста, обратитесь к документации функции для подробностей. #20729 by Guillaume Lemaitre.

sklearn.decomposition#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.inspection#

sklearn.kernel_approximation#

  • Исправление Исправлена ошибка в kernel_approximation.Nystroem где атрибут component_indices_ не соответствовал подмножеству индексов выборок, используемых для генерации приближенного ядра. #20554 by Xiangyin Kong.

sklearn.linear_model#

sklearn.manifold#

  • Улучшение Реализовать 'auto' эвристика для learning_rate в manifold.TSNE. Это станет стандартным в версии 1.2. Инициализация по умолчанию изменится на pca в 1.2. Инициализация PCA будет масштабирована до стандартного отклонения 1e-4 в 1.2. #19491 by Dmitry Kobak.

  • Исправление Изменить числовую точность, чтобы предотвратить проблемы с исчезновением порядка во время вычисления матрицы сходства для manifold.TSNE. #19472 by Dmitry Kobak.

  • Исправление manifold.Isomap теперь использует scipy.sparse.csgraph.shortest_path для вычисления кратчайшего пути графа. Также соединяет несвязные компоненты графа соседей по некоторым парам минимального расстояния, вместо того чтобы изменять все бесконечные расстояния на нулевые. #20531 by Roman Yurchak и Том Дюпре ла Тур.

  • Исправление Уменьшить числовую стандартную погрешность в вызове lobpcg в manifold.spectral_embedding для предотвращения численной нестабильности. #21194 by Andrew Knyazev.

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

  • Изменение API The predict_proba и predict_log_proba методы pipeline.Pipeline теперь поддерживают передачу аргументов предсказания конечному оценщику. #19790 by Christopher Flynn.

sklearn.preprocessing#

sklearn.svm#

sklearn.tree#

sklearn.utils#

  • Улучшение Устаревшее значение по умолчанию для random_state=0 в randomized_svd. Начиная с версии 1.2, значение по умолчанию для random_state будет установлено в None. #19459 by Синди Безёйденхаут и Clifford Akai-Nettey.

  • Улучшение Добавлен вспомогательный декоратор utils.metaestimators.available_if для обеспечения гибкости в метаоценщиках, делающих методы доступными или недоступными на основе состояния, более читаемым способом. #19948 by Joel Nothman.

  • Улучшение utils.validation.check_is_fitted теперь использует __sklearn_is_fitted__ если доступно, вместо проверки атрибутов, оканчивающихся на подчёркивание. Это также делает pipeline.Pipeline и preprocessing.FunctionTransformer pass check_is_fitted(estimator). #20657 by Адрин Джалали.

  • Исправление Исправлена ошибка в utils.sparsefuncs.mean_variance_axis где точность вычисленной дисперсии была очень низкой, когда реальная дисперсия равна нулю. #19766 by Жереми дю Буаберранже.

  • Исправление Строки документации свойств, которые украшены utils.deprecated теперь правильно обёрнуты. #20385 by Thomas Fan.

  • Исправление utils.stats._weighted_percentile теперь правильно игнорирует наблюдения с нулевым весом, меньшие, чем наименьшее наблюдение с положительным весом для percentile=0. Затронутые классы: dummy.DummyRegressor для quantile=0 и ensemble.HuberLossFunction и ensemble.HuberLossFunction для alpha=0. #20528 by Malte Londschien.

  • Исправление utils._safe_indexing явно принимает копию dataframe, когда предоставляются целочисленные индексы, избегая вызова предупреждения от Pandas. Это предупреждение ранее вызывалось в утилитах повторной выборки и функциях, использующих эти утилиты (например, model_selection.train_test_split, model_selection.cross_validate, model_selection.cross_val_score, model_selection.cross_val_predict). #20673 by Joris Van den Bossche.

  • Исправление Исправлена регрессия в utils.is_scalar_nan где большие числа Python вызовут ошибку из-за переполнения в типах C (np.float64 или np.int64). #20727 by Guillaume Lemaitre.

  • Исправление Поддержка np.matrix устарел в check_array в 1.0 и вызовет TypeError в версии 1.2. #20165 by Томас Фан.

  • Изменение API utils._testing.assert_warns и utils._testing.assert_warns_message устарели в версии 1.0 и будут удалены в версии 1.2. Используйте pytest.warns менеджер контекста вместо этого. Обратите внимание, что эти функции не были задокументированы и не являются частью публичного API. #20521 by Оливье Гризель.

  • Изменение API Исправлено несколько ошибок в utils.graph.graph_shortest_path, которая теперь устарела. Используйте scipy.sparse.csgraph.shortest_path вместо этого. #20531 by Tom Dupre la Tour.

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

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

Abdulelah S. Al Mesfer, Abhinav Gupta, Adam J. Stewart, Adam Li, Adam Midvidy, Adrian Garcia Badaracco, Adrian Sadłocha, Adrin Jalali, Agamemnon Krasoulis, Alberto Rubiales, Albert Thomas, Albert Villanova del Moral, Alek Lefebvre, Alessia Marcolini, Alexandr Fonari, Alihan Zihna, Aline Ribeiro de Almeida, Amanda, Amanda Dsouza, Amol Deshmukh, Ana Pessoa, Anavelyz, Andreas Mueller, Andrew Delong, Ashish, Ashvith Shetty, Atsushi Nukariya, Aurélien Geron, Avi Gupta, Ayush Singh, baam, BaptBillard, Benjamin Pedigo, Bertrand Thirion, Bharat Raghunathan, bmalezieux, Brian Rice, Brian Sun, Bruno Charron, Bryan Chen, bumblebee, caherrera-meli, Carsten Allefeld, CeeThinwa, Chiara Marmo, chrissobel, Christian Lorentzen, Christopher Yeh, Chuliang Xiao, Clément Fauchereau, cliffordEmmanuel, Conner Shen, Connor Tann, David Dale, David Katz, David Poznik, Dimitri Papadopoulos Orfanos, Divyanshu Deoli, dmallia17, Dmitry Kobak, DS_anas, Eduardo Jardim, EdwinWenink, EL-ATEIF Sara, Eleni Markou, EricEllwanger, Eric Fiegel, Erich Schubert, Ezri-Mudde, Fatos Morina, Felipe Rodrigues, Felix Hafner, Fenil Suchak, flyingdutchman23, Flynn, Fortune Uwha, Francois Berenger, Frankie Robertson, Frans Larsson, Frederick Robinson, frellwan, Gabriel S Vicente, Gael Varoquaux, genvalen, Geoffrey Thomas, geroldcsendes, Hleb Levitski, Glen, Glòria Macià Muñoz, gregorystrubel, groceryheist, Guillaume Lemaitre, guiweber, Haidar Almubarak, Hans Moritz Günther, Haoyin Xu, Harris Mirza, Harry Wei, Harutaka Kawamura, Hassan Alsawadi, Helder Geovane Gomes de Lima, Hugo DEFOIS, Igor Ilic, Ikko Ashimine, Isaack Mungui, Ishaan Bhat, Ishan Mishra, Iván Pulido, iwhalvic, J Alexander, Jack Liu, James Alan Preiss, James Budarz, James Lamb, Jannik, Jeff Zhao, Jennifer Maldonado, Jérémie du Boisberranger, Jesse Lima, Jianzhu Guo, jnboehm, Joel Nothman, JohanWork, John Paton, Jonathan Schneider, Jon Crall, Jon Haitz Legarreta Gorroño, Joris Van den Bossche, José Manuel Nápoles Duarte, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, Julio Batista Silva, julyrashchenko, JVM, Kadatatlu Kishore, Karen Palacio, Kei Ishikawa, kmatt10, kobaski, Kot271828, Kunj, KurumeYuta, kxytim, lacrosse91, LalliAcqua, Laveen Bagai, Leonardo Rocco, Leonardo Uieda, Leopoldo Corona, Loic Esteve, LSturtew, Luca Bittarello, Luccas Quadros, Lucy Jiménez, Lucy Liu, ly648499246, Mabu Manaileng, Manimaran, makoeppel, Marco Gorelli, Maren Westermann, Mariangela, Maria Telenczuk, marielaraj, Martin Hirzel, Mateo Noreña, Mathieu Blondel, Mathis Batoul, mathurinm, Matthew Calcote, Maxime Prieur, Maxwell, Mehdi Hamoumi, Mehmet Ali Özer, Miao Cai, Michal Karbownik, michalkrawczyk, Mitzi, mlondschien, Mohamed Haseeb, Mohamed Khoualed, Muhammad Jarir Kanji, murata-yu, Nadim Kawwa, Nanshan Li, naozin555, Nate Parsons, Neal Fultz, Nic Annau, Nicolas Hug, Nicolas Miller, Nico Stefani, Nigel Bosch, Nikita Titov, Nodar Okroshiashvili, Norbert Preining, novaya, Ogbonna Chibuike Stephen, OGordon100, Oliver Pfaffel, Olivier Grisel, Oras Phongpanangam, Pablo Duque, Pablo Ibieta-Jimenez, Patric Lacouth, Paulo S. Costa, Paweł Olszewski, Peter Dye, PierreAttard, Pierre-Yves Le Borgne, PranayAnchuri, Prince Canuma, putschblos, qdeffense, RamyaNP, ranjanikrishnan, Ray Bell, Rene Jean Corneille, Reshama Shaikh, ricardojnf, RichardScottOZ, Rodion Martynov, Rohan Paul, Roman Lutz, Roman Yurchak, Samuel Brice, Sandy Khosasi, Sean Benhur J, Sebastian Flores, Sebastian Pölsterl, Shao Yang Hong, shinehide, shinnar, shivamgargsya, Shooter23, Shuhei Kayawari, Shyam Desai, simonamaggio, Sina Tootoonian, solosilence, Steven Kolawole, Steve Stagg, Surya Prakash, swpease, Sylvain Marié, Takeshi Oura, Terence Honles, TFiFiE, Thomas A Caswell, Thomas J. Fan, Tim Gates, TimotheeMathieu, Timothy Wolodzko, Tim Vink, t-jakubek, t-kusanagi, tliu68, Tobias Uhmann, tom1092, Tomás Moreyra, Tomás Ronald Hughes, Tom Dupré la Tour, Tommaso Di Noto, Tomohiro Endo, TONY GEORGE, Toshihiro NAKAE, tsuga, Uttam kumar, vadim-ushtanit, Vangelis Gkiastas, Venkatachalam N, Vilém Zouhar, Vinicius Rios Fuck, Vlasovets, waijean, Whidou, xavier dupré, xiaoyuchai, Yasmeen Alsaedy, yoch, Yosuke KOBAYASHI, Yu Feng, YusukeNagasaka, yzhenman, Zero, ZeyuSun, ZhaoweiWang, Zito, Zito Relova