Версия 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 byAndreas Schuderer.
sklearn.decomposition#
Исправление Исправлена ошибка в
cross_decomposition.CCAулучшая числовую устойчивость, когдаYблизко к нулю. #13903 by Томас Фан.
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#
Исправление Исправлена ошибка в
cluster.KMeansгде вычисления были однопоточными, когдаn_jobs > 1илиn_jobs = -1. #12949 by Прабакаран Кумарессан.
sklearn.compose#
Исправление Исправлена ошибка в
compose.ColumnTransformerдля обработки отрицательных индексов в списке столбцов трансформеров. #12946 by Pierre Tallotte.
sklearn.covariance#
Исправление Исправлена регрессия в
covariance.graphical_lassoтак что случайn_features=2обрабатывается корректно. #13276 by Aurélien Bellet.
sklearn.decomposition#
Исправление Исправлена ошибка в
decomposition.sparse_encodeгде вычисления были однопоточными, когдаn_jobs > 1илиn_jobs = -1. #13005 by Прабакаран Кумарессан.
sklearn.datasets#
Эффективность
sklearn.datasets.fetch_openmlтеперь загружает данные потоково, избегая высокого использования памяти. #13312 by Joris Van den Bossche.
sklearn.feature_extraction#
Исправление Исправлена ошибка в
feature_extraction.text.CountVectorizerчто привело бы к тому, что разреженная матрица признаков будет иметь конфликтующиеindptrиindicesточности при очень больших словарях. #11295 by Габриэль Вакалиук.
sklearn.impute#
Исправление добавить поддержку нечисловых данных в
sklearn.impute.MissingIndicatorчто не поддерживалось, покаsklearn.impute.SimpleImputerподдерживал это для некоторых стратегий импутации. #13046 by Guillaume Lemaitre.
sklearn.linear_model#
Исправление Исправлена ошибка в
linear_model.MultiTaskElasticNetиlinear_model.MultiTaskLassoкоторые ломались, когдаwarm_start = True. #12360 by Aakanksha Joshi.
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#
Исправление Исправлена ошибка в
metrics.pairwise_distancesиmetrics.pairwise_distances_chunkedгде параметрыVof"seuclidean"иVIof"mahalanobis"метрики были вычислены после разделения данных на блоки вместо предварительного вычисления на всех данных. #12701 by Jeremie du Boisberranger.
sklearn.neighbors#
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.
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
decomposition.IncrementalPCA(исправление ошибки)
Журнал изменений#
sklearn.cluster#
Эффективность make
cluster.MeanShiftбольше не пытаться выполнять вложенный параллелизм, так как накладные расходы значительно ухудшат производительность, когдаn_jobs > 1. #12159 by Оливье Гризель.Исправление Исправлена ошибка в
cluster.DBSCANс предвычисленным разреженным графом соседей, который добавляет явные нули на диагональ, даже если они уже присутствуют. #12105 by Tom Dupre la Tour.
sklearn.compose#
Исправление Исправлена проблема в
compose.ColumnTransformerпри объединении столбцов с типами, не преобразуемыми в числовые. #11912 by Адрин Джалали.Изменение API
compose.ColumnTransformerтеперь применяетsparse_thresholdдаже если все результаты преобразования разрежены. #12304 by Andreas Müller.Изменение API
compose.make_column_transformerтеперь ожидает(transformer, columns)вместо(columns, transformer)чтобы сохранить согласованность сcompose.ColumnTransformer. #12339 by Адрин Джалали.
sklearn.datasets#
Исправление
datasets.fetch_openmlдля правильного использования локального кэша. #12246 by Ян Н. ван Рейн.Исправление
datasets.fetch_openmlдля корректной обработки игнорируемых атрибутов и атрибутов идентификаторов строк. #12330 by Ян Н. ван Рейн.Исправление Исправлено переполнение целых чисел в
datasets.make_classificationдля значенийn_informativeпараметр больше 64. #10811 by Roman Feldbauer.Исправление Фиксированный набор данных лиц Olivetti
DESCRатрибут для указания правильного местоположения вdatasets.fetch_olivetti_faces. #12441 by Жереми дю БуаберранжеИсправление
datasets.fetch_openmlдля повторной попытки загрузки при сбое чтения из локального кэша. #12517 by Томас Фан.
sklearn.decomposition#
Исправление Исправлена регрессия в
decomposition.IncrementalPCAгде 0.20.0 вызывал ошибку, если количество выборок в финальном пакете для обучения IncrementalPCA было меньше n_components. #12234 by Ming Li.
sklearn.ensemble#
Исправление Исправлена ошибка, в основном затрагивающая
ensemble.RandomForestClassifierгдеclass_weight='balanced_subsample'завершился неудачей с более чем 32 классами. #12165 by Joel Nothman.Исправление Исправлена ошибка, влияющая на
ensemble.BaggingClassifier,ensemble.BaggingRegressorиensemble.IsolationForest, гдеmax_featuresиногда округлялся до нуля. #12388 by Коннор Танн.
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#
Исправление Исправлена ошибка в
metrics.pairwise.pairwise_distances_argmin_minкоторый возвращал квадратный корень расстояния, когда параметр metric был установлен в "euclidean". #12481 by Жереми дю Буаберранже.Исправление Исправлена ошибка в
metrics.pairwise.pairwise_distances_chunkedкоторая не гарантировала нулевую диагональ для евклидовых расстояний. #12612 by Андреас Мюллер.Изменение API The
metrics.calinski_harabaz_scoreбыл переименован вmetrics.calinski_harabasz_scoreи будет удален в версии 0.23. #12211 by Лиза Томас, Марк Ханнел и Melissa Ferrari.
sklearn.mixture#
Исправление Убедитесь, что
fit_predictметодmixture.GaussianMixtureиmixture.BayesianGaussianMixtureвсегда дают назначения, согласованные сfitс последующимpredictдаже если критерий сходимости слишком слабый или не выполнен. #12451 by Оливье Гризель.
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атрибут. Thetransformметод теперь потокобезопасен. #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#30399box-coxtoyeo-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.
Извините, если ваш вклад не попал в основные моменты. Здесь много материала...
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
cluster.MeanShift(исправление ошибки)decomposition.IncrementalPCAв Python 2 (исправление ошибки)decomposition.SparsePCA(исправление ошибки)ensemble.GradientBoostingClassifier(исправление ошибки, влияющей на важность признаков)isotonic.IsotonicRegression(исправление ошибки)linear_model.ARDRegression(исправление ошибки)linear_model.LogisticRegressionCV(исправление ошибки)linear_model.OrthogonalMatchingPursuit(исправление ошибки)linear_model.PassiveAggressiveClassifier(исправление ошибки)linear_model.PassiveAggressiveRegressor(исправление ошибки)linear_model.Perceptron(исправление ошибки)linear_model.SGDClassifier(исправление ошибки)linear_model.SGDRegressor(исправление ошибки)metrics.roc_auc_score(исправление ошибки)metrics.roc_curve(исправление ошибки)neural_network.BaseMultilayerPerceptron(исправление ошибки)neural_network.MLPClassifier(исправление ошибки)neural_network.MLPRegressor(исправление ошибки)В примечаниях к выпуску v0.19.0 не упоминалась обратная несовместимость с
model_selection.StratifiedKFoldкогдаshuffle=Trueиз-за #7823.
Подробности перечислены в журнале изменений ниже.
(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)
Известные серьезные ошибки#
#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#
Новый модуль.
Основная функция Добавлен
compose.ColumnTransformer, что позволяет применять разные преобразователи к разным столбцам массивов или pandas DataFrame. #9012 by Андреас Мюллер и Joris Van den Bossche, и #11315 by Томас Фан.Основная функция Добавлен
compose.TransformedTargetRegressorкоторый преобразует целевую переменную y перед подгонкой регрессионной модели. Прогнозы отображаются обратно в исходное пространство с помощью обратного преобразования. #9041 by Андреас Мюллер и Guillaume Lemaitre.
sklearn.covariance#
Эффективность Улучшения производительности для
covariance.GraphicalLasso. #9858 by Стивен Браун.Изменение API The
covariance.graph_lasso,covariance.GraphLassoиcovariance.GraphLassoCVбыли переименованы вcovariance.graphical_lasso,covariance.GraphicalLassoиcovariance.GraphicalLassoCVсоответственно и будут удалены в версии 0.22. #9993 by Artiem Krinitsyn
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: теперь возникает ошибка, если количество компонентов больше выбранного размера пакета. Then_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#
Эффективность Улучшение использования памяти для
_class_meansи_class_covвsklearn.discriminant_analysis. #10898 by Nanxin Chen.
sklearn.dummy#
Функция
dummy.DummyRegressorтеперь имеетreturn_stdопция в егоpredictметод. Возвращаемые стандартные отклонения будут нулями.Функция
dummy.DummyClassifierиdummy.DummyRegressorтеперь требуют, чтобы X был объектом с конечной длиной или формой. #9832 by Vrishank Bhardwaj.Функция
dummy.DummyClassifierиdummy.DummyRegressorтеперь можно оценивать без предоставления тестовых образцов. #11951 by Рюдигер Буш.
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#
Функция Включить вызов
get_feature_namesв необученномfeature_extraction.text.CountVectorizerинициализированный словарём. #10908 by Mohamed Maskani.Улучшение
idf_теперь можно установить наfeature_extraction.text.TfidfTransformer. #10899 by Сергей Мелдерис.Исправление Исправлена ошибка в
feature_extraction.image.extract_patches_2dкоторый выбросил бы исключение, еслиmax_patchesбыло больше или равно количеству всех возможных патчей, а не просто возвращалось количество возможных патчей. #10101 by Varun AgrawalИсправление Исправлена ошибка в
feature_extraction.text.CountVectorizer,feature_extraction.text.TfidfVectorizer,feature_extraction.text.HashingVectorizerдля поддержки 64-битной индексации разреженных массивов, необходимой для обработки больших наборов данных с более чем 2·10⁹ токенов (слов или n-грамм). #9147 by Claes-Fredrik Mannby и Roman Yurchak.Исправление Исправлена ошибка в
feature_extraction.text.TfidfVectorizerкоторый игнорировал параметрdtype. Кроме того,feature_extraction.text.TfidfTransformerсохранитdtypeдля плавающей запятой и выдавать предупреждение, еслиdtypeзапрошенное значение является целым числом. #10441 by Mayur Kulkarni и Guillaume Lemaitre.
sklearn.feature_selection#
Функция Добавлена функциональность выбора K лучших признаков в
feature_selection.SelectFromModel. #6689 by Нихар Шет и Quazi Rahman.Функция Добавлен
min_features_to_selectпараметр дляfeature_selection.RFECVдля ограничения оценённых подсчётов признаков. #11293 by Brent Yi.Функция
feature_selection.RFECVметод fit теперь поддерживает группы. #9656 by Adam Greenhall.Исправление Исправлено вычисление
n_features_to_computeдля крайнего случая с одинаковыми оценками CV вfeature_selection.RFECV. #9222 by Nick Hoh.
sklearn.gaussian_process#
Эффективность В
gaussian_process.GaussianProcessRegressor, методpredictбыстрее при использованииreturn_std=Trueв частности, чаще при нескольких последовательных вызовах. #9234 by andrewww и Минхуэй Лю.
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#
Функция
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorиlinear_model.Perceptronтеперь предоставляютearly_stopping,validation_fractionиn_iter_no_changeпараметров, чтобы остановить оптимизацию, отслеживая оценку на проверочном наборе. Новая скорость обучения"adaptive"стратегия делит скорость обучения на 5 каждый разn_iter_no_changeпоследовательные эпохи не улучшают модель. #9043 by Tom Dupre la Tour.Функция Добавить
sample_weightпараметр методу fit объектаlinear_model.BayesianRidgeдля взвешенной линейной регрессии. #10112 by Питер Сент-Джон.Исправление Исправлена ошибка в
logistic.logistic_regression_pathчтобы гарантировать, что возвращаемые коэффициенты корректны, когдаmulticlass='multinomial'. Ранее некоторые коэффициенты перезаписывали друг друга, что приводило к некорректным результатам вlinear_model.LogisticRegressionCV. #11724 by Nicolas Hug.Исправление Исправлена ошибка в
linear_model.LogisticRegressionгде при использовании параметраmulti_class='multinomial',predict_probaметод возвращал некорректные вероятности в случае бинарных исходов. #9939 by Roger Westover.Исправление Исправлена ошибка в
linear_model.LogisticRegressionCVгдеscoreметод всегда вычисляет точность, а не метрику, заданную параметромscoringпараметр. #10998 by Томас Фан.Исправление Исправлена ошибка в
linear_model.LogisticRegressionCVгде стратегия 'ovr' всегда использовалась для вычисления кросс-валидационных оценок в многоклассовой настройке, даже если'multinomial'был установлен. #8720 by William de Vazelhes.Исправление Исправлена ошибка в
linear_model.OrthogonalMatchingPursuitкоторый был сломан при установкеnormalize=False. #10071 by Александр Грамфор.Исправление Исправлена ошибка в
linear_model.ARDRegressionчто привело к некорректному обновлению оценок стандартного отклонения и коэффициентов. #10153 by Jörg Döpfert.Исправление Исправлена ошибка в
linear_model.ARDRegressionиlinear_model.BayesianRidgeчто вызывало NaN предсказания при обучении с постоянной целью. #10095 by Jörg Döpfert.Исправление Исправлена ошибка в
linear_model.RidgeClassifierCVгде параметрstore_cv_valuesне был реализован, хотя был задокументирован вcv_valuesкак способ настройки хранения значений перекрёстной проверки для разных alpha. #10297 by Mabel Villalba-Jiménez.Исправление Исправлена ошибка в
linear_model.ElasticNetчто приводило к перезаписи входных данных при использовании параметраcopy_X=Trueиcheck_input=False. #10581 by Yacine Mazari.Исправление Исправлена ошибка в
sklearn.linear_model.Lassoгде коэффициент имел неправильную форму, когдаfit_intercept=False. #10687 by Martin Hahn.Исправление Исправлена ошибка в
sklearn.linear_model.LogisticRegressionгдеmulti_class='multinomial'с бинарным выводомwith warm_start=True#10836 by Aishwarya Srinivasan.Исправление Исправлена ошибка в
linear_model.RidgeCVгде использование целочисленногоalphasвызвал ошибку. #10397 by Mabel Villalba-Jiménez.Исправление Исправлено условие, запускающее вычисление разрыва в
linear_model.Lassoиlinear_model.ElasticNetпри работе с разреженными матрицами. #10992 by Александр Грамфор.Исправление Исправлена ошибка в
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorиlinear_model.Perceptron, где критерием остановки была остановка алгоритма до сходимости. Параметрn_iter_no_changeбыл добавлен и установлен по умолчанию в 5. Предыдущее поведение эквивалентно установке параметра в 1. #9043 by Tom Dupre la Tour.Исправление Исправлена ошибка, при которой оценщики на основе liblinear и libsvm вызывали segfault, если им передавали scipy.sparse матрицу с 64-битными индексами. Теперь они вызывают ValueError. #11327 by Каран Дхингра и Joel Nothman.
Изменение API Значения по умолчанию для
solverиmulti_classпараметрыlinear_model.LogisticRegressionизменятся соответственно с'liblinear'и'ovr'в версии 0.20 до'lbfgs'и'auto'в версии 0.22. FutureWarning выдается при использовании значений по умолчанию. #11905 by Tom Dupre la Tour и Joel Nothman.Изменение API Устарело
positive=Trueопция вlinear_model.Larsтак как базовая реализация неисправна. Используйтеlinear_model.Lassoвместо этого. #9837 by Александр Грамфор.Изменение API
n_iter_может отличаться от предыдущих выпусков вlinear_model.LogisticRegressionсsolver='lbfgs'иlinear_model.HuberRegressor. Для Scipy <= 1.0.0, оптимизатор мог выполнять больше запрошенного максимального количества итераций. Теперь оба оценщика будут сообщать не болееmax_iterитераций, даже если было выполнено больше. #10723 by Joel Nothman.
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#
Основная функция Добавлен
metrics.davies_bouldin_scoreметрика для оценки моделей кластеризации без эталонной истины. #10827 by Луис Оса.Основная функция Добавлен
metrics.balanced_accuracy_scoreдля получения дополнительной информации о регрессоре.'balanced_accuracy'оценщик для бинарной и многоклассовой классификации. #8066 by @xyguo и Aman Dalmia, и #10587 by Joel Nothman.Функция Частичная AUC доступна через
max_fprпараметр вmetrics.roc_auc_score. #3840 by Александр Нидербюль.Функция Оценщик на основе
metrics.brier_score_lossтакже доступен. #9521 by Hanmin Qin.Функция Добавлен контроль над нормализацией в
metrics.normalized_mutual_info_scoreиmetrics.adjusted_mutual_info_scoreчерезaverage_methodпараметр. В версии 0.22 стандартным нормализатором для каждого станет арифметика среднее значение энтропий каждого кластеризации. #11124 by Ария Маккарти.Функция Добавлен
output_dictпараметр вmetrics.classification_reportвозвращает статистику классификации в виде словаря. #11160 by Dan Barkhorn.Функция
metrics.classification_reportтеперь сообщает все применимые средние на данных данных, включая микро-, макро- и взвешенное среднее, а также среднее по образцам для многометочных данных. #11679 by Александр Пача.Функция
metrics.average_precision_scoreтеперь поддерживает бинарныйy_trueкроме{0, 1}или{-1, 1}черезpos_labelпараметр. #9980 by Hanmin Qin.Функция
metrics.label_ranking_average_precision_scoreтеперь поддерживаетsample_weight. #10845 by Jose Perez-Parras Toledano.Функция Добавить
dense_outputпараметр дляmetrics.pairwise.linear_kernel. Когда False и оба входа разрежены, вернет разреженную матрицу. #10999 by Taylor G Smith.Эффективность
metrics.silhouette_scoreиmetrics.silhouette_samplesболее эффективны по памяти и работают быстрее. Это позволяет избежать некоторых сообщений о зависаниях и ошибках памяти. #11135 by Joel Nothman.Исправление Исправлена ошибка в
metrics.precision_recall_fscore_supportпри усеченииrange(n_labels)передаётся как значение дляlabels. #10377 by Гаурав Дхингра.Исправление Исправлена ошибка, вызванная погрешностью чисел с плавающей запятой в
metrics.roc_auc_scoreс нецелочисленными весами выборок. #9786 by Hanmin Qin.Исправление Исправлена ошибка, где
metrics.roc_curveиногда начинается на оси y вместо (0, 0), что не соответствует документации и другим реализациям. Обратите внимание, что это не повлияет на результат отmetrics.roc_auc_score#10093 by alexryndin и Hanmin Qin.Исправление Исправлена ошибка для избежания переполнения целых чисел. Приведено произведение к 64-битному целому числу в
metrics.mutual_info_score. #9772 by Kumar Ashutosh.Исправление Исправлена ошибка, где
metrics.average_precision_scoreиногда возвращаетnanкогдаsample_weightсодержит 0. #9980 by Hanmin Qin.Исправление Исправлена ошибка в
metrics.fowlkes_mallows_scoreчтобы избежать целочисленного переполнения. Приведенное возвращаемое значениеcontingency_matrixtoint64и вычислено произведение квадратных корней, а не квадратный корень произведения. #9515 by Алан Лидделл и Мань Дао.Изменение API Устарело
reorderпараметр вmetrics.aucтак как это больше не требуется дляmetrics.roc_auc_score. Более того, использованиеreorder=Trueможет скрывать ошибки из-за погрешности с плавающей запятой во входных данных. #9851 by Hanmin Qin.Изменение API В
metrics.normalized_mutual_info_scoreиmetrics.adjusted_mutual_info_score, предупреждает, чтоaverage_methodбудет иметь новое значение по умолчанию. В версии 0.22, стандартный нормализатор для каждого станет арифметика среднее значение энтропий каждого кластеризации. В настоящее время,metrics.normalized_mutual_info_scoreиспользует значение по умолчаниюaverage_method='geometric', иmetrics.adjusted_mutual_info_scoreиспользует значение по умолчаниюaverage_method='max'чтобы соответствовать их поведению в версии 0.19. #11124 by Ария Маккарти.Изменение API The
batch_sizeпараметр дляmetrics.pairwise_distances_argmin_minиmetrics.pairwise_distances_argminустарела и будет удалена в версии 0.22. Она больше не оказывает никакого эффекта, так как размер пакета определяется глобальноworking_memoryconfig. См. Ограничение рабочей памяти. #10280 by Joel Nothman и Aman Dalmia.
sklearn.mixture#
Функция Добавлена функция fit_predict to
mixture.GaussianMixtureиmixture.GaussianMixture, что по сути эквивалентно вызову fit и predict. #10336 by Шу Хаоран и Andrew Peng.Исправление Исправлена ошибка в
mixture.BaseMixtureгде сообщённыйn_iter_не хватало итерации. Это повлиялоmixture.GaussianMixtureиmixture.BayesianGaussianMixture. #10740 by Erich Schubert и Guillaume Lemaitre.Исправление Исправлена ошибка в
mixture.BaseMixtureи его подклассыmixture.GaussianMixtureиmixture.BayesianGaussianMixtureгдеlower_bound_не был максимальной нижней границей по всем инициализациям (когдаn_init > 1), но только нижнюю границу последней инициализации. #10869 by Aurélien Géron.
sklearn.model_selection#
Функция Добавить
return_estimatorпараметр вmodel_selection.cross_validateдля возврата оценщиков, обученных на каждом разделе. #9686 by Aurélien Bellet.Функция Новый
refit_time_атрибут будет сохранён вmodel_selection.GridSearchCVиmodel_selection.RandomizedSearchCVifrefitустановлено в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изменится сTruetoFalseв версии 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#
Основная функция Добавлен
multioutput.RegressorChainдля многозадачной регрессии. #9257 by Kumar Ashutosh.
sklearn.naive_bayes#
Основная функция Добавлен
naive_bayes.ComplementNB, который реализует классификатор Complement Naive Bayes, описанный в Rennie et al. (2003). #8190 by Michael A. Alcorn.Функция Добавить
var_smoothingпараметр вnaive_bayes.GaussianNBявляется эпсилон-вложением, как определено в: #9681 by Дмитрий Моттл.Исправление Исправлена ошибка в
naive_bayes.GaussianNBкоторый некорректно вызывал ошибку для списка априорных вероятностей, сумма которых равна 1. #10005 by Гаурав Дхингра.Исправление Исправлена ошибка в
naive_bayes.MultinomialNBкоторая не принимала векторные псевдосчетчики (alpha). #10346 by Tobias Madsen
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#
Функция Добавить
n_iter_no_changeпараметр вneural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, иneural_network.MLPClassifierдля контроля над максимальным количеством эпох, не удовлетворяющихtolулучшение. #9456 by Nicholas Nadeau.Исправление Исправлена ошибка в
neural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, иneural_network.MLPClassifierс новымиn_iter_no_changeпараметр теперь равен 10 вместо ранее жёстко заданного значения 2. #9456 by Nicholas Nadeau.Исправление Исправлена ошибка в
neural_network.MLPRegressorгде подгонка неожиданно завершилась рано из-за локальных минимумов или флуктуаций. #9456 by Nicholas Nadeau
sklearn.pipeline#
Функция The
predictметодpipeline.Pipelineтеперь передаёт ключевые аргументы последнему оценщику в конвейере, позволяя использовать параметры, такие какreturn_stdв конвейере с осторожностью. #9304 by Breno Freitas.Изменение API
pipeline.FeatureUnionтеперь поддерживает'drop'в качестве трансформатора для удаления признаков. #11144 by Томас Фан.
sklearn.preprocessing#
Основная функция Расширенный
preprocessing.OneHotEncoderпозволяет кодировать категориальные строковые признаки как числовой массив с использованием схемы one-hot (или dummy) кодирования, и добавленpreprocessing.OrdinalEncoderдля преобразования в порядковые целые числа. Эти два класса теперь обрабатывают кодирование всех типов признаков (также обрабатывают строковые признаки) и определяют категории на основе уникальных значений в признаках, а не максимального значения в признаках. #9151 и #10521 by Vighnesh Birodkar и Joris Van den Bossche.Основная функция Добавлен
preprocessing.KBinsDiscretizerдля преобразования непрерывных признаков в категориальные или one-hot encoded признаки. #7668, #9647, #10195, #10192, #11272, #11467 и #11505. от Henry Lin, Hanmin Qin, Tom Dupre la Tour и Giovanni Giuseppe Costa.Основная функция Добавлен
preprocessing.PowerTransformer, который реализует преобразования Йео-Джонсона и Бокса-Кокса. Степеневые преобразования пытаются найти набор параметрических преобразований по признакам для приблизительного отображения данных к нормальному распределению с центром в нуле и единичной дисперсией. Это полезно как стабилизирующее дисперсию преобразование в ситуациях, где желательны нормальность и гомоскедастичность. #10210 by Эрик Чанг и Манитеджа Нандана, и #11520 by Nicolas Hug.Основная функция Значения NaN игнорируются и обрабатываются в следующих методах предварительной обработки:
preprocessing.MaxAbsScaler,preprocessing.MinMaxScaler,preprocessing.RobustScaler,preprocessing.StandardScaler,preprocessing.PowerTransformer,preprocessing.QuantileTransformerклассы иpreprocessing.maxabs_scale,preprocessing.minmax_scale,preprocessing.robust_scale,preprocessing.scale,preprocessing.power_transform,preprocessing.quantile_transformфункции, соответственно рассмотренные в проблемах #11011, #11005, #11308, #11206, #11306, и #10437. Путем Лучия Грегов и Guillaume Lemaitre.Функция
preprocessing.PolynomialFeaturesтеперь поддерживает разреженный ввод. #10452 by Aman Dalmia и Joel Nothman.Функция
preprocessing.RobustScalerиpreprocessing.robust_scaleможет быть обучен с использованием разреженных матриц. #11308 by Guillaume Lemaitre.Функция
preprocessing.OneHotEncoderтеперь поддерживаетget_feature_namesметод для получения преобразованных названий признаков. #10181 by Nirvan Anjirbag и Joris Van den Bossche.Функция Параметр
check_inverseбыл добавлен вpreprocessing.FunctionTransformerчтобы гарантировать, чтоfuncиinverse_funcявляются обратными друг другу. #9399 by Guillaume Lemaitre.Функция The
transformметодsklearn.preprocessing.MultiLabelBinarizerтеперь игнорирует любые неизвестные классы. Выводится предупреждение с указанием неизвестных классов, классы, которые найдены и игнорируются. #10913 by Родриго Агундес.Исправление Исправлены ошибки в
preprocessing.LabelEncoderчто иногда вызывало ошибки, когдаtransformилиinverse_transformбыл вызван с пустыми массивами. #10458 by Mayur Kulkarni.Исправление Исправление ValueError в
preprocessing.LabelEncoderпри использованииinverse_transformна невидимых метках. #9816 by Чарли Ньюи.Исправление Исправлена ошибка в
preprocessing.OneHotEncoderкоторый отбросилdtypeпри возврате разреженного матричного вывода. #11042 by Даниэль Моралес.Исправление Исправление
fitиpartial_fitвpreprocessing.StandardScalerв редких случаях, когдаwith_mean=Falseиwith_std=Falseкоторый падал при вызовеfitболее одного раза и давая противоречивые результаты дляmean_был ли вход разреженной или плотной матрицей.mean_будет установлено вNoneкак с разреженными, так и с плотными входными данными.n_samples_seen_также будет сообщаться для обоих типов ввода. #11235 by Guillaume Lemaitre.Изменение API Устарело
n_valuesиcategorical_featuresпараметры иactive_features_,feature_indices_иn_values_атрибутыpreprocessing.OneHotEncoder.n_valuesпараметр может быть заменен на новыйcategoriesпараметра и атрибутов с новымcategories_атрибут. Выбор категориальных признаков с помощьюcategorical_featuresпараметр теперь лучше поддерживается с использованиемcompose.ColumnTransformer. #10521 by Joris Van den Bossche.Изменение API Устарело
preprocessing.Imputerи переместить соответствующий модуль вimpute.SimpleImputer. #9726 by Kumar Ashutosh.Изменение API The
axisпараметр, который был вpreprocessing.Imputerбольше не присутствует вimpute.SimpleImputer. Поведение эквивалентноaxis=0(заполнение по столбцам). Заполнение по строкам может быть выполнено с помощью FunctionTransformer (например,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X.T).T)). #10829 by Guillaume Lemaitre и Gilberto Olimpio.Изменение API Маркер NaN для пропущенных значений был изменён между
preprocessing.Imputerиimpute.SimpleImputer.missing_values='NaN'теперь должно бытьmissing_values=np.nan. #11211 by Jeremie du Boisberranger.Изменение API В
preprocessing.FunctionTransformer, значение по умолчанию дляvalidateбудет изTruetoFalseв 0.22. #10655 by Guillaume Lemaitre.
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.LocalOutlierFactordecision_functionметодов используется для определения этогоoffset_такие, что выбросы (соответственно, нормальные точки) имеют отрицательные (соответственно, положительные)decision_functionзначения. По умолчанию,contaminationостается неизменным на уровне 0.1 в течение периода устаревания. В версии 0.22 он будет установлен на “auto”, используя смещения оценок, специфичные для метода. Вcovariance.EllipticEnvelopedecision_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 Изменён тип предупреждения с
UserWarningtoexceptions.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изменен с1toNoneво всех связанных функциях и классах.n_jobs=Noneсредние значенияunsetОбычно это будет интерпретироваться какn_jobs=1, если только текущийjoblib.Parallelконтекст backend указывает иное (см. Глоссарий для дополнительной информации). Обратите внимание, что это изменение происходит немедленно (т.е. без цикла устаревания). #11741 by Оливье Гризель.Исправление Исправлена ошибка в вспомогательных функциях валидации, где передача DataFrame Dask приводит к ошибке. #12462 by Захария Миллер
Изменения в проверках оценщика#
Эти изменения в основном затрагивают разработчиков библиотек.
Проверки для трансформеров теперь применяются, если оценщик реализует преобразовать, независимо от того, наследует ли он от
sklearn.base.TransformerMixin. #10474 by Joel Nothman.Классификаторы теперь проверяются на согласованность между decision_function и категориальные предсказания. #10500 by Narine Kokhlikyan.
Разрешить тесты в
utils.estimator_checks.check_estimatorдля тестирования функций, которые принимают попарные данные. #9701 by Kyle JohnsonРазрешить
utils.estimator_checks.check_estimatorдля проверки, что нет частных настроек, кроме параметров, во время инициализации оценщика. #9378 by Herilalaina RakotoarisonНабор проверок в
utils.estimator_checks.check_estimatorтеперь включаетcheck_set_paramsтест, который проверяет, чтоset_paramsэквивалентно передаче параметров в__init__и предупреждает, если встречает проверку параметров. #7738 by Alvin ChiangДобавлены тесты инвариантности для метрик кластеризации. #8102 by Анкита Синха и Guillaume Lemaitre.
Добавить
check_methods_subset_invariancetocheck_estimator, который проверяет, что методы оценщика инвариантны при применении к подмножеству данных. #10428 by Jonathan OhayonДобавьте тесты в
utils.estimator_checks.check_estimatorдля проверки того, что оценщик может обрабатывать входные данные только для чтения в формате memmap. #10663 by Артур Менш и Loïc Estève.check_sample_weights_pandas_seriesтеперь использует 8 вместо 6 выборок, чтобы учесть стандартное количество кластеров вcluster.KMeans. #10933 by Йоханнес Хансен.Оценщики теперь проверяются на наличие
sample_weight=Noneэквивалентноsample_weight=np.ones(...). #11558 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