Версия 0.22#
Для краткого описания основных особенностей выпуска, пожалуйста, обратитесь к Основные нововведения в выпуске scikit-learn 0.22.
Легенда для списков изменений
Основная функция что-то большое, что вы не могли сделать раньше.
Функция что-то, что вы не могли делать раньше.
Эффективность существующий признак теперь может не требовать столько вычислений или памяти.
Улучшение различные мелкие улучшения.
Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.
Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.
Версия 0.22.2.post1#
3 марта 2020
Выпуск 0.22.2.post1 включает исправление упаковки для исходного дистрибутива, но содержимое пакетов в остальном идентично содержимому колес с версией 0.22.2 (без суффикса .post1). Оба содержат следующие изменения.
Журнал изменений#
sklearn.impute#
Эффективность Reduce
impute.KNNImputerасимптотическое использование памяти за счёт разбиения попарного вычисления расстояний на блоки. #16397 by Joel Nothman.
sklearn.metrics#
Исправление Исправлена ошибка в
metrics.plot_roc_curveгде имя оценщика было передано вmetrics.RocCurveDisplayвместо параметраname1.12.1.4.metrics.RocCurveDisplay.plotдля последующих разов. #16500 by Guillaume Lemaitre.Исправление Исправлена ошибка в
metrics.plot_precision_recall_curveгде имя оценщика было передано вmetrics.PrecisionRecallDisplayвместо параметраname. Это приводит к другому графику при вызовеmetrics.PrecisionRecallDisplay.plotдля последующих разов. #16505 by Guillaume Lemaitre.
sklearn.neighbors#
Исправление Исправлена ошибка, которая преобразовывала список массивов в двумерный объектный массив вместо одномерного массива, содержащего массивы NumPy. Эта ошибка затрагивала
neighbors.NearestNeighbors.radius_neighbors. #16076 by Guillaume Lemaitre и Алекс Шакед.
Версия 0.22.1#
2 января 2020
Это выпуск с исправлением ошибок, предназначенный в первую очередь для решения некоторых проблем с упаковкой в версии 0.22.0. Также включает незначительные улучшения документации и некоторые исправления ошибок.
Журнал изменений#
sklearn.cluster#
Исправление
cluster.KMeansсalgorithm="elkan"теперь использует тот же критерий остановки, что и по умолчаниюalgorithm="full". #15930 by @inder128.
sklearn.inspection#
Исправление
inspection.permutation_importanceвернет то же самоеimportancesкогдаrandom_stateприведено для обоихn_jobs=1илиn_jobs>1как с общими бэкендами памяти (потокобезопасность), так и с изолированными процессными бэкендами памяти. Также избегайте приведения данных к типу object и ошибок только для чтения на больших датафреймах сn_jobs>1как сообщалось в #15810. Продолжение #15898 by Шивам Гаргсья. #15933 by Guillaume Lemaitre и Оливье Гризель.Исправление
inspection.plot_partial_dependenceиinspection.PartialDependenceDisplay.plotтеперь последовательно проверяет количество переданных осей. #15760 by Томас Фан.
sklearn.metrics#
Исправление
metrics.plot_confusion_matrixтеперь вызывает ошибку, когдаnormalizeнедействителен. Ранее он работал нормально без нормализации. #15888 by Hanmin Qin.Исправление
metrics.plot_confusion_matrixтеперь правильно окрашивает цвет метки для максимизации контраста с её фоном. #15936 by Томас Фан и @DizietAsahi.Исправление
metrics.classification_reportбольше не игнорирует значениеzero_divisionаргумент ключевого слова. #15879 by Bibhash Chandra Mitra.Исправление Исправлена ошибка в
metrics.plot_confusion_matrixдля корректной передачиvalues_formatпараметр дляmetrics.ConfusionMatrixDisplayвызов plot(). #15937 by Stephen Blystone.
sklearn.model_selection#
Исправление
model_selection.GridSearchCVиmodel_selection.RandomizedSearchCVпринимает скалярные значения, предоставленные вfit_params. Изменение в версии 0.22 нарушило обратную совместимость. #15863 by Адрин Джалали и Guillaume Lemaitre.
sklearn.naive_bayes#
Исправление Удалено
abstractmethodдекоратор для метода_check_Xвnaive_bayes.BaseNBчто может нарушить зависимые проекты, наследующие от этого устаревшего публичного базового класса. #15996 by Бригитта Сипёч.
sklearn.preprocessing#
Исправление
preprocessing.QuantileTransformerтеперь гарантируетquantiles_атрибут должен быть полностью отсортирован в неубывающем порядке. #15751 by Tirth Patel.
sklearn.semi_supervised#
Исправление
semi_supervised.LabelPropagationиsemi_supervised.LabelSpreadingтеперь позволяют вызываемой функции ядра возвращать разреженную матрицу весов. #15868 by Niklas Smedemark-Margulies.
sklearn.utils#
Исправление
utils.check_arrayтеперь корректно преобразует pandas DataFrame с булевыми столбцами во float. #15797 by Томас Фан.Исправление
utils.validation.check_is_fittedпринимает обратно явныйattributesаргумент для проверки конкретных атрибутов как явных маркеров обученного оценщика. Когда нет явногоattributesпредоставлены, только атрибуты, которые заканчиваются подчеркиванием и не начинаются с двойного подчеркивания, используются как маркеры "обученности".all_or_anyаргумент также больше не является устаревшим. Это изменение сделано для восстановления некоторой обратной совместимости с поведением этой утилиты в версии 0.21. #15947 by Томас Фан.
Версия 0.22.0#
3 декабря 2019
Обновление веб-сайта#
Наш веб-сайт был переработан и получил новый современный вид. #14849 by Томас Фан.
Четкое определение публичного API#
Scikit-learn имеет публичный API и приватный API.
Мы стараемся не нарушать публичный API и вводить только обратно совместимые изменения, не требующие действий пользователя. Однако в случаях, когда это невозможно, любое изменение публичного API подлежит циклу устаревания в две минорные версии. Приватный API не документируется публично и не подлежит какому-либо циклу устаревания, поэтому пользователям не следует полагаться на его стабильность.
Функция или объект являются публичными, если они задокументированы в Справочник API и если его можно импортировать с путем импорта без ведущих подчеркиваний. Например
sklearn.pipeline.make_pipeline является публичным, в то время как
sklearn.pipeline._name_estimators является приватным.
sklearn.ensemble._gb.BaseEnsemble также является приватным, потому что весь _gb
модуль является приватным.
До версии 0.22 некоторые инструменты были де-факто публичными (без ведущего подчёркивания), хотя
они должны были быть приватными изначально. В версии 0.22 эти
инструменты стали правильно приватными, и публичное API было
очищено. Кроме того, импорт из большинства подмодулей теперь устарел: вы
должны, например, использовать from sklearn.cluster import Birch вместо
from sklearn.cluster.birch import Birch (на практике, birch.py был перемещен в _birch.py).
Примечание
Все инструменты в публичном API должны быть задокументированы в Справочник API. Если вы найдёте публичный инструмент (без ведущего подчёркивания), которого нет в справочнике API, это означает, что он должен быть либо приватным, либо задокументированным. Пожалуйста, сообщите нам, открыв issue!
Эта работа отслеживалась в issue 9250 и issue 12927.
Устаревания: использование FutureWarning отныне#
При устаревании функции предыдущие версии scikit-learn обычно вызывали DeprecationWarning. Поскольку DeprecationWarnings не отображаются по умолчанию в Python, scikit-learn пришлось прибегнуть к пользовательскому фильтру предупреждений, чтобы всегда показывать предупреждения. Этот фильтр иногда мог конфликтовать с пользовательскими фильтрами предупреждений.
Начиная с версии 0.22, scikit-learn будет показывать FutureWarnings для устареваний, как рекомендуется документацией Python.
FutureWarnings всегда отображаются по умолчанию в Python, поэтому пользовательский фильтр был удалён, и scikit-learn больше не мешает пользовательским фильтрам. #15080 by Nicolas Hug.
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
cluster.KMeansкогдаn_jobs=1. Исправлениеdecomposition.SparseCoder,decomposition.DictionaryLearning, иdecomposition.MiniBatchDictionaryLearningИсправлениеdecomposition.SparseCoderсalgorithm='lasso_lars'Исправлениеdecomposition.SparsePCAгдеnormalize_componentsне имеет эффекта из-за устаревания.ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorИсправление , Функция , Улучшение .impute.IterativeImputerкогдаXимеет признаки без пропущенных значений. Функцияlinear_model.RidgeкогдаXявляется разреженной. Исправлениеmodel_selection.StratifiedKFoldи любое использованиеcv=intс классификатором. Исправлениеcross_decomposition.CCAпри использовании scipy >= 1.3 Исправление
Подробности перечислены в журнале изменений ниже.
(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)
Журнал изменений#
sklearn.base#
Изменение API Начиная с версии 0.24
base.BaseEstimator.get_paramsвызовет AttributeError, а не вернет None для параметров, которые находятся в конструкторе оценщика, но не хранятся как атрибуты экземпляра. #14464 by Joel Nothman.
sklearn.calibration#
Исправление Исправлена ошибка, из-за которой
calibration.CalibratedClassifierCVне удается при заданномsample_weightпараметр типаlist(в случае, когдаsample_weightsне поддерживаются обёрнутым оценщиком). #13575 by William de Vazelhes.
sklearn.cluster#
Функция
cluster.SpectralClusteringтеперь принимает предварительно вычисленный разреженный граф соседей в качестве входных данных. #10482 by Tom Dupre la Tour и Kumar Ashutosh.Улучшение
cluster.SpectralClusteringтеперь принимаетn_componentsпараметр. Этот параметр расширяетSpectralClusteringфункциональность класса для соответствияcluster.spectral_clustering. #13726 by Shuzhe Xiao.Исправление Исправлена ошибка, где
cluster.KMeansдавал противоречивые результаты междуn_jobs=1иn_jobs>1из-за обработки случайного состояния. #9288 by Bryan Yang.Исправление Исправлена ошибка, где
elkanалгоритм вcluster.KMeansвызывал ошибку сегментации на больших массивах из-за переполнения целочисленного индекса. #15057 by Владимир Королёв.Исправление
MeanShiftтеперь принимает max_iter со значением по умолчанию 300 вместо постоянного использования значения по умолчанию 300. Теперь также предоставляетn_iter_указывает максимальное количество итераций, выполненных для каждого начального значения. #15120 by Адрин Джалали.Исправление
cluster.AgglomerativeClusteringиcluster.FeatureAgglomerationтеперь вызывает ошибку, еслиaffinity='cosine'иXимеет выборки, которые полностью состоят из нулей. #7943 by @mthorrell.
sklearn.compose#
Функция Добавляет
compose.make_column_selectorкоторый используется сcompose.ColumnTransformerдля выбора столбцов DataFrame на основе имени и типа данных. #12303 by Томас Фан.Исправление Исправлена ошибка в
compose.ColumnTransformerкоторый не смог выбрать правильные столбцы при использовании логического списка с NumPy старше 1.12. #14510 by Guillaume Lemaitre.Исправление Исправлена ошибка в
compose.TransformedTargetRegressorкоторый не прошел**fit_paramsк базовому регрессору. #14890 by Мигель Кабрера.Исправление The
compose.ColumnTransformerтеперь требует, чтобы количество признаков было согласовано междуfitиtransform. AFutureWarningвызывается сейчас, и это вызовет ошибку в 0.24. Если количество признаков не согласовано и используется отрицательная индексация, возникает ошибка. #14544 by Адрин Джалали.
sklearn.cross_decomposition#
Функция
cross_decomposition.PLSCanonicalиcross_decomposition.PLSRegressionимеет новую функциюinverse_transformдля преобразования данных в исходное пространство. #15304 by Jaime Ferrando Huertas.Улучшение
decomposition.KernelPCAтеперь корректно проверяет собственные значения, найденные решателем, на наличие численных или обусловленных проблем. Это обеспечивает согласованность результатов между решателями (разные выборы дляeigen_solver), включая приближенные решатели, такие как'randomized'и'lobpcg'(см. #12068). #12145 by Sylvain MariéИсправление Исправлена ошибка, где
cross_decomposition.PLSCanonicalиcross_decomposition.PLSRegressionвызывали ошибку при обучении с целевой матрицейYв котором первый столбец был постоянным. #13609 by Камила Уильямсон.Исправление
cross_decomposition.CCAтеперь даёт те же результаты с scipy 1.3 и предыдущими версиями scipy. #15661 by Томас Фан.
sklearn.datasets#
Функция
datasets.fetch_openmlтеперь поддерживает гетерогенные данные с использованием pandas, установивas_frame=True. #13902 by Томас Фан.Функция
datasets.fetch_openmlтеперь включаетtarget_namesв возвращаемом объекте Bunch. #15160 by Томас Фан.Улучшение Параметр
return_X_yбыл добавлен вdatasets.fetch_20newsgroupsиdatasets.fetch_olivetti_faces. #14259 by Сурав Сингх.Улучшение
datasets.make_classificationтеперь принимает array-likeweightsпараметра, т.е. list или numpy.array, вместо только list. #14764 by Cat Chenal.- Улучшение Параметр
normalizeбыл добавлен в datasets.fetch_20newsgroups_vectorized. #14740 by Стефан Тулкенс
- Улучшение Параметр
Исправление Исправлена ошибка в
datasets.fetch_openml, который не смог загрузить набор данных OpenML, содержащий игнорируемый признак. #14623 by Сарра Хабиши.
sklearn.decomposition#
Эффективность
decomposition.NMFсsolver="mu"обученный на разреженных входных матрицах теперь использует пакетную обработку, чтобы избежать кратковременного выделения массива размером (#ненулевых элементов, n_components). #15257 by Mart Willocx.Улучшение
decomposition.dict_learningиdecomposition.dict_learning_onlineтеперь принимаютmethod_max_iterи передать его вdecomposition.sparse_encode. #12650 by Адрин Джалали.Улучшение
decomposition.SparseCoder,decomposition.DictionaryLearning, иdecomposition.MiniBatchDictionaryLearningтеперь принимаетtransform_max_iterпараметр и передают его либоdecomposition.dict_learningилиdecomposition.sparse_encode. #12650 by Адрин Джалали.Улучшение
decomposition.IncrementalPCAтеперь принимает разреженные матрицы в качестве входных данных, преобразуя их в плотные пакетами, тем самым избегая необходимости хранить всю плотную матрицу целиком. #13960 by Скотт Гиганте.Исправление
decomposition.sparse_encodeтеперь передаетmax_iterк базовомуlinear_model.LassoLarsкогдаalgorithm='lasso_lars'. #12650 by Адрин Джалали.
sklearn.dummy#
Исправление
dummy.DummyClassifierтеперь обрабатывает проверку существования предоставленной константы в случаях с несколькими выходами. #14908 by Martina G. Vilas.Изменение API Значение по умолчанию для
strategyпараметр вdummy.DummyClassifierизменится с'stratified'в версии 0.22 до'prior'в 0.24. FutureWarning выдается при использовании значения по умолчанию. #15382 by Томас Фан.Изменение API The
outputs_2d_атрибут устарел вdummy.DummyClassifierиdummy.DummyRegressor. Это эквивалентноn_outputs > 1. #14933 by Nicolas Hug
sklearn.ensemble#
Основная функция Добавлен
ensemble.StackingClassifierиensemble.StackingRegressorдля стекинга предикторов с использованием финального классификатора или регрессора. #11047 by Guillaume Lemaitre и Каиу Оливейра и #15138 by Джон Кьюзик..Основная функция Было внесено множество улучшений в
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressor:Функция Оценщики теперь нативно поддерживают плотные данные с пропущенными значениями как для обучения, так и для предсказания. Они также поддерживают бесконечные значения. #13911 и #14406 by Nicolas Hug, Адрин Джалали и Оливье Гризель.
Функция Оценщики теперь имеют дополнительный
warm_startпараметр, который включает теплый старт. #14012 by Johann Faouzi.Функция
inspection.partial_dependenceиinspection.plot_partial_dependenceтеперь поддерживают быстрый метод 'recursion' для обоих оценщиков. #13769 by Nicolas Hug.Улучшение для
ensemble.HistGradientBoostingClassifierобучающая потеря или оценка теперь отслеживается на стратифицированной по классам подвыборке для сохранения баланса классов исходного обучающего набора. #14194 by Johann Faouzi.Улучшение
ensemble.HistGradientBoostingRegressorтеперь поддерживает функцию потерь 'least_absolute_deviation'. #13896 by Nicolas Hug.Исправление Оценщики теперь разделяют обучающие и валидационные данные, чтобы избежать утечки данных. #13933 by Nicolas Hug.
Исправление Ядро k(X, Y) #14710 by Guillaume Lemaitre.
Исправление
ensemble.HistGradientBoostingClassifierтеперь вызывает ошибку еслиcategorical_crossentropyпотери приведены для задачи бинарной классификации. #14869 by Адрин Джалали.
Обратите внимание, что pickle из версии 0.21 не будут работать в 0.22.
Улучшение Добавление
max_samplesаргумент позволяет ограничить размер бутстрап-выборок меньше размера набора данных. Добавлен вensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor. #14682 by Matt Hancock и #5963 by Пабло Дубуэ.Исправление
ensemble.VotingClassifier.predict_probaбольше не будет присутствовать, когдаvoting='hard'. #14287 by Томас Фан.Исправление The
named_estimators_атрибут вensemble.VotingClassifierиensemble.VotingRegressorтеперь корректно сопоставляется с удалёнными оценщиками. Ранееnamed_estimators_отображение было некорректным, когда один из оценщиков был удален. #15375 by Томас Фан.Исправление Запускается по умолчанию
utils.estimator_checks.check_estimatorна обоихensemble.VotingClassifierиensemble.VotingRegressor. Это приводит к решению проблем, связанных с согласованностью формы во времяpredictкоторый не работал, когда базовые оценщики не выдавали согласованные размеры массивов. Обратите внимание, что в будущем его следует заменить рефакторингом общих тестов. #14305 by Guillaume Lemaitre.Исправление
ensemble.AdaBoostClassifierвычисляет вероятности на основе функции принятия решений, как в литературе. Таким образом,predictиpredict_probaдают согласованные результаты. #14114 by Guillaume Lemaitre.Исправление Оценщики Stacking и Voting теперь гарантируют, что их базовые оценщики либо все классификаторы, либо все регрессоры.
ensemble.StackingClassifier,ensemble.StackingRegressor, иensemble.VotingClassifierиensemble.VotingRegressorтеперь выдают согласованные сообщения об ошибках. #15084 by Guillaume Lemaitre.Исправление
ensemble.AdaBoostRegressorгде потери должны быть нормализованы по максимуму выборок только с ненулевыми весами. #14294 by Guillaume Lemaitre.Изменение API
presortтеперь устарел вensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressor, и параметр не имеет эффекта. Пользователям рекомендуется использоватьensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorвместо этого. #14907 by Адрин Джалали.
sklearn.feature_extraction#
Улучшение Теперь будет выдано предупреждение, если выбор параметра означает, что другой параметр не будет использоваться при вызове метода fit() для
feature_extraction.text.HashingVectorizer,feature_extraction.text.CountVectorizerиfeature_extraction.text.TfidfVectorizer. #14602 by Gaurav Chawla.Исправление Функции, созданные
build_preprocessorиbuild_analyzeroffeature_extraction.text.VectorizerMixinтеперь можно сериализовать (pickle). #14430 by Dillon Niederhut.Исправление
feature_extraction.text.strip_accents_unicodeтеперь правильно удаляет акценты из строк, находящихся в нормализованной форме NFKD. #15100 by Daniel Grady.Исправление Исправлена ошибка, которая вызывала
feature_extraction.DictVectorizerвызватьOverflowErrorв течениеtransformоперация при созданииscipy.sparseматрицу на больших входных данных. #15463 by Norvan Sahiner.Изменение API Устаревший неиспользуемый
copyпараметр дляfeature_extraction.text.TfidfVectorizer.transformон будет удален в v0.24. #14520 by Гильем Г. Субиес.
sklearn.feature_selection#
Улучшение Обновлены следующие
sklearn.feature_selectionоценщикам разрешать значения NaN/Inf вtransformиfit:feature_selection.RFE,feature_selection.RFECV,feature_selection.SelectFromModel, иfeature_selection.VarianceThreshold. Обратите внимание, что если базовый оценщик селектора признаков не допускает NaN/Inf, то он всё равно выдаст ошибку, но сами селекторы признаков больше не накладывают это ограничение без необходимости. #11635 by Alec Peters.Исправление Исправлена ошибка, где
feature_selection.VarianceThresholdсthreshold=0не удалось удалить постоянные признаки из-за численной нестабильности, используя диапазон вместо дисперсии в данном случае. #13704 by Родди МакСуин.
sklearn.gaussian_process#
Функция Гауссовские процессные модели на структурированных данных:
gaussian_process.GaussianProcessRegressorиgaussian_process.GaussianProcessClassifierтеперь может принимать список общих объектов (например, строки, деревья, графы и т.д.) в качествеXаргумент для их методов обучения/предсказания. Пользовательское ядро должно быть предоставлено для вычисления матрицы ядра среди общих объектов и должно наследоваться отgaussian_process.kernels.GenericKernelMixinчтобы уведомить модель GPR/GPC, что она обрабатывает невекторные образцы. #15557 by Yu-Hang Tang.Эффективность
gaussian_process.GaussianProcessClassifier.log_marginal_likelihoodиgaussian_process.GaussianProcessRegressor.log_marginal_likelihoodтеперь принимаетclone_kernel=Trueаргумент ключевого слова. Когда установлено вFalse, атрибут ядра изменен, но может привести к улучшению производительности. #14378 by Masashi Shibata.Изменение API Начиная с версии 0.24
gaussian_process.kernels.Kernel.get_paramsвызоветAttributeErrorвместо возвратаNoneдля параметров, которые находятся в конструкторе оценщика, но не хранятся как атрибуты экземпляра. #14464 by Joel Nothman.
sklearn.impute#
Основная функция Добавлен
impute.KNNImputer, для заполнения пропущенных значений с использованием k-ближайших соседей. #12852 by Ашим Бхаттарай и Томас Фан и #15010 by Guillaume Lemaitre.Функция
impute.IterativeImputerимеет новыеskip_computeфлаг, который по умолчанию False, и при значении True пропускает вычисления для признаков, не имеющих пропущенных значений на этапе обучения. #13773 by Сергей Фельдман.Эффективность
impute.MissingIndicator.fit_transformизбегать повторного вычисления маскированной матрицы. #14356 by Harsh Soni.Исправление
impute.IterativeImputerтеперь работает, когда есть только один признак. Благодаря Сергей Фельдман.Исправление Исправлена ошибка в
impute.IterativeImputerгде признаки были заполнены в обратном желаемом порядке сimputation_orderлибо"ascending"или"descending". #15393 by Venkatachalam N.
sklearn.inspection#
Основная функция
inspection.permutation_importanceбыл добавлен для измерения важности каждого признака в произвольной обученной модели относительно заданной функции оценки. #13146 by Томас Фан.Функция
inspection.partial_dependenceиinspection.plot_partial_dependenceтеперь поддерживает быстрый метод 'recursion' дляensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressor. #13769 by Nicolas Hug.Улучшение
inspection.plot_partial_dependenceбыл расширен для поддержки нового API визуализации, описанного в Руководство пользователя. #14646 by Томас Фан.Улучшение
inspection.partial_dependenceпринимает pandas DataFrame иpipeline.Pipelineсодержащийcompose.ColumnTransformer. Кроме тогоinspection.plot_partial_dependenceбудет использовать имена столбцов по умолчанию при передаче датафрейма. #14028 и #15429 by Guillaume Lemaitre.
sklearn.kernel_approximation#
Исправление Исправлена ошибка, где
kernel_approximation.NystroemвызывалKeyErrorпри использованииkernel="precomputed". #14706 by Venkatachalam N.
sklearn.linear_model#
Эффективность Решатель логистической регрессии ‘liblinear’ теперь работает быстрее и требует меньше памяти. #14108, #14170, #14296 by Алекс Хенри.
Улучшение
linear_model.BayesianRidgeтеперь принимает гиперпараметрыalpha_initиlambda_initкоторый может использоваться для установки начального значения процедуры максимизации в fit. #13618 by Yoshihiro Uchida.Исправление
linear_model.Ridgeтеперь правильно подгоняет пересечение, когдаXявляется разреженным,solver="auto"иfit_intercept=True, потому что решатель по умолчанию в этой конфигурации изменился наsparse_cg, который может подогнать свободный член с разреженными данными. #13995 by Жером Докес.Исправление
linear_model.Ridgeсsolver='sag'теперь принимает F-ordered и несмежные массивы и выполняет преобразование вместо ошибки. #14458 by Guillaume Lemaitre.Исправление
linear_model.LassoCVбольше не принуждаетprecompute=Falseпри обучении финальной модели. #14591 by Андреас Мюллер.Исправление
linear_model.RidgeCVиlinear_model.RidgeClassifierCVтеперь правильно оценивает, когдаcv=None. #14864 by Venkatachalam N.Исправление Исправлена ошибка в
linear_model.LogisticRegressionCVгдеscores_,n_iter_иcoefs_paths_атрибут будет иметь неправильный порядок сpenalty='elastic-net'. #15044 by Nicolas HugИсправление
linear_model.MultiTaskLassoCVиlinear_model.MultiTaskElasticNetCVс X типа int иfit_intercept=True. #15086 by Алекс Грамфор.Исправление Решатель liblinear теперь поддерживает
sample_weight. #15038 by Guillaume Lemaitre.
sklearn.manifold#
Функция
manifold.Isomap,manifold.TSNE, иmanifold.SpectralEmbeddingтеперь принимают предварительно вычисленный разреженный граф соседей в качестве входных данных. #10482 by Tom Dupre la Tour и Kumar Ashutosh.Функция Предоставлен доступ к
n_jobsпараметр вmanifold.TSNEдля многопроцессорного расчета графа соседей. Этот параметр не влияет, когдаmetric="precomputed"или (metric="euclidean"иmethod="exact"). #15082 by Roman Yurchak.Эффективность Улучшенная эффективность
manifold.TSNEкогдаmethod="barnes-hut"путем вычисления градиента параллельно. #13213 by Томас МореИсправление Исправлена ошибка, где
manifold.spectral_embedding(и, следовательно,manifold.SpectralEmbeddingиcluster.SpectralClustering) вычислял неправильные собственные значения сeigen_solver='amg'когдаn_samples < 5 * n_components. #14647 by Андреас Мюллер.Исправление Исправлена ошибка в
manifold.spectral_embeddingиспользуется вmanifold.SpectralEmbeddingиcluster.SpectralClusteringгдеeigen_solver="amg"иногда приводило к ошибке LinAlgError. #13393 by Andrew Knyazev #13707 by Scott WhiteИзменение API Устарело
training_data_неиспользуемый атрибут вmanifold.Isomap. #10482 by Tom Dupre la Tour.
sklearn.metrics#
Основная функция
metrics.plot_roc_curveбыла добавлена для построения ROC-кривых. Эта функция представляет API визуализации, описанный в Руководство пользователя. #14357 by Томас Фан.Функция Добавлен новый параметр
zero_divisionк нескольким классификационным метрикам:metrics.precision_score,metrics.recall_score,metrics.f1_score,metrics.fbeta_score,metrics.precision_recall_fscore_support,metrics.classification_report. Это позволяет установить возвращаемое значение для некорректно определённых метрик. #14900 by Marc Torrellas Socastro.Функция Добавлен
metrics.pairwise.nan_euclidean_distancesметрика, которая вычисляет евклидовы расстояния при наличии пропущенных значений. #12852 by Ашим Бхаттарай и Томас Фан.Функция Новые метрики ранжирования
metrics.ndcg_scoreиmetrics.dcg_scoreбыли добавлены для вычисления дисконтированного кумулятивного выигрыша и нормализованного дисконтированного кумулятивного выигрыша. #9951 by Jérôme Dockès.Функция
metrics.plot_precision_recall_curveбыл добавлен для построения кривых точности-полноты. #14936 by Томас Фан.Функция
metrics.plot_confusion_matrixбыл добавлен для построения матриц ошибок. #15083 by Томас Фан.Функция Добавлена поддержка многоклассовой классификации в
metrics.roc_auc_scoreс соответствующими скорерами'roc_auc_ovr','roc_auc_ovo','roc_auc_ovr_weighted', и'roc_auc_ovo_weighted'. #12789 и #15274 by Kathy Chen, Mohamed Maskani, и Томас Фан.Функция Добавить
metrics.mean_tweedie_devianceизмерение девианса Твиди для заданногоpowerпараметр. Также добавьте среднее отклонение Пуассонаmetrics.mean_poisson_devianceи среднее отклонение Гаммыmetrics.mean_gamma_devianceкоторые являются частными случаями отклонения Твиди дляpower=1иpower=2соответственно. #13938 by Christian Lorentzen и Roman Yurchak.Эффективность Улучшена производительность
metrics.pairwise.manhattan_distancesв случае разреженных матриц. #15049 byPaolo Toccaceli.Улучшение Параметр
betaвmetrics.fbeta_scoreобновлен для принятия нуля иfloat('+inf')значение. #13231 by Dong-hee Na.Улучшение Добавлен параметр
squaredвmetrics.mean_squared_errorдля возврата среднеквадратичной ошибки. #13467 by Урванг Пател.Улучшение Разрешить вычисление усредненных метрик в случае отсутствия истинных положительных результатов. #14595 by Андреас Мюллер.
Улучшение Многометочные метрики теперь поддерживают список списков в качестве входных данных. #14865 Srivatsan Ramesh, Herilalaina Rakotoarison, Léonard Binet.
Улучшение
metrics.median_absolute_errorтеперь поддерживаетmultioutputпараметр. #14732 by Агамемнон Красулис.Улучшение 'roc_auc_ovr_weighted' и 'roc_auc_ovo_weighted' теперь могут использоваться как оценка параметр инструментов выбора модели. #14417 by Томас Фан.
Улучшение
metrics.confusion_matrixпринимает параметрыnormalizeпозволяя нормализовать матрицу ошибок по столбцам, строкам или в целом. #15625 byGuillaume Lemaitre.Исправление Вызвать ValueError в
metrics.silhouette_scoreкогда предвычисленная матрица расстояний содержит ненулевые диагональные элементы. #12258 by Stephen Tierney.Изменение API
scoring="neg_brier_score"следует использовать вместоscoring="brier_score_loss"который теперь устарел. #14898 by Штефан Матковичи.
sklearn.model_selection#
Эффективность Улучшена производительность многометрической оценки в
model_selection.cross_validate,model_selection.GridSearchCV, иmodel_selection.RandomizedSearchCV. #14593 by Томас Фан.Улучшение
model_selection.learning_curveтеперь принимает параметрreturn_timesкоторый может использоваться для получения времени вычислений, чтобы построить масштабируемость модели (см. пример learning_curve). #13938 by Hadrien Reboul.Улучшение
model_selection.RandomizedSearchCVтеперь принимает списки распределений параметров. #14549 by Андреас Мюллер.Исправление Перереализован
model_selection.StratifiedKFoldдля исправления проблемы, где один тестовый набор мог бытьn_classesбольше другого. Тестовые наборы должны теперь быть примерно одинакового размера. #14704 by Joel Nothman.Исправление The
cv_results_атрибутmodel_selection.GridSearchCVиmodel_selection.RandomizedSearchCVтеперь содержит только необученные оценщики. Это потенциально экономит много памяти, поскольку состояние оценщиков не сохраняется. ##15096 by Андреас Мюллер.Изменение API
model_selection.KFoldиmodel_selection.StratifiedKFoldтеперь выдает предупреждение, еслиrandom_stateустановлен, ноshuffleравно False. Это вызовет ошибку в версии 0.24.
sklearn.multioutput#
Исправление
multioutput.MultiOutputClassifierтеперь имеет атрибутclasses_. #14629 by Агамемнон Красулис.Исправление
multioutput.MultiOutputClassifierтеперь имеетpredict_probaкак свойство и может быть проверено с помощьюhasattr. #15488 #15490 by Ребекка Ким
sklearn.naive_bayes#
Основная функция Добавлен
naive_bayes.CategoricalNBкоторый реализует классификатор Categorical Naive Bayes. #12569 by Тим Бикер и Florian Wilhelm.
sklearn.neighbors#
Основная функция Добавлен
neighbors.KNeighborsTransformerиneighbors.RadiusNeighborsTransformer, которые преобразуют входной набор данных в разреженный граф соседей. Они обеспечивают более тонкий контроль над вычислениями ближайших соседей и позволяют легко кэшировать конвейер для многократного использования. #10482 by Tom Dupre la Tour.Функция
neighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,neighbors.RadiusNeighborsRegressor, иneighbors.LocalOutlierFactorтеперь принимают предварительно вычисленный разреженный граф соседей в качестве входных данных. #10482 by Tom Dupre la Tour и Kumar Ashutosh.Функция
neighbors.RadiusNeighborsClassifierтеперь поддерживает предсказание вероятностей с использованиемpredict_probaи поддерживает больше вариантов outlier_label: ‘most_frequent’ или разные outlier_labels для многомерных выходов. #9597 by Вэньбо Чжао.Эффективность Улучшения эффективности для
neighbors.RadiusNeighborsClassifier.predict. #9597 by Вэньбо Чжао.Исправление
neighbors.KNeighborsRegressorтеперь выдает ошибку, когдаmetric='precomputed'и обучение на неквадратных данных. #14336 by Грегори Декстер.
sklearn.neural_network#
Функция Добавить
max_funпараметр вneural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, иneural_network.MLPClassifierчтобы обеспечить контроль над максимальным количеством оценок функции, чтобы не соответствоватьtolулучшение. #9274 by Daniel Perry.
sklearn.pipeline#
Улучшение
pipeline.Pipelineтеперь поддерживает score_samples если финальный оценщик делает это. #13806 by Анаэль Божон.Исправление The
fitвFeatureUnionтеперь принимаетfit_paramsдля передачи базовым преобразователям. #15119 by Адрин Джалали.Изменение API
Noneкак трансформер теперь устарел вpipeline.FeatureUnion. Пожалуйста, используйте'drop'вместо этого. #15053 by Томас Фан.
sklearn.preprocessing#
Эффективность
preprocessing.PolynomialFeaturesтеперь работает быстрее, когда входные данные плотные. #13290 by Xavier Dupré.Улучшение Избегать ненужного копирования данных при обучении препроцессоров
preprocessing.StandardScaler,preprocessing.MinMaxScaler,preprocessing.MaxAbsScaler,preprocessing.RobustScalerиpreprocessing.QuantileTransformerчто приводит к небольшому улучшению производительности. #13987 by Roman Yurchak.Исправление KernelCenterer теперь выдает ошибку при обучении на неквадратной
preprocessing.KernelCenterer#14336 by Грегори Декстер.
sklearn.model_selection#
Исправление
model_selection.GridSearchCVиmodel_selection.RandomizedSearchCVтеперь поддерживает_pairwiseсвойство, которое предотвращает ошибку при перекрестной проверке для оценщиков с попарными входами (такими какneighbors.KNeighborsClassifierкогда метрика установлено в 'precomputed'). #13925 by Isaac S. Robson и #15524 by Сюнь Тан.
sklearn.svm#
Улучшение
svm.SVCиsvm.NuSVCтеперь принимаетbreak_tiesпараметр. Этот параметр приводит к predict разрешая ничьи в соответствии со значениями уверенности decision_function, еслиdecision_function_shape='ovr', и количество целевых классов > 2. #12557 by Адрин Джалали.Улучшение Оценщики SVM теперь выбрасывают более конкретную ошибку, когда
kernel='precomputed'и обучение на неквадратных данных. #14336 by Грегори Декстер.Исправление
svm.SVC,svm.SVR,svm.NuSVRиsvm.OneClassSVMпри получении отрицательных или нулевых значений для параметраsample_weightв методе fit(), сгенерировал недопустимую модель. Это поведение происходило только в некоторых пограничных сценариях. Теперь в этих случаях fit() завершится с исключением. #14286 by Алекс Шакед.Исправление The
n_support_атрибутsvm.SVRиsvm.OneClassSVMранее не инициализировался и имел размер 2. Теперь он имеет размер 1 с правильным значением. #15099 by Nicolas Hug.Исправление исправлена ошибка в
BaseLibSVM._sparse_fitгде n_SV=0 вызывал ZeroDivisionError. #14894 by Danna Naser.Исправление Решатель liblinear теперь поддерживает
sample_weight. #15038 by Guillaume Lemaitre.
sklearn.tree#
Функция Добавляет минимальную обрезку по сложности стоимости, контролируемую
ccp_alpha, вtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier,tree.ExtraTreeRegressor,ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor,ensemble.GradientBoostingClassifier, иensemble.GradientBoostingRegressor. #12887 by Томас Фан.Изменение API
presortтеперь устарел вtree.DecisionTreeClassifierиtree.DecisionTreeRegressor, и параметр не имеет эффекта. #14907 by Адрин Джалали.Изменение API The
classes_иn_classes_атрибутыtree.DecisionTreeRegressorтеперь устарели. #15028 by Mei Guan, Nicolas Hug, и Адрин Джалали.
sklearn.utils#
Функция
check_estimatorтеперь может генерировать проверки, установивgenerate_only=True. Ранее выполнениеcheck_estimatorостановится при первой неудачной проверке. Сgenerate_only=True, все проверки могут выполняться независимо и сообщать о тех, которые не прошли. Подробнее в Создание собственного оценщика. #14381 by Томас Фан.Функция Добавлен специфичный для pytest декоратор,
parametrize_with_checks, для параметризации проверок оценщика для списка оценщиков. #14381 by Томас Фан.Функция Новая случайная величина,
utils.fixes.loguniformреализует лог-равномерную случайную величину (например, для использования в RandomizedSearchCV). Например, исходы1,10и100все равновероятны дляloguniform(1, 100). См. #11232 by Скотт Сиверт и Nathaniel Saul, и SciPy PR 10815.Улучшение
utils.safe_indexing(теперь устаревший) принимаетaxisпараметр для индексации массивоподобных объектов по строкам и столбцам. Индексация столбцов может выполняться для массивов NumPy, разреженных матриц SciPy и DataFrame Pandas. Была проведена дополнительная рефакторизация. #14035 и #14475 by Guillaume Lemaitre.Улучшение
utils.extmath.safe_sparse_dotработает между 3D+ ndarray и разреженной матрицей. #14538 by Жереми дю Буаберранже.Исправление
utils.check_arrayтеперь вызывает ошибку вместо приведения NaN к целому числу. #14872 by Roman Yurchak.Исправление
utils.check_arrayтеперь будет правильно определять числовые типы данных в pandas dataframes, исправляя ошибку, гдеfloat32был приведен к более высокому типу данных доfloat64без необходимости. #15094 by Андреас Мюллер.Изменение API Следующие утилиты устарели и теперь являются приватными:
choose_check_classifiers_labelsenforce_estimator_tags_ymocking.MockDataFramemocking.CheckingClassifieroptimize.newton_cgrandom.random_choice_cscutils.choose_check_classifiers_labelsutils.enforce_estimator_tags_yutils.optimize.newton_cgutils.random.random_choice_cscutils.safe_indexingutils.mockingutils.fast_dictutils.seq_datasetutils.weight_vectorutils.fixes.parallel_helper(удалено)Все из
utils.testingза исключениемall_estimatorsкоторый теперь находится вutils.
sklearn.isotonic#
Исправление Исправлена ошибка, где
isotonic.IsotonicRegression.fitвызванная ошибка когдаX.dtype == 'float32'иX.dtype != y.dtype. #14902 by Lucas.
Разное#
Исправление Порт
lobpcgиз SciPy, которые реализуют некоторые исправления ошибок, но доступны только в версии 1.3+. #13609 и #14971 by Guillaume Lemaitre.Изменение API Scikit-learn теперь преобразует любую структуру входных данных, реализующую утиный массив, в массив numpy (используя
__array__Как итерируемый объект строковых метрик:__array_function__(см. NEP 18). #14702 by Андреас Мюллер.Изменение API Заменить ручные проверки на
check_is_fitted. Ошибки, возникающие при использовании необученных оценщиков, теперь более единообразны. #13013 by Агамемнон Красулис.
Изменения в проверках оценщика#
Эти изменения в основном затрагивают разработчиков библиотек.
Теперь ожидается, что оценщики будут вызывать
NotFittedErrorifpredictилиtransformвызывается передfit; ранееAttributeErrorилиValueErrorбыло приемлемо. #13013 от Агамемнон Красулис.Бинарные классификаторы теперь поддерживаются в проверках оценщиков. Такие классификаторы должны иметь
binary_only=Trueтег оценщика. #13875 by Тревор Стивенс.Ожидается, что оценщики преобразуют входные данные (
X,y,sample_weights) вnumpy.ndarrayи никогда не вызывать__array_function__на исходном типе данных, который передается (см. NEP 18). #14702 by Андреас Мюллер.requires_positive_Xтег estimator (для моделей, требующих неотрицательности X) теперь используетсяutils.estimator_checks.check_estimatorчтобы убедиться, что выводится правильное сообщение об ошибке, если X содержит отрицательные значения. #14680 by Алекс Грамфор.Добавлена проверка, что парные оценки выдают ошибку на неквадратных данных #14336 by Грегори Декстер.
Добавлены два общих теста для многовариантных оценщиков
utils.estimator_checks.check_classifier_multioutputиutils.estimator_checks.check_regressor_multioutput. #13392 by Rok Mihevc.Исправление Добавлен
check_transformer_data_not_an_arrayдля проверки, где отсутствуютИсправление Разрешение тегов оценщиков теперь следует обычному MRO. Раньше их можно было переопределять только один раз. #14884 by Андреас Мюллер.
Участники кода и документации
Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 0.21, включая:
Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang “Maxin” Tang, Yulia Zamriy, Zhao Feng