Версия 0.20#

Предупреждение

Версия 0.20 — последняя версия scikit-learn, поддерживающая Python 2.7 и Python 3.4. Scikit-learn 0.21 потребует Python 3.5 или выше.

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

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

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

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

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

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

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

Версия 0.20.4#

30 июля 2019

Это релиз с исправлением ошибок, содержащий некоторые исправления, применённые к версии 0.20.3.

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

Встроенная версия joblib была обновлена с 0.13.0 до 0.13.2.

sklearn.cluster#

  • Исправление Исправлена ошибка в cluster.KMeans где инициализация KMeans++ редко могла приводить к IndexError. #11756 by Joel Nothman.

sklearn.compose#

  • Исправление Исправлена проблема в compose.ColumnTransformer где использование DataFrame, порядок столбцов которых различается между fit и transform может привести к незаметной передаче некорректных столбцов в remainder преобразователь. #14237 by Andreas Schuderer .

sklearn.decomposition#

sklearn.model_selection#

  • Исправление Исправлена ошибка, где model_selection.StratifiedKFold перемешивает выборки каждого класса с тем же random_state, делая shuffle=True неэффективен. #13124 by Hanmin Qin.

sklearn.neighbors#

  • Исправление Исправлена ошибка в neighbors.KernelDensity который не может быть восстановлен из pickle, если sample_weight использовался. #13772 by Aditya Vyas.

Версия 0.20.3#

1 марта 2019 г.

Это выпуск с исправлением ошибок, включающий небольшие улучшения документации и улучшения функций, выпущенных в версии 0.20.0.

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

sklearn.cluster#

sklearn.compose#

  • Исправление Исправлена ошибка в compose.ColumnTransformer для обработки отрицательных индексов в списке столбцов трансформеров. #12946 by Pierre Tallotte.

sklearn.covariance#

sklearn.decomposition#

sklearn.datasets#

sklearn.feature_extraction#

sklearn.impute#

sklearn.linear_model#

sklearn.preprocessing#

  • Исправление Исправлена ошибка в preprocessing.KBinsDiscretizer где strategy='kmeans' завершается ошибкой во время преобразования из-за несортированных границ бинов. #13134 by Sandro Casagrande.

  • Исправление Исправлена ошибка в preprocessing.OneHotEncoder где устаревание categorical_features обрабатывался некорректно в сочетании с handle_unknown='ignore'. #12881 by Joris Van den Bossche.

  • Исправление Бины, ширина которых слишком мала (т.е. <= 1e-8), удаляются с предупреждением в preprocessing.KBinsDiscretizer. #13165 by Hanmin Qin.

sklearn.svm#

  • Исправление Исправлена ошибка в svm.SVC, svm.NuSVC, svm.SVR, svm.NuSVR и svm.OneClassSVM где scale опция параметра gamma ошибочно определена как 1 / (n_features * X.std()). Теперь определяется как 1 / (n_features * X.var()). #13221 by Hanmin Qin.

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

С благодарностью:

Адрин Джалали, Агамемнон Красулис, Альберт Томас, Андреас Мюллер, Орельен Белле, bertrandhaut, Бхарат Рагхунатхан, Доуон, Эммануэль Ариас, Фибенс Ксавье, Финн О'Ши, Габриэль Вакалюк, Гаэль Варуке, Гийом Леметр, Ханмин Цинь, joaak, Джоэл Нотман, Жорис Ван ден Босше, Жереми Мео, kms15, Коссори Аруку, Лакшья КД, maikia, Мануэль Лопес-Ибаньес, Марко Горелли, MarcoGorelli, mferrari3, Микаэль Шоентген, Николя Хаг, pavlos kallis, Пьер Глазер, pierretallotte, Прабакаран Кумарессан, Решама Шайх, Рохит Капур, Роман Юрчак, SandroCasagrande, Ташай Грин, Томас Фан, Вишаал Капур, Чжуи Сюэ, Цзицзе (ZJ) По

Версия 0.20.2#

20 декабря 2018

Это выпуск с исправлением ошибок, включающий небольшие улучшения документации и улучшения функций, выпущенных в версии 0.20.0.

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

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

  • sklearn.neighbors когда metric=='jaccard' (исправление ошибки)

  • использование 'seuclidean' или 'mahalanobis' метрики в некоторых случаях (исправление ошибки)

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

sklearn.compose#

  • Исправление Исправлена проблема в compose.make_column_transformer что вызывает неожиданную ошибку, когда columns является pandas Index или pandas Series. #12704 by Hanmin Qin.

sklearn.metrics#

sklearn.neighbors#

  • Исправление Исправлено sklearn.neighbors.DistanceMetric функция расстояния Жаккара возвращает 0 при сравнении двух векторов, состоящих из нулей. #12685 by Томас Фан.

sklearn.utils#

  • Исправление Вызов utils.check_array на pandas.Series с категориальными данными, которые вызывали ошибку в версии 0.20.0, теперь снова возвращает ожидаемый результат. #12699 by Joris Van den Bossche.

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

С благодарностью:

adanhawth, Adrin Jalali, Albert Thomas, Andreas Mueller, Dan Stine, Feda Curic, Hanmin Qin, Jan S, jeremiedbb, Joel Nothman, Joris Van den Bossche, josephsalmon, Katrin Leinweber, Loic Esteve, Muhammad Hassaan Rafique, Nicolas Hug, Olivier Grisel, Paul Paczuski, Reshama Shaikh, Sam Waterbury, Shivam Kotwalia, Thomas Fan

Версия 0.20.1#

21 ноября 2018

Это релиз с исправлением ошибок, включающий некоторые незначительные улучшения документации и расширения функций, выпущенных в версии 0.20.0. Обратите внимание, что мы также включаем некоторые изменения API в этом релизе, поэтому вы можете получить дополнительные предупреждения после обновления с версии 0.20.0 до 0.20.1.

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

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

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

sklearn.cluster#

  • Эффективность make cluster.MeanShift больше не пытаться выполнять вложенный параллелизм, так как накладные расходы значительно ухудшат производительность, когда n_jobs > 1. #12159 by Оливье Гризель.

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

sklearn.compose#

sklearn.datasets#

sklearn.decomposition#

  • Исправление Исправлена регрессия в decomposition.IncrementalPCA где 0.20.0 вызывал ошибку, если количество выборок в финальном пакете для обучения IncrementalPCA было меньше n_components. #12234 by Ming Li.

sklearn.ensemble#

sklearn.feature_extraction#

  • Исправление Исправлена регрессия в версии v0.20.0, где feature_extraction.text.CountVectorizer и другие векторизаторы текста могли выдавать ошибку во время проверки стоп-слов с пользовательскими препроцессорами или токенизаторами. #12393 by Roman Yurchak.

sklearn.linear_model#

  • Исправление linear_model.SGDClassifier и варианты с early_stopping=True не использовал бы согласованное разделение валидации в многоклассовом случае, что вызывало бы сбой при использовании этих оценщиков как части параллельного поиска параметров или перекрестной проверки. #12122 by Оливье Гризель.

  • Исправление Исправлена ошибка, влияющая на linear_model.SGDClassifier в многоклассовом случае. Каждый шаг "один против всех" выполняется в joblib.Parallel вызов и изменение общего параметра, вызывающее ошибку сегментации при вызове в бэкенде, использующем процессы, а не потоки. Теперь мы используем require=sharedmem в joblib.Parallel создание экземпляра. #12518 by Пьер Глазер и Оливье Гризель.

sklearn.metrics#

sklearn.mixture#

sklearn.neighbors#

  • Исправление принудительно использовать параллельный бэкенд для threading для neighbors.KDTree и neighbors.BallTree в Python 2.7 для избежания ошибок сериализации, вызванных сериализацией их методов. #12171 by Томас Море.

sklearn.preprocessing#

  • Исправление Исправлена ошибка в preprocessing.OrdinalEncoder при передаче вручную указанных категорий. #12365 by Joris Van den Bossche.

  • Исправление Исправлена ошибка в preprocessing.KBinsDiscretizer где transform метод изменяет _encoder атрибут. The transform метод теперь потокобезопасен. #12514 by Hanmin Qin.

  • Исправление Исправлена ошибка в preprocessing.PowerTransformer где преобразование Йео-Джонсона было некорректным для параметров лямбда вне диапазона [0, 2] #12522 by Nicolas Hug.

  • Исправление Исправлена ошибка в preprocessing.OneHotEncoder где transform завершался ошибкой при установке игнорирования неизвестных numpy строк разной длины #12471 by Gabriel Marzinotto.

  • Изменение API Значение по умолчанию для method аргумент в preprocessing.power_transform #30399 box-cox to yeo-johnson для соответствия preprocessing.PowerTransformer в версии 0.23. FutureWarning выдается, когда используется значение по умолчанию. #12317 by Эрик Чанг.

sklearn.utils#

  • Исправление Использовать float64 для аккумулятора средних, чтобы избежать проблем с точностью чисел с плавающей точкой в preprocessing.StandardScaler и decomposition.IncrementalPCA при использовании наборов данных float32. #12338 by bauks.

  • Исправление Вызов utils.check_array на pandas.Series, который вызывал ошибку в версии 0.20.0, теперь снова возвращает ожидаемый вывод. #12625 by Андреас Мюллер

Разное#

  • Исправление При использовании site joblib путем установки переменной окружения SKLEARN_SITE_JOBLIB, добавлена совместимость с joblib 0.11 в дополнение к 0.12+. #12350 by Joel Nothman и Roman Yurchak.

  • Исправление Убедитесь, что избегаете вызова FutureWarning при вызове np.vstack с numpy 1.16 и новее (используйте списковые включения вместо генераторных выражений во многих местах кодовой базы scikit-learn). #12467 by Оливье Гризель.

  • Изменение API Удалены все упоминания sklearn.externals.joblib, и устаревшие методы joblib, представленные в sklearn.utils, за исключением utils.parallel_backend и utils.register_parallel_backend, которые позволяют пользователям настраивать параллельные вычисления в scikit-learn. Другие функциональные возможности являются частью joblib. пакет и должен использоваться напрямую, путем его установки. Цель этого изменения — подготовиться к отказу от вендоринга joblib в будущих версиях scikit-learn. #12345 by Томас Море

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

С благодарностью:

^__^, Adrin Jalali, Andrea Navarrete, Andreas Mueller, bauks, BenjaStudio, Cheuk Ting Ho, Connossor, Corey Levinson, Dan Stine, daten-kieker, Denis Kataev, Dillon Gardner, Dmitry Vukolov, Dougal J. Sutherland, Edward J Brown, Eric Chang, Federico Caselli, Gabriel Marzinotto, Gael Varoquaux, GauravAhlawat, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, JackLangerman, Jacopo Notarstefano, janvanrijn, jdethurens, jeremiedbb, Joel Nothman, Joris Van den Bossche, Koen, Kushal Chauhan, Lee Yi Jie Joel, Lily Xiong, mail-liam, Mark Hannel, melsyt, Ming Li, Nicholas Smith, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Olivier Grisel, Peter Hausamann, Pierre Glaser, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Ramil Nugmanov, Rebekah Kim, Reshama Shaikh, Rohan Singh, Roman Feldbauer, Roman Yurchak, Roopam Sharma, Sam Waterbury, Scott Lowe, Sebastian Raschka, Stephen Tierney, SylvainLan, TakingItCasual, Thomas Fan, Thomas Moreau, Tom Dupré la Tour, Tulio Casagrande, Utkarsh Upadhyay, Xing Han Lu, Yaroslav Halchenko, Zach Miller

Версия 0.20.0#

25 сентября 2018

Этот выпуск содержит множество исправлений ошибок, функций и улучшений для библиотеки Scikit-learn, а также улучшения документации и примеров. Спасибо нашим контрибьюторам!

Этот выпуск посвящен памяти Raghav Rajagopalan.

Основные моменты#

Мы постарались улучшить поддержку распространенных сценариев использования в data-science, включая пропущенные значения, категориальные переменные, неоднородные данные и признаки/цели с необычными распределениями. Пропущенные значения в признаках, представленные NaN, теперь принимаются в постолбцовой предобработке, такой как масштабирование. Каждый признак обучается без учета NaN, и данные, содержащие NaN, могут быть преобразованы. Новый sklearn.impute модуль предоставляет оценщики для обучения, несмотря на пропущенные данные.

ColumnTransformer обрабатывает случай, когда различные признаки или столбцы pandas.DataFrame требуют разной предобработки. Строковые или категориальные столбцы pandas Categorical теперь могут быть закодированы с помощью OneHotEncoder или OrdinalEncoder.

TransformedTargetRegressor помогает, когда регрессионная цель должна быть преобразована для моделирования. PowerTransformer и KBinsDiscretizer join QuantileTransformer как нелинейные преобразования.

Кроме того, мы добавили sample_weight поддержку для нескольких оценщиков (включая KMeans, BayesianRidge и KernelDensity) и улучшенные критерии остановки в других (включая MLPRegressor, GradientBoostingRegressor и SGDRegressor).

Этот выпуск также является первым, который сопровождается Глоссарий общих терминов и элементов API разработанный Joel NothmanГлоссарий — это справочный ресурс, помогающий пользователям и участникам ознакомиться с терминологией и соглашениями, используемыми в Scikit-learn.

Извините, если ваш вклад не попал в основные моменты. Здесь много материала...

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

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

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

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

Известные серьезные ошибки#

  • #11924: linear_model.LogisticRegressionCV с solver='lbfgs' и multi_class='multinomial' может быть недетерминированным или иначе сломанным на macOS. Это, по-видимому, имеет место на серверах Travis CI, но не подтверждено на личных MacBook! Эта проблема присутствовала в предыдущих релизах.

  • #9354: metrics.pairwise.euclidean_distances (который используется несколько раз в библиотеке) дает результаты с низкой точностью, что особенно влияет на его использование с 32-битными входными данными с плавающей запятой. Это стало более проблематичным в версиях 0.18 и 0.19, когда некоторые алгоритмы были изменены, чтобы избежать приведения 32-битных данных к 64-битным.

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

Поддержка Python 3.3 официально прекращена.

sklearn.cluster#

  • Основная функция cluster.AgglomerativeClustering теперь поддерживает кластеризацию Single Linkage через linkage='single'. #9372 by Лиланд МакИннес и Стив Астелс.

  • Функция cluster.KMeans и cluster.MiniBatchKMeans теперь поддерживает веса образцов через новый параметр sample_weight в fit функция. #10933 by Йоханнес Хансен.

  • Эффективность cluster.KMeans, cluster.MiniBatchKMeans и cluster.k_means передается с algorithm='full' теперь принудительно применяется строчный порядок, улучшая время выполнения. #10471 by Гаурав Дхингра.

  • Эффективность cluster.DBSCAN теперь распараллеливается в соответствии с n_jobs независимо от algorithm. #8003 by Joël Billaud.

  • Улучшение cluster.KMeans теперь выдаёт предупреждение, если количество найденных различных кластеров меньше, чем n_clusters. Это может произойти, когда количество различных точек в наборе данных фактически меньше количества кластеров, которые ищут. #10059 by Christian Braune.

  • Исправление Исправлена ошибка, где fit метод cluster.AffinityPropagation сохраненные центры кластеров как 3d массив вместо 2d массива в случае отсутствия сходимости. Для того же класса исправлено неопределенное и произвольное поведение в случае обучающих данных, где все образцы имели одинаковое сходство. #9612. С помощью Jonatan Samoocha.

  • Исправление Исправлена ошибка в cluster.spectral_clustering где нормализация спектра использовала деление вместо умножения. #8129 by Jan Margeta, Guillaume Lemaitre, и Devansh D..

  • Исправление Исправлена ошибка в cluster.k_means_elkan где возвращается iteration было на 1 меньше правильного значения. Также добавлен недостающий n_iter_ атрибут в строке документации cluster.KMeans. #11353 by Jeremie du Boisberranger.

  • Исправление Исправлена ошибка в cluster.mean_shift где назначенные метки не были детерминированными, если существовало несколько кластеров с одинаковыми интенсивностями. #11901 by Адрин Джалали.

  • Изменение API Устарело pooling_func неиспользуемый параметр в cluster.AgglomerativeClustering. #9875 by Kumar Ashutosh.

sklearn.compose#

sklearn.covariance#

sklearn.datasets#

  • Основная функция Добавлен datasets.fetch_openml для загрузки наборов данных из OpenML. OpenML — это бесплатная открытая платформа для обмена данными и будет использоваться вместо mldata, так как обеспечивает лучшую доступность сервиса. #9908 by Андреас Мюллер и Ян Н. ван Рейн.

  • Функция В datasets.make_blobs, теперь можно передавать список в n_samples параметр для указания количества генерируемых выборок на кластер. #8617 by Maskani Filali Mohamed и Константинос Катриоплас.

  • Функция Добавить filename атрибут для sklearn.datasets которые имеют CSV-файл. #9101 by alex-33 и Maskani Filali Mohamed.

  • Функция return_X_y параметр был добавлен в несколько загрузчиков наборов данных. #10774 by Крис Катальфо.

  • Исправление Исправлена ошибка в datasets.load_boston который имел неверную точку данных. #10795 by Такеши Ёсидзава.

  • Исправление Исправлена ошибка в datasets.load_iris который имел две ошибочные точки данных. #11082 by Sadhana Srinivasan и Hanmin Qin.

  • Исправление Исправлена ошибка в datasets.fetch_kddcup99, где данные не были правильно перемешаны. #9731 by Nicolas Goix.

  • Исправление Исправлена ошибка в datasets.make_circles, где нечётное количество точек данных не могло быть сгенерировано. #10045 by Christian Braune.

  • Изменение API Устаревший sklearn.datasets.fetch_mldata будет удален в версии 0.22. mldata.org больше не работает. До удаления будет оставаться возможность загружать кэшированные наборы данных. #11466 by Joel Nothman.

sklearn.decomposition#

  • Функция decomposition.dict_learning функции и модели теперь поддерживают ограничения положительности. Это относится к словарю и разреженному коду. #6374 by Джон Киркхэм.

  • Функция Исправление decomposition.SparsePCA теперь предоставляет normalize_components. Когда установлено значение True, обучающие и тестовые данные центрируются с использованием среднего значения обучающей выборки соответственно на этапе обучения и на этапе преобразования. Это исправляет поведение SparsePCA. Когда установлено значение False, что является значением по умолчанию, предыдущее аномальное поведение сохраняется. Значение False предназначено для обратной совместимости и не должно использоваться. #11585 by Иван Панико.

  • Эффективность Улучшения эффективности в decomposition.dict_learning. #11420 и другие от Джон Киркхэм.

  • Исправление Исправление для неинформативной ошибки в decomposition.IncrementalPCA: теперь возникает ошибка, если количество компонентов больше выбранного размера пакета. The n_components=None случай был соответствующим образом адаптирован. #6452. С помощью Уолли Гоз.

  • Исправление Исправлена ошибка, где partial_fit метод decomposition.IncrementalPCA использовал целочисленное деление вместо деления с плавающей точкой в Python 2. #9492 by James Bourbeau.

  • Исправление В decomposition.PCA выбор параметра n_components большего, чем количество выборок, теперь вызывает ошибку. Аналогично, n_components=None теперь выбирает минимум из n_samples и n_features. #8484 by Уолли Гоз.

  • Исправление Исправлена ошибка в decomposition.PCA где пользователи получат неожиданную ошибку с большими наборами данных, когда n_components='mle' в версиях Python 3. #9886 by Hanmin Qin.

  • Исправление Исправлено переполнение снизу при вычислении KL-дивергенции для decomposition.NMF #10142 by Tom Dupre la Tour.

  • Исправление Исправлена ошибка в decomposition.SparseCoder при запуске разреженного кодирования OMP параллельно с использованием структур данных, отображенных в память только для чтения. #5956 by Вайгнеш Биродкар и Оливье Гризель.

sklearn.discriminant_analysis#

sklearn.dummy#

sklearn.ensemble#

  • Функция ensemble.BaggingRegressor и ensemble.BaggingClassifier теперь может обучаться с пропущенными/неконечными значениями в X и/или многомерном Y для поддержки обёрточных конвейеров, выполняющих собственное заполнение. #9707 by Jimmy Wan.

  • Функция ensemble.GradientBoostingClassifier и ensemble.GradientBoostingRegressor теперь поддерживают раннюю остановку через n_iter_no_change, validation_fraction и tol. #7071 by Рагхав РВ

  • Функция Добавлен named_estimators_ параметр в ensemble.VotingClassifier для доступа к обученным оценщикам. #9157 by Herilalaina Rakotoarison.

  • Исправление Исправлена ошибка при обучении ensemble.GradientBoostingClassifier или ensemble.GradientBoostingRegressor с warm_start=True который ранее вызывал ошибку сегментации из-за неправильного преобразования матрицы CSC в формат CSR, ожидаемый decision_function. Аналогично, массивы с порядком Fortran преобразуются в массивы с порядком C в плотном случае. #9991 by Guillaume Lemaitre.

  • Исправление Исправлена ошибка в ensemble.GradientBoostingRegressor и ensemble.GradientBoostingClassifier чтобы важности признаков суммировались и затем нормализовались, а не нормализовались на основе каждого дерева. Предыдущее поведение переоценивало важность Джини для признаков, появляющихся на поздних этапах. Эта проблема затрагивала только важности признаков. #11176 by Gil Forsyth.

  • Изменение API Значение по умолчанию для n_estimators параметр ensemble.RandomForestClassifier, ensemble.RandomForestRegressor, ensemble.ExtraTreesClassifier, ensemble.ExtraTreesRegressor, и ensemble.RandomTreesEmbedding изменится с 10 в версии 0.20 на 100 в 0.22. FutureWarning выдается при использовании значения по умолчанию. #11542 by Анна Айзенштат.

  • Изменение API Классы, производные от ensemble.BaseBagging. Атрибут estimators_samples_ будет возвращать список массивов, содержащих индексы, выбранные для каждой бутстреп-выборки, вместо списка массивов, содержащих маску выборок, выбранных для каждой бутстреп-выборки. Индексы позволяют повторять выборки, в то время как маска не поддерживает эту функциональность. #9524 by Guillaume Lemaitre.

  • Исправление ensemble.BaseBagging где нельзя было детерминированно воспроизвести fit результат с использованием атрибутов объекта, когда random_state установлен. #9723 by Guillaume Lemaitre.

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

  • Новый модуль, внедряющий preprocessing.Imputer как impute.SimpleImputer с небольшими изменениями (см. в разделе предобработки ниже).

  • Основная функция Добавлен impute.MissingIndicator который генерирует бинарный индикатор для пропущенных значений. #8075 by Maniteja Nandana и Guillaume Lemaitre.

  • Функция The impute.SimpleImputer имеет новую стратегию, 'constant', чтобы заполнить пропущенные значения фиксированным значением, заданным fill_value параметр. Эта стратегия поддерживает числовые и нечисловые данные, как и 'most_frequent' стратегия теперь. #11211 by Jeremie du Boisberranger.

sklearn.isotonic#

  • Исправление Исправлена ошибка в isotonic.IsotonicRegression который некорректно комбинировал веса при обучении модели на данных, содержащих точки с одинаковыми значениями X. #9484 by Dallas Card

sklearn.linear_model#

sklearn.manifold#

  • Эффективность Улучшения скорости для методов 'exact' и 'barnes_hut' в manifold.TSNE. #10593 и #10610 by Tom Dupre la Tour.

  • Функция Поддержка разреженного ввода в manifold.Isomap.fit. #8554 by Leland McInnes.

  • Функция manifold.t_sne.trustworthiness принимает метрики, отличные от Евклидовой. #9775 by William de Vazelhes.

  • Исправление Исправлена ошибка в manifold.spectral_embedding где нормализация спектра использовала деление вместо умножения. #8129 by Jan Margeta, Guillaume Lemaitre, и Devansh D..

  • Изменение API Функция Устарело precomputed параметр в функции manifold.t_sne.trustworthiness. Вместо этого новый параметр metric должен использоваться с любой совместимой метрикой, включая 'precomputed', в этом случае входная матрица X должна быть матрицей попарных расстояний или квадратов расстояний. #9775 by William de Vazelhes.

  • Изменение API Устарело precomputed параметр в функции manifold.t_sne.trustworthiness. Вместо этого новый параметр metric должен использоваться с любой совместимой метрикой, включая 'precomputed', в этом случае входная матрица X должна быть матрицей попарных расстояний или квадратов расстояний. #9775 by William de Vazelhes.

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

  • Функция Добавить return_estimator параметр в model_selection.cross_validate для возврата оценщиков, обученных на каждом разделе. #9686 by Aurélien Bellet.

  • Функция Новый refit_time_ атрибут будет сохранён в model_selection.GridSearchCV и model_selection.RandomizedSearchCV if refit установлено в True. Это позволит измерить полное время, необходимое для выполнения оптимизации гиперпараметров и переобучения лучшей модели на всём наборе данных. #11310 by Matthias Feurer.

  • Функция Предоставить error_score параметр в model_selection.cross_validate, model_selection.cross_val_score, model_selection.learning_curve и model_selection.validation_curve для управления поведением, вызываемым при возникновении ошибки в model_selection._fit_and_score. #11576 by Samuel O. Ronsin.

  • Функция BaseSearchCV теперь имеет экспериментальный, частный интерфейс для поддержки пользовательских стратегий поиска параметров через свой _run_search методом. Смотрите реализации в model_selection.GridSearchCV и model_selection.RandomizedSearchCV и, пожалуйста, предоставьте обратную связь, если вы используете это. Обратите внимание, что мы не гарантируем стабильность этого API после версии 0.20. #9599 by Joel Nothman

  • Улучшение Добавлено улучшенное сообщение об ошибке в model_selection.cross_val_score когда передаются несколько метрик scoring ключевое слово. #11006 by Ming Li.

  • Изменение API Количество складок перекрестной проверки по умолчанию cv и количество разбиений по умолчанию n_splits в model_selection.KFold-подобные сплиттеры изменятся с 3 на 5 в 0.22, так как 3-кратное имеет большую дисперсию. #11557 by Alexandre Boucaud.

  • Изменение API Значение по умолчанию для iid параметр model_selection.GridSearchCV и model_selection.RandomizedSearchCV изменится с True to False в версии 0.22 для соответствия стандартному определению перекрестной проверки, и параметр будет удален в версии 0.24 полностью. Этот параметр имеет наибольшее практическое значение, когда размеры различных тестовых наборов в перекрестной проверке были очень неравными, т.е. в стратегиях CV на основе групп. #9085 by Laurent Direr и Андреас Мюллер.

  • Изменение API Значение по умолчанию для error_score параметр в model_selection.GridSearchCV и model_selection.RandomizedSearchCV изменится на np.NaN в версии 0.22. #10677 by Кирилл Жданович.

  • Изменение API Изменено исключение ValueError, вызванное в model_selection.ParameterSampler к UserWarning для случая, когда класс инициализирован с большим значением n_iter чем общее пространство параметров в сетке параметров. n_iter теперь действует как верхняя граница итераций. #10982 by Juliet Lawton

  • Изменение API Неверный ввод для model_selection.ParameterGrid теперь вызывает TypeError. #10928 by Solutus Immensus

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neighbors#

  • Эффективность neighbors.RadiusNeighborsRegressor и neighbors.RadiusNeighborsClassifier теперь распараллеливаются в соответствии с n_jobs независимо от algorithm. #10887 by Joël Billaud.

  • Эффективность sklearn.neighbors методы запроса теперь более эффективны по памяти, когда algorithm='brute'. #11136 by Joel Nothman и Aman Dalmia.

  • Функция Добавить sample_weight параметр методу fit объекта neighbors.KernelDensity для включения взвешивания в оценку плотности ядра. #4394 by Samuel O. Ronsin.

  • Функция Обнаружение новизны с neighbors.LocalOutlierFactor: Добавьте novelty параметр для neighbors.LocalOutlierFactor. Когда novelty установлено в True, neighbors.LocalOutlierFactor затем может использоваться для обнаружения новизны, т.е. предсказания на новых, ранее невиданных данных. Доступные методы предсказания: predict, decision_function и score_samples. По умолчанию, novelty установлено в False, и только fit_predict метод доступен. По Альберт Томас.

  • Исправление Исправлена ошибка в neighbors.NearestNeighbors где обучение модели NearestNeighbors завершается неудачей, когда a) используемая метрика расстояния является вызываемой и b) входные данные для модели NearestNeighbors разрежены. #9579 by Томас Кобер.

  • Исправление Исправлена ошибка, чтобы predict в neighbors.RadiusNeighborsRegressor может обрабатывать пустое множество соседей при использовании неравномерных весов. Также выдает новое предупреждение, когда не найдены соседи для образцов. #9655 by Андреас Бьерре-Нильсен.

  • Исправление Эффективность Исправлена ошибка в KDTree конструкция, которая приводит к более быстрому построению и времени запросов. #11556 by Jake VanderPlas

  • Исправление Исправлена ошибка в neighbors.KDTree и neighbors.BallTree где сериализованные объекты дерева изменят свой тип на суперкласс BinaryTree. #11774 by Nicolas Hug.

sklearn.neural_network#

sklearn.pipeline#

  • Функция The predict метод pipeline.Pipeline теперь передаёт ключевые аргументы последнему оценщику в конвейере, позволяя использовать параметры, такие как return_std в конвейере с осторожностью. #9304 by Breno Freitas.

  • Изменение API pipeline.FeatureUnion теперь поддерживает 'drop' в качестве трансформатора для удаления признаков. #11144 by Томас Фан.

sklearn.preprocessing#

sklearn.svm#

  • Исправление Исправлена ошибка в svm.SVC где когда аргумент kernel является юникодом в Python2, predict_proba метод вызывал неожиданную TypeError при плотных входных данных. #10412 by Цзёнъянь Чжан.

  • Изменение API Устарело random_state параметр в svm.OneClassSVM так как базовая реализация не является случайной. #9497 by Альберт Томас.

  • Изменение API Значение по умолчанию для gamma параметр svm.SVC, NuSVC, SVR, NuSVR, OneClassSVM изменится с 'auto' to 'scale' в версии 0.22 для лучшего учета ненормированных признаков. #8361 by Гаурав Дхингра и Ting Neo.

sklearn.tree#

  • Улучшение Хотя приватный (и, следовательно, не гарантирует стабильность API), tree._criterion.ClassificationCriterion и tree._criterion.RegressionCriterion теперь могут быть импортированы через cimport и расширены. #10325 by Camil Staps.

  • Исправление Исправлена ошибка в tree.BaseDecisionTree с splitter="best" где порог разделения мог стать бесконечным, когда значения в X были близки к бесконечности. #10536 by Jonathan Ohayon.

  • Исправление Исправлена ошибка в tree.MAE чтобы гарантировать использование весов образцов во время вычисления нечистоты дерева MAE. Предыдущее поведение могло приводить к выбору субоптимальных разбиений, поскольку вычисление нечистоты считало все образцы одинаково важными по весу. #11464 by John Stott.

sklearn.utils#

  • Функция utils.check_array и utils.check_X_y теперь имеют accept_large_sparse для управления тем, должны ли отклоняться разреженные матрицы scipy.sparse с 64-битными индексами. #11327 by Каран Дхингра и Joel Nothman.

  • Эффективность Исправление Избегайте копирования данных в utils.check_array когда входные данные являются memmap (и copy=False). #10663 by Артур Менш и Loïc Estève.

  • Изменение API utils.check_array давать FutureWarning указывая, что массивы байтов/строк будут интерпретироваться как десятичные числа, начиная с версии 0.22. #10229 by Ryan Lee

Несколько модулей#

  • Функция Изменение API Более согласованный API для обнаружения выбросов: добавлен score_samples метод в svm.OneClassSVM, ensemble.IsolationForest, neighbors.LocalOutlierFactor, covariance.EllipticEnvelope. Это позволяет получить доступ к исходным функциям оценки из оригинальных статей. Новый offset_ параметр позволяет связать score_samples и decision_function методов. contamination параметр ensemble.IsolationForest и neighbors.LocalOutlierFactor decision_function методов используется для определения этого offset_ такие, что выбросы (соответственно, нормальные точки) имеют отрицательные (соответственно, положительные) decision_function значения. По умолчанию, contamination остается неизменным на уровне 0.1 в течение периода устаревания. В версии 0.22 он будет установлен на “auto”, используя смещения оценок, специфичные для метода. В covariance.EllipticEnvelope decision_function метод, raw_values параметр устарел, так как смещенное расстояние Махаланобиса будет всегда возвращаться в версии 0.22. #9015 by Nicolas Goix.

  • Функция Изменение API A behaviour параметр был введен в ensemble.IsolationForest для обеспечения обратной совместимости. В старом поведении decision_function не зависит от contamination параметр. Пороговый атрибут, зависящий от contamination параметр, таким образом, используется. В новом поведении decision_function зависит от contamination параметр таким образом, что 0 становится его естественным порогом для обнаружения выбросов. Установка behaviour в "old" устарела и будет невозможна в версии 0.22. Кроме того, параметр behaviour будет удалён в 0.24. #11553 by Nicolas Goix.

  • Изменение API Добавлено предупреждение о сходимости в svm.LinearSVC и linear_model.LogisticRegression когда verbose установлено в 0. #10881 by Alexandre Sevin.

  • Изменение API Изменён тип предупреждения с UserWarning to exceptions.ConvergenceWarning для неудачной сходимости в linear_model.logistic_regression_path, linear_model.RANSACRegressor, linear_model.ridge_regression, gaussian_process.GaussianProcessRegressor, gaussian_process.GaussianProcessClassifier, decomposition.fastica, cross_decomposition.PLSCanonical, cluster.AffinityPropagation, и cluster.Birch. #10306 by Джонатан Зиберт.

Разное#

  • Основная функция Новый параметр конфигурации, working_memory был добавлен для контроля ограничений потребления памяти в операциях с чанками, таких как новый metrics.pairwise_distances_chunked. См. Ограничение рабочей памяти. #10280 by Joel Nothman и Aman Dalmia.

  • Функция Версия joblib Версия joblib, поставляемая с Scikit-learn, теперь 0.12. В ней используется новая реализация многопроцессорности по умолчанию, названная loky. Хотя это может повлечь некоторые затраты памяти и передачи данных, это должно обеспечить большую кроссплатформенную стабильность, чем использование стандартной библиотеки multiprocessing Python. #11741 разработчиками Joblib, особенно Томас Море и Оливье Гризель.

  • Функция Была добавлена переменная окружения для использования site joblib вместо встроенного (Переменные окружения). Основной API joblib теперь представлен в sklearn.utils. #11166 by Гаэль Варокво.

  • Функция Добавлена почти полная поддержка PyPy 3. Известные неподдерживаемые функциональности: datasets.load_svmlight_file, feature_extraction.FeatureHasher и feature_extraction.text.HashingVectorizer. Для работы на PyPy требуются PyPy3-v5.10+, Numpy 1.14.0+ и scipy 1.1.0+. #11010 by Ronan Lamy и Roman Yurchak.

  • Функция Вспомогательный метод sklearn.show_versions был добавлен для вывода информации, полезной для отладки. Он включает пользовательскую систему, исполняемый файл Python, версии основных библиотек и информацию о привязке BLAS. #11596 by Alexandre Boucaud

  • Исправление Исправлена ошибка при установке параметров на мета-оценщике, затрагивающая как обёрнутый оценщик, так и его параметр. #9999 by Marcus Voss и Joel Nothman.

  • Исправление при попытке доступа к отсутствующему атрибуту ( sklearn.base.clone не был потокобезопасным и мог привести к ошибке "pop from empty list". #9569 by Андреас Мюллер.

  • Изменение API Значение по умолчанию для n_jobs изменен с 1 to None во всех связанных функциях и классах. n_jobs=None средние значения unsetОбычно это будет интерпретироваться как n_jobs=1, если только текущий joblib.Parallel контекст backend указывает иное (см. Глоссарий для дополнительной информации). Обратите внимание, что это изменение происходит немедленно (т.е. без цикла устаревания). #11741 by Оливье Гризель.

  • Исправление Исправлена ошибка в вспомогательных функциях валидации, где передача DataFrame Dask приводит к ошибке. #12462 by Захария Миллер

Изменения в проверках оценщика#

Эти изменения в основном затрагивают разработчиков библиотек.

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

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

211217613, Aarshay Jain, absolutelyNoWarranty, Adam Greenhall, Adam Kleczewski, Adam Richie-Halford, adelr, AdityaDaflapurkar, Adrin Jalali, Aidan Fitzgerald, aishgrt1, Akash Shivram, Alan Liddell, Alan Yee, Albert Thomas, Alexander Lenail, Alexander-N, Alexandre Boucaud, Alexandre Gramfort, Alexandre Sevin, Alex Egg, Alvaro Perez-Diaz, Amanda, Aman Dalmia, Andreas Bjerre-Nielsen, Andreas Mueller, Andrew Peng, Angus Williams, Aniruddha Dave, annaayzenshtat, Anthony Gitter, Antonio Quinonez, Anubhav Marwaha, Arik Pamnani, Arthur Ozga, Artiem K, Arunava, Arya McCarthy, Attractadore, Aurélien Bellet, Aurélien Geron, Ayush Gupta, Balakumaran Manoharan, Bangda Sun, Barry Hart, Bastian Venthur, Ben Lawson, Benn Roth, Breno Freitas, Brent Yi, brett koonce, Caio Oliveira, Camil Staps, cclauss, Chady Kamar, Charlie Brummitt, Charlie Newey, chris, Chris, Chris Catalfo, Chris Foster, Chris Holdgraf, Christian Braune, Christian Hirsch, Christian Hogan, Christopher Jenness, Clement Joudet, cnx, cwitte, Dallas Card, Dan Barkhorn, Daniel, Daniel Ferreira, Daniel Gomez, Daniel Klevebring, Danielle Shwed, Daniel Mohns, Danil Baibak, Darius Morawiec, David Beach, David Burns, David Kirkby, David Nicholson, David Pickup, Derek, Didi Bar-Zev, diegodlh, Dillon Gardner, Dillon Niederhut, dilutedsauce, dlovell, Dmitry Mottl, Dmitry Petrov, Dor Cohen, Douglas Duhaime, Ekaterina Tuzova, Eric Chang, Eric Dean Sanchez, Erich Schubert, Eunji, Fang-Chieh Chou, FarahSaeed, felix, Félix Raimundo, fenx, filipj8, FrankHui, Franz Wompner, Freija Descamps, frsi, Gabriele Calvo, Gael Varoquaux, Gaurav Dhingra, Georgi Peev, Gil Forsyth, Giovanni Giuseppe Costa, gkevinyen5418, goncalo-rodrigues, Gryllos Prokopis, Guillaume Lemaitre, Guillaume “Vermeille” Sanchez, Gustavo De Mari Pereira, hakaa1, Hanmin Qin, Henry Lin, Hong, Honghe, Hossein Pourbozorg, Hristo, Hunan Rostomyan, iampat, Ivan PANICO, Jaewon Chung, Jake VanderPlas, jakirkham, James Bourbeau, James Malcolm, Jamie Cox, Jan Koch, Jan Margeta, Jan Schlüter, janvanrijn, Jason Wolosonovich, JC Liu, Jeb Bearer, jeremiedbb, Jimmy Wan, Jinkun Wang, Jiongyan Zhang, jjabl, jkleint, Joan Massich, Joël Billaud, Joel Nothman, Johannes Hansen, JohnStott, Jonatan Samoocha, Jonathan Ohayon, Jörg Döpfert, Joris Van den Bossche, Jose Perez-Parras Toledano, josephsalmon, jotasi, jschendel, Julian Kuhlmann, Julien Chaumond, julietcl, Justin Shenk, Karl F, Kasper Primdal Lauritzen, Katrin Leinweber, Kirill, ksemb, Kuai Yu, Kumar Ashutosh, Kyeongpil Kang, Kye Taylor, kyledrogo, Leland McInnes, Léo DS, Liam Geron, Liutong Zhou, Lizao Li, lkjcalc, Loic Esteve, louib, Luciano Viola, Lucija Gregov, Luis Osa, Luis Pedro Coelho, Luke M Craig, Luke Persola, Mabel, Mabel Villalba, Maniteja Nandana, MarkIwanchyshyn, Mark Roth, Markus Müller, MarsGuy, Martin Gubri, martin-hahn, martin-kokos, mathurinm, Matthias Feurer, Max Copeland, Mayur Kulkarni, Meghann Agarwal, Melanie Goetz, Michael A. Alcorn, Minghui Liu, Ming Li, Minh Le, Mohamed Ali Jamaoui, Mohamed Maskani, Mohammad Shahebaz, Muayyad Alsadi, Nabarun Pal, Nagarjuna Kumar, Naoya Kanai, Narendran Santhanam, NarineK, Nathaniel Saul, Nathan Suh, Nicholas Nadeau, P.Eng., AVS, Nick Hoh, Nicolas Goix, Nicolas Hug, Nicolau Werneck, nielsenmarkus11, Nihar Sheth, Nikita Titov, Nilesh Kevlani, Nirvan Anjirbag, notmatthancock, nzw, Oleksandr Pavlyk, oliblum90, Oliver Rausch, Olivier Grisel, Oren Milman, Osaid Rehman Nasir, pasbi, Patrick Fernandes, Patrick Olden, Paul Paczuski, Pedro Morales, Peter, Peter St. John, pierreablin, pietruh, Pinaki Nath Chowdhury, Piotr Szymański, Pradeep Reddy Raamana, Pravar D Mahajan, pravarmahajan, QingYing Chen, Raghav RV, Rajendra arora, RAKOTOARISON Herilalaina, Rameshwar Bhaskaran, RankyLau, Rasul Kerimov, Reiichiro Nakano, Rob, Roman Kosobrodov, Roman Yurchak, Ronan Lamy, rragundez, Rüdiger Busche, Ryan, Sachin Kelkar, Sagnik Bhattacharya, Sailesh Choyal, Sam Radhakrishnan, Sam Steingold, Samuel Bell, Samuel O. Ronsin, Saqib Nizam Shamsi, SATISH J, Saurabh Gupta, Scott Gigante, Sebastian Flennerhag, Sebastian Raschka, Sebastien Dubois, Sébastien Lerique, Sebastin Santy, Sergey Feldman, Sergey Melderis, Sergul Aydore, Shahebaz, Shalil Awaley, Shangwu Yao, Sharad Vijalapuram, Sharan Yalburgi, shenhanc78, Shivam Rastogi, Shu Haoran, siftikha, Sinclert Pérez, SolutusImmensus, Somya Anand, srajan paliwal, Sriharsha Hatwar, Sri Krishna, Stefan van der Walt, Stephen McDowell, Steven Brown, syonekura, Taehoon Lee, Takanori Hayashi, tarcusx, Taylor G Smith, theriley106, Thomas, Thomas Fan, Thomas Heavey, Tobias Madsen, tobycheese, Tom Augspurger, Tom Dupré la Tour, Tommy, Trevor Stephens, Trishnendu Ghorai, Tulio Casagrande, twosigmajab, Umar Farouk Umar, Urvang Patel, Utkarsh Upadhyay, Vadim Markovtsev, Varun Agrawal, Vathsala Achar, Vilhelm von Ehrenheim, Vinayak Mehta, Vinit, Vinod Kumar L, Viraj Mavani, Viraj Navkal, Vivek Kumar, Vlad Niculae, vqean3, Vrishank Bhardwaj, vufg, wallygauze, Warut Vijitbenjaronk, wdevazelhes, Wenhao Zhang, Wes Barnett, Will, William de Vazelhes, Will Rosenfeld, Xin Xiong, Yiming (Paul) Li, ymazari, Yufeng, Zach Griffith, Zé Vinícius, Zhenqing Hu, Zhiqing Xiao, Zijie (ZJ) Poh