Версия 0.23#

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

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

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

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

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

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

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

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

Версия 0.23.2#

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

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

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

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

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

sklearn.cluster#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

  • Исправление Исправлена ошибка в metrics.mean_squared_error где среднее нескольких значений RMSE было некорректно рассчитано как корень из среднего нескольких значений MSE. #17309 by Swier Heeres.

sklearn.pipeline#

sklearn.utils#

Версия 0.23.1#

18 мая 2020

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

sklearn.cluster#

  • Эффективность cluster.KMeans эффективность была улучшена для очень маленьких наборов данных. В частности, она больше не может создавать простаивающие потоки. #17210 и #17235 by Jeremie du Boisberranger.

  • Исправление Исправлена ошибка в cluster.KMeans где веса образцов, предоставленные пользователем, были изменены на месте. #17204 by Jeremie du Boisberranger.

Разное#

  • Исправление Исправлена ошибка в repr сторонних оценщиков, которые используют **kwargs параметр в их конструкторе, когда changed_only равно True что теперь является значением по умолчанию. #17205 by Nicolas Hug.

Версия 0.23.0#

12 мая 2020

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

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

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

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

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

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

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

sklearn.cluster#

sklearn.compose#

  • Эффективность compose.ColumnTransformer теперь работает быстрее при работе с датафреймами и строками, используемыми для указания подмножеств данных для преобразователей. #16431 by Томас Фан.

  • Улучшение compose.ColumnTransformer метод get_feature_names теперь поддерживает 'passthrough' столбцов, где имя признака является либо именем столбца для датафрейма, либо 'xi' для индекса столбца i. #14048 by Льюис Болл.

  • Исправление compose.ColumnTransformer метод get_feature_names теперь возвращает корректные результаты, когда один из шагов преобразователя применяется к пустому списку столбцов #15963 by Roman Yurchak.

  • Исправление compose.ColumnTransformer.fit выдаст ошибку при выборе имени столбца, которое не является уникальным в датафрейме. #16431 by Томас Фан.

sklearn.datasets#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

  • Эффективность feature_extraction.text.CountVectorizer теперь сортирует признаки после их обрезки по частоте документа. Это улучшает производительность для наборов данных с большим словарным запасом в сочетании с min_df или max_df. #15834 by Сантьяго М. Мола.

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.linear_model#

sklearn.metrics#

  • Улучшение metrics.pairwise_distances_chunked теперь позволяет его reduce_func не иметь возвращаемого значения, позволяя операции на месте. #16397 by Joel Nothman.

  • Исправление Исправлена ошибка в metrics.mean_squared_error не игнорировать аргумент squared когда аргумент multioutput='raw_values'. #16323 by Rushabh Vasani

  • Исправление Исправлена ошибка в metrics.mutual_info_score где могут возвращаться отрицательные оценки. #16362 by Томас Фан.

  • Исправление Исправлена ошибка в metrics.confusion_matrix функция поэтому принимает параметр с именем y_true и y_pred имели нулевую длину и labels не был None. Кроме того, мы вызываем ошибку, когда пустой список передан в labels параметр. #16442 by Kyle Parsons.

  • Изменение API Изменено форматирование значений в metrics.ConfusionMatrixDisplay.plot и metrics.plot_confusion_matrix для выбора более короткого формата (либо '2g', либо 'd'). #16159 by Rick Mackenbach и Томас Фан.

  • Изменение API Начиная с версии 0.25, metrics.pairwise_distances больше не будет автоматически вычислять VI параметр для расстояния Махаланобиса и V параметр для расстояния seuclidean, если Y передается. Пользователь должен будет вычислить этот параметр на выбранных им обучающих данных и передать его в pairwise_distances. #16993 by Joel Nothman.

sklearn.model_selection#

sklearn.multioutput#

sklearn.naive_bayes#

  • Исправление Правильно отформатированное сообщение об ошибке показано в naive_bayes.CategoricalNB когда количество признаков во входных данных различается между predict и fit. #16090 by Madhura Jayaratne.

sklearn.neural_network#

sklearn.inspection#

  • Улучшение inspection.PartialDependenceDisplay теперь предоставляет линии децилей в качестве атрибутов, чтобы их можно было скрыть или настроить. #15785 by Nicolas Hug

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.svm#

  • Исправление Эффективность Улучшено libsvm и liblinear генераторы случайных чисел, используемые для случайного выбора координат в алгоритмах координатного спуска. Зависит от платформы C rand() был использован, который способен генерировать числа только до 32767 на платформе Windows (см. это запись в блоге) и также имеет слабую случайность, как указано в эта презентация. Оно было заменено на C++11 mt19937, генератор Mersenne Twister, который корректно генерирует 31-битные/63-битные случайные числа на всех платформах. Кроме того, грубый "модульный" постпроцессор, используемый для получения случайного числа в ограниченном интервале, был заменен на модифицированный метод Lemire, как предложено этот блог пост. Любая модель, использующая svm.libsvm или svm.liblinear солвер, включая svm.LinearSVC, svm.LinearSVR, svm.NuSVC, svm.NuSVR, svm.OneClassSVM, svm.SVC, svm.SVR, linear_model.LogisticRegression, затрагивается. В частности, пользователи могут ожидать лучшей сходимости, когда количество образцов (LibSVM) или количество признаков (LibLinear) велико. #13511 by Sylvain Marié.

  • Исправление Исправить использование пользовательного ядра, не принимающего вещественные записи, такие как строковые ядра в svm.SVC и svm.SVR. Обратите внимание, что пользовательские ядра теперь должны проверять свои входные данные, где ранее они получали валидные числовые массивы. #11296 by Александр Грамфор и Георги Пеев.

  • Изменение API svm.SVR и svm.OneClassSVM атрибуты, probA_ и probB_, теперь устарели, так как не были полезными. #15558 by Томас Фан.

sklearn.tree#

sklearn.utils#

  • Основная функция Оценщики теперь могут отображаться с расширенным HTML-представлением. Это можно включить в блокнотах Jupyter, установив display='diagram' в set_config. Необработанный HTML может быть возвращён с помощью utils.estimator_html_repr. #14180 by Томас Фан.

  • Улучшение улучшить сообщение об ошибке в utils.validation.column_or_1d. #15926 by Loïc Estève.

  • Улучшение добавить предупреждение в utils.check_array для разреженного DataFrame pandas. #16021 by Rushabh Vasani.

  • Улучшение utils.check_array теперь создает разреженную матрицу из pandas DataFrame, который содержит только SparseArray столбцы. #16728 by Томас Фан.

  • Улучшение utils.check_array поддерживает nullable integer dtype pandas с пропущенными значениями, когда force_all_finite установлено в False или 'allow-nan' в этом случае данные преобразуются в значения с плавающей точкой, где pd.NA значения заменяются на np.nan. Как следствие, все sklearn.preprocessing преобразователи, которые принимают числовые входные данные с пропущенными значениями, представленными как np.nan теперь также принимает непосредственную подачу pandas датафреймов с pd.Int* or `pd.Uint* типизированные столбцы, которые используют pd.NA как маркер пропущенного значения. #16508 by Томас Фан.

  • Изменение API Передача классов в utils.estimator_checks.check_estimator и utils.estimator_checks.parametrize_with_checks теперь устарел, и поддержка классов будет удалена в 0.24. Передавайте экземпляры вместо этого. #17032 by Nicolas Hug.

  • Изменение API Приватная утилита _safe_tags в utils.estimator_checks был удалён, поэтому все теги должны быть получены через estimator._get_tags(). Обратите внимание, что примеси, такие как RegressorMixin должен приходить до базовые классы в MRO для _get_tags() для правильной работы. #16950 by Nicolas Hug.

  • Исправление utils.all_estimators теперь возвращает только публичные оценщики. #15380 by Томас Фан.

Разное#

  • Основная функция Добавляет HTML-представление оценщиков для отображения в jupyter notebook или lab. Эта визуализация активируется установкой display опция в sklearn.set_config. #14180 by Томас Фан.

  • Улучшение scikit-learn теперь работает с mypy без ошибок. #16726 by Roman Yurchak.

  • Изменение API Большинство оценщиков теперь предоставляют n_features_in_ атрибут. Этот атрибут равен количеству признаков, переданных в fit метод. См. SLEP010 подробности. #16112 by Nicolas Hug.

  • Изменение API Оценщики теперь имеют requires_y теги, который по умолчанию False, за исключением оценщиков, наследующих от ~sklearn.base.RegressorMixin или ~sklearn.base.ClassifierMixin. Этот тег используется для гарантии, что будет вызвано соответствующее сообщение об ошибке, когда ожидался y, но был передан None. #16622 by Nicolas Hug.

  • Изменение API Настройка по умолчанию print_changed_only был изменен с False на True. Это означает, что repr оценщиков теперь более лаконично и показывает только параметры, значение по умолчанию которых было изменено при печати оценщика. Вы можете восстановить предыдущее поведение, используя sklearn.set_config(print_changed_only=False). Также обратите внимание, что всегда можно быстро проверить параметры любого оценщика с помощью est.get_params(deep=False). #17061 by Nicolas Hug.

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

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

Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang “Maxin” Tang