Версия 0.21#
Легенда для списков изменений
Основная функция что-то большое, что вы не могли сделать раньше.
Функция что-то, что вы не могли делать раньше.
Эффективность существующий признак теперь может не требовать столько вычислений или памяти.
Улучшение различные мелкие улучшения.
Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.
Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.
Версия 0.21.3#
30 июля 2019
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
В примечаниях к выпуску v0.20.0 не упоминалась обратная несовместимость в
metrics.make_scorerкогдаneeds_proba=Trueиy_trueявляется бинарным. Теперь функция оценки должна принимать 1Dy_pred(т.е., вероятность положительного класса, форма(n_samples,)), вместо 2Dy_pred(т.е., форма(n_samples, 2)).
Журнал изменений#
sklearn.cluster#
Исправление Исправлена ошибка в
cluster.KMeansгде вычисления сinit='random'был однопоточным дляn_jobs > 1илиn_jobs = -1. #12955 by Прабакаран Кумарессан.Исправление Исправлена ошибка в
cluster.OPTICSгде пользователи не могли передавать floatmin_samplesиmin_cluster_size. #14496 by Fabian Klopfer и Hanmin Qin.Исправление Исправлена ошибка в
cluster.KMeansгде инициализация KMeans++ редко могла приводить к IndexError. #11756 by Joel Nothman.
sklearn.compose#
Исправление Исправлена проблема в
compose.ColumnTransformerгде использование DataFrame, порядок столбцов которых различается междуfitиtransformможет привести к незаметной передаче некорректных столбцов вremainderпреобразователь. #14237 byAndreas Schuderer.
sklearn.datasets#
Исправление
datasets.fetch_california_housing,datasets.fetch_covtype,datasets.fetch_kddcup99,datasets.fetch_olivetti_faces,datasets.fetch_rcv1, иdatasets.fetch_species_distributionsпопытаться сохранить предыдущий кэш, используя новыйjoblibесли кэшированные данные были сохранены с использованием устаревшегоsklearn.externals.joblib. Это поведение устарело и будет удалено в версии 0.23. #14197 by Адрин Джалали.
sklearn.ensemble#
Исправление Исправлена ошибка деления на ноль в
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressor. #14024 byNicolas Hug.
sklearn.impute#
Исправление Исправлена ошибка в
impute.SimpleImputerиimpute.IterativeImputerчтобы не возникало ошибок при наличии пропущенных значений в обучающих данных. #13974 byFrank Hoang.
sklearn.inspection#
Исправление Исправлена ошибка в
inspection.plot_partial_dependenceгдеtargetпараметр не учитывался для многоклассовых задач. #14393 by Гильем Г. Субиес.
sklearn.linear_model#
Исправление Исправлена ошибка в
linear_model.LogisticRegressionCVгдеrefit=Falseбудет зависеть от'multiclass'и'penalty'параметры (регрессия введена в версии 0.21). #14087 by Nicolas Hug.Исправление Исправление совместимости для
linear_model.ARDRegressionи Scipy>=1.3.0. Адаптируется к изменениям в upstream по умолчаниюpinvhпороговое значение отсечения, которое в противном случае приводит к низкой точности в некоторых случаях. #14067 by Тим Стэйли.
sklearn.neighbors#
Исправление Исправлена ошибка в
neighbors.NeighborhoodComponentsAnalysisгде проверка начальных параметровn_components,max_iterиtolтребовали слишком строгих типов. #14092 by Жереми дю Буаберранже.
sklearn.tree#
Исправление Исправлена ошибка в
tree.export_textкогда дерево имеет один признак и передано одно имя признака. #14053 byThomas Fan.Исправление Исправлена проблема с
tree.plot_treeгде отображались расчёты энтропии даже дляginiкритерий в DecisionTreeClassifiers. #13947 by Frank Hoang.
Версия 0.21.2#
24 мая 2019
Журнал изменений#
sklearn.decomposition#
Исправление Исправлена ошибка в
cross_decomposition.CCAулучшая числовую устойчивость, когдаYблизко к нулю. #13903 by Томас Фан.
sklearn.metrics#
Исправление Исправлена ошибка в
metrics.pairwise.euclidean_distancesгде часть матрицы расстояний осталась неинстанцированной для достаточно больших наборов данных float32 (регрессия, введенная в 0.21). #13910 by Жереми дю Буаберранже.
sklearn.preprocessing#
Исправление Исправлена ошибка в
preprocessing.OneHotEncoderгде новыйdropпараметр не отражался вget_feature_names. #13894 by Джеймс Майатт.
sklearn.utils.sparsefuncs#
Исправление Исправлена ошибка, где
min_max_axisвыдавал ошибку на 32-битных системах для определенных больших входных данных. Это затрагиваетpreprocessing.MaxAbsScaler,preprocessing.normalizeиpreprocessing.LabelBinarizer. #13741 by Родди МакСуин.
Версия 0.21.1#
17 мая 2019
Это выпуск с исправлением ошибок, в основном для решения некоторых проблем упаковки в версии 0.21.0. Он также включает незначительные улучшения документации и некоторые исправления ошибок.
Журнал изменений#
sklearn.inspection#
Исправление Исправлена ошибка в
inspection.partial_dependenceпроверять только классификатор, а не регрессор для случая многоклассового многовариантного вывода. #14309 by Guillaume Lemaitre.
sklearn.metrics#
Исправление Исправлена ошибка в
metrics.pairwise_distancesгде это вызвало быAttributeErrorдля булевых метрик, когдаXимел логический тип данных иY == None. #13864 by Paresh Mathur.Исправление Исправлены две ошибки в
metrics.pairwise_distancesкогдаn_jobs > 1. Сначала он возвращал матрицу расстояний с тем же типом данных, что и входные данные, даже для целочисленного типа. Затем диагональ не была нулевой для евклидовой метрики, когдаYявляетсяX. #13877 by Жереми дю Буаберранже.
sklearn.neighbors#
Исправление Исправлена ошибка в
neighbors.KernelDensityкоторый не может быть восстановлен из pickle, еслиsample_weightиспользовался. #13772 by Aditya Vyas.
Версия 0.21.0#
Май 2019
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
discriminant_analysis.LinearDiscriminantAnalysisдля многоклассовой классификации. Исправлениеdiscriminant_analysis.LinearDiscriminantAnalysisс решателем 'eigen'. Исправлениеlinear_model.BayesianRidgeИсправлениеДеревья решений и производные ансамбли, когда оба
max_depthиmax_leaf_nodesустановлены. Исправлениеlinear_model.LogisticRegressionиlinear_model.LogisticRegressionCVс решателем ‘saga’. Исправлениеensemble.GradientBoostingClassifierИсправлениеsklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizer, иsklearn.feature_extraction.text.CountVectorizerИсправлениеneural_network.MLPClassifierИсправлениеsvm.SVC.decision_functionиmulticlass.OneVsOneClassifier.decision_function. Исправлениеlinear_model.SGDClassifierи любые производные классификаторы. ИсправлениеЛюбая модель, использующая
linear_model._sag.sag_solverфункция с0seed, включаяlinear_model.LogisticRegression,linear_model.LogisticRegressionCV,linear_model.Ridge, иlinear_model.RidgeCVс решателем 'sag'. Исправлениеlinear_model.RidgeCVпри использовании перекрестной проверки с исключением по одному элементу с разреженными входными данными. Исправление
Подробности перечислены в журнале изменений ниже.
(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)
Известные серьезные ошибки#
По умолчанию
max_iterдляlinear_model.LogisticRegressionслишком мал для многих решателей при значении по умолчаниюtol. В частности, мы случайно изменили значение по умолчаниюmax_iterдля решателя liblinear с 1000 до 100 итераций в #3591 выпущен в версии 0.16. В будущем релизе мы надеемся выбрать лучшие значения по умолчаниюmax_iterиtolэвристически в зависимости от решателя (см. #13317).
Журнал изменений#
Поддержка Python 3.4 и ниже официально прекращена.
sklearn.base#
Изменение API Оценка R2, используемая при вызове
scoreна регрессоре будет использоватьmultioutput='uniform_average'с версии 0.23 для поддержания согласованности сmetrics.r2_score. Это повлияет наscoreметод всех многовыходных регрессоров (кромеmultioutput.MultiOutputRegressor). #13157 by Hanmin Qin.
sklearn.calibration#
Улучшение Добавлена поддержка для бинирования данных, переданных в
calibration.calibration_curveпо квантилям вместо равномерного распределения между 0 и 1. #13086 by Scott Cole.Улучшение Разрешить n-мерные массивы в качестве входных данных для
calibration.CalibratedClassifierCV. #13485 by William de Vazelhes.
sklearn.cluster#
Основная функция Новый алгоритм кластеризации:
cluster.OPTICS: алгоритм, связанный сcluster.DBSCAN, который имеет гиперпараметры, которые легче настраивать и который лучше масштабируется, благодаря Shane, Адрин Джалали, Erich Schubert, Hanmin Qin, и Ассия Бенбихи.Исправление Исправлена ошибка, где
cluster.Birchиногда может вызывать AttributeError. #13651 by Joel Nothman.Исправление Исправлена ошибка в
cluster.KMeansгде пустые кластеры не были правильно перемещены при использовании весов выборки. #13486 by Жереми дю Буаберранже.Изменение API The
n_components_атрибут вcluster.AgglomerativeClusteringиcluster.FeatureAgglomerationбыл переименован вn_connected_components_. #13427 by Stephane Couvreur.Улучшение
cluster.AgglomerativeClusteringиcluster.FeatureAgglomerationтеперь принимаетdistance_thresholdпараметр, который можно использовать для поиска кластеров вместоn_clusters. #9069 by Vathsala Achar и Адрин Джалали.
sklearn.compose#
Изменение API
compose.ColumnTransformerбольше не является экспериментальной функцией. #13835 by Hanmin Qin.
sklearn.datasets#
Исправление Добавлена поддержка 64-битных идентификаторов групп и указателей в файлах SVMLight. #10727 by Брайан К. Вудс.
Исправление
datasets.load_sample_imagesвозвращает изображения в детерминированном порядке. #13250 by Томас Фан.
sklearn.decomposition#
Улучшение
decomposition.KernelPCAобратная совместимость #13241 by Aurélien Bellet.Исправление Исправлена ошибка в
decomposition.KernelPCA,fit().transform()теперь выдает правильный результат (такой же, какfit_transform()) в случае ненулевых собственных значений (remove_zero_eig=False).fit_inverse_transformтакже был ускорен с использованием того же трюка, что иfit_transformдля вычисления преобразованияX. #12143 by Sylvain MariéИсправление Исправлена ошибка в
decomposition.NMFгдеinit = 'nndsvd',init = 'nndsvda', иinit = 'nndsvdar'разрешены, когдаn_components < n_featuresвместоn_components <= min(n_samples, n_features). #11650 by Hossein Pourbozorg и Zijie (ZJ) Poh.Изменение API Значение по умолчанию для
initаргумент вdecomposition.non_negative_factorizationизменится сrandomtoNoneв версии 0.23, чтобы сделать его согласованным сdecomposition.NMF. FutureWarning выводится, когда используется значение по умолчанию. #12988 by Zijie (ZJ) Poh.
sklearn.discriminant_analysis#
Улучшение
discriminant_analysis.LinearDiscriminantAnalysisтеперь сохраняетfloat32иfloat64dtypes. #8769 и #11000 by Тибо СеджурнеИсправление A
ChangedBehaviourWarningтеперь вызывается, когдаdiscriminant_analysis.LinearDiscriminantAnalysisзадается как параметрn_components > min(n_features, n_classes - 1), иn_componentsизменено наmin(n_features, n_classes - 1)если так. Ранее изменение было внесено, но без уведомления. #11526 by William de Vazelhes.Исправление Исправлена ошибка в
discriminant_analysis.LinearDiscriminantAnalysisгде предсказанные вероятности будут неправильно вычислены в многоклассовом случае. #6848, от Агамемнон Красулис иGuillaume Lemaitre.Исправление Исправлена ошибка в
discriminant_analysis.LinearDiscriminantAnalysisгде предсказанные вероятности будут неправильно вычислены сeigenрешатель. #11727, от Агамемнон Красулис.
sklearn.dummy#
Исправление Исправлена ошибка в
dummy.DummyClassifierгдеpredict_probaметод возвращал массив int32 вместо float64 дляstratifiedстратегия. #13266 by Christos Aridas.Исправление Исправлена ошибка в
dummy.DummyClassifierгде возникала ошибка несоответствия размерности во время предсказания, если вектор-столбецyсshape=(n, 1)был предоставлен вfittime. #13545 by Nick Sorros и Адрин Джалали.
sklearn.ensemble#
Основная функция Добавьте две новые реализации градиентного бустинга деревьев:
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressor. Реализация этих оценщиков вдохновлена LightGBM и может быть на порядки быстрее, чемensemble.GradientBoostingRegressorиensemble.GradientBoostingClassifierкогда количество выборок превышает десятки тысяч. API этих новых оценщиков немного отличается, и некоторые функции изensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorеще не поддерживаются.Эти новые оценщики являются экспериментальными, что означает, что их результаты или их API могут измениться без цикла устаревания. Чтобы использовать их, нужно явно импортировать
enable_hist_gradient_boosting:>>> # explicitly require this experimental feature >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # now you can import normally from sklearn.ensemble >>> from sklearn.ensemble import HistGradientBoostingClassifier
Примечание
Обновление: начиная с версии 1.0, эти оценщики больше не являются экспериментальными, и вам не нужно использовать
from sklearn.experimental import enable_hist_gradient_boosting.#12807 by Nicolas Hug.
Функция Добавить
ensemble.VotingRegressorкоторый предоставляет эквивалентensemble.VotingClassifierдля задач регрессии. #12513 by Ramil Nugmanov и Mohamed Ali Jamaoui.Эффективность Сделать
ensemble.IsolationForestпредпочитает потоки процессам при запуске сn_jobs > 1поскольку базовые вызовы подгонки дерева решений освобождают GIL. Это изменение снижает использование памяти и накладные расходы на коммуникацию. #12543 by Isaac Storch и Оливье Гризель.Эффективность Сделать
ensemble.IsolationForestболее эффективно по памяти, избегая хранения в памяти каждого предсказания дерева. #13260 by Nicolas Goix.Эффективность
ensemble.IsolationForestтеперь использует блоки данных на этапе предсказания, ограничивая использование памяти. #13283 by Nicolas Goix.Эффективность
sklearn.ensemble.GradientBoostingClassifierиsklearn.ensemble.GradientBoostingRegressorтеперь сохраняйте входныеyкакfloat64чтобы избежать его внутреннего копирования деревьями. #13524 by Адрин Джалали.Улучшение Минимизирована валидация X в
ensemble.AdaBoostClassifierиensemble.AdaBoostRegressor#13174 by Christos Aridas.Улучшение
ensemble.IsolationForestтеперь предоставляетwarm_startпараметр, позволяющий итеративно добавлять деревья в лес изоляции. #13496 by Peter Marko.Исправление Значения
feature_importances_во всех моделях на основе случайного леса (т.е.ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor,ensemble.RandomTreesEmbedding,ensemble.GradientBoostingClassifier, иensemble.GradientBoostingRegressor) теперь:суммируются до
1все одиночные узловые деревья в расчете важности признаков игнорируются
в случае, если все деревья имеют только один узел (т.е. корневой узел), важности признаков будут представлять собой массив из всех нулей.
#13636 и #13620 by Адрин Джалали.
Исправление Исправлена ошибка в
ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressor, который не поддерживал оценщики scikit-learn в качестве начального оценщика. Также добавлена поддержка начального оценщика, который не поддерживает веса выборок. #12436 by Жереми дю Буаберранже и #12983 by Nicolas Hug.Исправление Исправлен вывод средней длины пути, вычисленной в
ensemble.IsolationForestкогда вход равен 0, 1 или 2. #13251 by Альберт Томас и joshuakennethjones.Исправление Исправлена ошибка в
ensemble.GradientBoostingClassifierгде градиенты будут неправильно вычислены в задачах многоклассовой классификации. #12715 by Nicolas Hug.Исправление Исправлена ошибка в
ensemble.GradientBoostingClassifierгде наборы валидации для ранней остановки не были выбраны с использованием стратификации. #13164 by Nicolas Hug.Исправление Исправлена ошибка в
ensemble.GradientBoostingClassifierгде стандартное начальное предсказание многоклассового классификатора предсказывало бы априорные вероятности классов вместо логарифма априорных вероятностей. #12983 by Nicolas Hug.Исправление Исправлена ошибка в
ensemble.RandomForestClassifierгдеpredictметод выдавал ошибку для многоклассовых многомерных моделей лесов, если какие-либо цели были строками. #12834 by Элизабет Сандер.Исправление Исправлена ошибка в
ensemble.gradient_boosting.LossFunctionиensemble.gradient_boosting.LeastSquaresErrorгде значение по умолчаниюlearning_rateвupdate_terminal_regionsне согласуется с документом и вызывающими функциями. Однако обратите внимание, что прямое использование этих функций потерь устарело. #6463 by movelikeriver.Исправление
ensemble.partial_dependence(и, следовательно, новая версияsklearn.inspection.partial_dependence) теперь учитывает веса выборок при вычислении частной зависимости, когда модель градиентного бустинга была обучена с весами выборок. #13193 by Samuel O. Ronsin.Изменение API
ensemble.partial_dependenceиensemble.plot_partial_dependenceтеперь устарели в пользуinspection.partial_dependenceиinspection.plot_partial_dependence. #12599 by Тревор Стивенс и Nicolas Hug.Исправление
ensemble.VotingClassifierиensemble.VotingRegressorзавершались сбоем во времяfitв одном из оценщиков было установленоNoneиsample_weightне былNone. #13779 by Guillaume Lemaitre.Изменение API
ensemble.VotingClassifierиensemble.VotingRegressorпринимать'drop'для отключения оценщика в дополнение кNoneчтобы быть согласованным с другими оценщиками (т.е.,pipeline.FeatureUnionиcompose.ColumnTransformer). #13780 by Guillaume Lemaitre.
sklearn.externals#
Изменение API Устаревший
externals.sixпоскольку мы прекратили поддержку Python 2.7. #12916 by Hanmin Qin.
sklearn.feature_extraction#
Исправление Если
input='file'илиinput='filename', и вызываемый объект задан какanalyzer,sklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizer, иsklearn.feature_extraction.text.CountVectorizerтеперь читайте данные из файла(ов) и затем передайте их заданномуanalyzer, вместо передачи имени файла(ов) или объекта(ов) файла анализатору. #13641 by Адрин Джалали.
sklearn.impute#
Основная функция Добавлен
impute.IterativeImputer, что является стратегией для заполнения пропущенных значений путем моделирования каждого признака с пропущенными значениями как функции других признаков в циклическом порядке. #8478 и #12177 by Сергей Фельдман и Ben Lawson.API IterativeImputer является экспериментальным и может измениться без какого-либо цикла устаревания. Чтобы использовать его, необходимо явно импортировать
enable_iterative_imputer:>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # now you can import normally from sklearn.impute >>> from sklearn.impute import IterativeImputer
Функция The
impute.SimpleImputerиimpute.IterativeImputerимеют новый параметр'add_indicator', которая просто объединяетimpute.MissingIndicatorпреобразовать в выход преобразователя импутера. Это позволяет прогностическому оценщику учитывать пропуски. #12583, #13601 by Исчерпание доступных ресурсов.Исправление В
impute.MissingIndicatorизбегать неявного уплотнения путем вызова исключения, если вход разрежен иmissing_valuesсвойство установлено в 0. #13240 by Bartosz Telenczuk.Исправление Исправлены две ошибки в
impute.MissingIndicator. Во-первых, когдаXявляется разреженным, все ненулевые ненапущенные значения, которые использовались, становятся явными False в преобразованных данных. Затем, когдаfeatures='missing-only', все признаки сохранялись, если не было пропущенных значений вообще. #13562 by Жереми дю Буаберранже.
sklearn.inspection#
(новый подпакет)
Функция Графики частной зависимости (
inspection.plot_partial_dependence) теперь поддерживаются для любого регрессора или классификатора (при условии, что у них естьpredict_probaметод). #12599 by Тревор Стивенс и Nicolas Hug.
sklearn.isotonic#
Функция Разрешить различные типы данных (такие как float32) в
isotonic.IsotonicRegression. #8769 by Vlad Niculae
sklearn.linear_model#
Улучшение
linear_model.Ridgeтеперь сохраняетfloat32иfloat64dtypes. #8769 и #11000 by Guillaume Lemaitre, и Жоан МассичФункция
linear_model.LogisticRegressionиlinear_model.LogisticRegressionCVтеперь поддерживает штраф Elastic-Net с решателем 'saga'. #11646 by Nicolas Hug.Функция Добавлен
linear_model.lars_path_gram, что являетсяlinear_model.lars_pathв режиме достаточной статистики, позволяя пользователям вычислятьlinear_model.lars_pathбез предоставленияXиy. #11699 by Kuai Yu.Эффективность
linear_model.make_datasetтеперь сохраняетfloat32иfloat64dtypes, уменьшая потребление памяти в стохастическом градиенте, SAG и SAGA решателях. #8769 и #11000 by Нель Варокво, Arthur Imbert, Guillaume Lemaitre, и Жоан МассичУлучшение
linear_model.LogisticRegressionтеперь поддерживает нерегуляризованную целевую функцию, когдаpenalty='none'передается. Это эквивалентно установкеC=np.infс регуляризацией l2. Не поддерживается решателем liblinear. #12860 by Nicolas Hug.Улучшение
sparse_cgsolver вlinear_model.Ridgeтеперь поддерживает подгонку пересечения (т.е.fit_intercept=True) когда входные данные разрежены. #13336 by Bartosz Telenczuk.Улучшение Решатель координатного спуска, используемый в
Lasso,ElasticNet, и т.д. теперь выдаетConvergenceWarningкогда он завершается без достижения желаемого допуска. #11754 и #13397 by Brent Fagan и Адрин Джалали.Исправление Исправлена ошибка в
linear_model.LogisticRegressionиlinear_model.LogisticRegressionCVс решателем 'saga', где веса могут некорректно обновляться в некоторых случаях. #11646 by Tom Dupre la Tour.Исправление Исправлены апостериорное среднее, апостериорная ковариация и возвращённые регуляризационные параметры в
linear_model.BayesianRidge. Среднее апостериорное значение и апостериорная ковариация не были вычислены с последним обновлением параметров регуляризации, и возвращенные параметры регуляризации не были окончательными. Также исправлена формула логарифмического маргинального правдоподобия, используемого для вычисления оценки, когдаcompute_score=True. #12174 by Альберт Томас.Исправление Исправлена ошибка в
linear_model.LassoLarsIC, где пользовательский вводcopy_X=Falseпри создании экземпляра будет переопределено значением параметра по умолчаниюcopy_X=Trueвfit. #12972 by Лучио Фернандес-АрхонаИсправление Исправлена ошибка в
linear_model.LinearRegressionкоторая не возвращала те же коэффициенты и пересечения сfit_intercept=Trueв разреженном и плотном случаях. #13279 by Александр ГрамфорИсправление Исправлена ошибка в
linear_model.HuberRegressorкоторый был нарушен, когдаXимел тип bool. #13328 by Александр Грамфор.Исправление Исправлена проблема производительности
sagaиsagсолверы при вызове вjoblib.Parallelнастройка сn_jobs > 1иbackend="threading", заставляя их работать хуже, чем в последовательном случае. #13389 by Пьер Глазер.Исправление Исправлена ошибка в
linear_model.stochastic_gradient.BaseSGDClassifierкоторый не был детерминированным при обучении в многоклассовой настройке на нескольких потоках. #13422 by Клеман Думоро.Исправление Исправлена ошибка в
linear_model.ridge_regression,linear_model.Ridgeиlinear_model.RidgeClassifierкоторый вызывал необработанное исключение для аргументовreturn_intercept=Trueиsolver=auto(по умолчанию) или любой другой решатель, отличный отsag. #13363 by Bartosz TelenczukИсправление
linear_model.ridge_regressionтеперь будет вызывать исключение, еслиreturn_intercept=Trueи решатель отличается отsagРанее выдавалось только предупреждение. #13363 by Bartosz TelenczukИсправление
linear_model.ridge_regressionвыберетsparse_cgрешатель для разреженных входных данных, когдаsolver=autoиsample_weightпредоставляется (ранееcholeskyбыл выбран решатель). #13363 by Bartosz TelenczukИзменение API Использование
linear_model.lars_pathсX=Noneпри передачеGramустарел в версии 0.21 и будет удален в версии 0.23. Используйтеlinear_model.lars_path_gramвместо этого. #11699 by Kuai Yu.Изменение API
linear_model.logistic_regression_pathустарела в версии 0.21 и будет удалена в версии 0.23. #12821 by Nicolas Hug.Исправление
linear_model.RidgeCVс перекрёстной проверкой по одному наблюдению теперь корректно подгоняет свободный член, когдаfit_intercept=Trueи матрица плана разрежена. #19888 by Жером Докес
sklearn.manifold#
Эффективность Сделать
manifold.trustworthinessиспользовать инвертированный индекс вместоnp.whereпоиск для определения ранга соседей во входном пространстве. Это повышает эффективность, особенно при вычислении с большим количеством соседей и/или небольшими наборами данных. #9907 by William de Vazelhes.
sklearn.metrics#
Функция Добавлен
metrics.max_errorметрика и соответствующая'max_error'скорер для регрессии с одним выходом. #12232 by Krishna Sangeeth.Функция Добавить
metrics.multilabel_confusion_matrix, который вычисляет матрицу ошибок с количеством истинно положительных, ложноположительных, ложноотрицательных и истинно отрицательных результатов для каждого класса. Это облегчает расчет метрик на множествах, таких как полнота, специфичность, ложная положительная частота и частота пропусков. #11179 by Шанву Яо и Joel Nothman.Функция
metrics.jaccard_scoreбыл добавлен для вычисления коэффициента Жаккара как метрики оценки для бинарных, многометочных и многоклассовых задач, с интерфейсом, аналогичнымmetrics.f1_score. #13151 by Гаурав Дхингра и Joel Nothman.Функция Добавлен
metrics.pairwise.haversine_distancesкоторый может быть доступен сmetric='pairwise'черезmetrics.pairwise_distancesи оценщиками. (Расстояние Хаверсина ранее было доступно для вычисления ближайших соседей.) #12568 by Вэй Сюэ, Эммануэль Ариас и Joel Nothman.Эффективность Быстрее
metrics.pairwise_distancesсn_jobs> 1, используя бэкенд на основе потоков вместо бэкендов на основе процессов. #8216 by Пьер Глазер и Romuald MenuetЭффективность Попарные манхэттенские расстояния с разреженными входными данными теперь используют BLAS, поставляемый с scipy, вместо встроенного BLAS. #12732 by Жереми дю Буаберранже
Улучшение Используйте метку
accuracyвместоmicro-averageнаmetrics.classification_reportво избежание путаницы.micro-averageпоказывается только для многометочной или многоклассовой классификации с подмножеством классов, потому что в противном случае она идентична точности. #12334 by Эммануэль Ариас, Joel Nothman и Андреас МюллерУлучшение Добавлен
betaпараметр дляmetrics.homogeneity_completeness_v_measureиmetrics.v_measure_scoreдля настройки компромисса между однородностью и полнотой. #13607 by Stephane Couvreur и и Ivan Sanchez.Исправление Метрика
metrics.r2_scoreвырожден с одним образцом и теперь возвращает NaN и вызываетexceptions.UndefinedMetricWarning. #12855 by Павел Сендык.Исправление Исправлена ошибка, где
metrics.brier_score_lossиногда возвращает неверный результат, когда есть только один класс вy_true. #13628 by Hanmin Qin.Исправление Исправлена ошибка в
metrics.label_ranking_average_precision_scoreгде sample_weight не учитывался для образцов с вырожденными метками. #13447 by Дэн Эллис.Изменение API Параметр
labelsвmetrics.hamming_lossустарела в версии 0.21 и будет удалена в версии 0.23. #10580 by Решама Шайх и Sandra Mitrovic.Исправление Функция
metrics.pairwise.euclidean_distances, и поэтому несколько оценщиков сmetric='euclidean', страдал от проблем с численной точностью вfloat32признаков. Точность была увеличена за счет небольшого снижения производительности. #13554 by @Celelibi и Жереми дю Буаберранже.Изменение API
metrics.jaccard_similarity_scoreНабор утилит для работы с разреженными матрицами и массивами.metrics.jaccard_score. Прежнее поведение для бинарных и многоклассовых целей нарушено. #13151 by Joel Nothman.
sklearn.mixture#
Исправление Исправлена ошибка в
mixture.BaseMixtureи, следовательно, на оценщиках, основанных на нём, т.е.mixture.GaussianMixtureиmixture.BayesianGaussianMixture, гдеfit_predictиfit.predictне были эквивалентны. #13142 by Жереми дю Буаберранже.
sklearn.model_selection#
Функция Классы
GridSearchCVиRandomizedSearchCVтеперь позволяют использовать refit=callable для добавления гибкости в идентификации лучшего оценщика. См. Баланс сложности модели и кросс-валидационной оценки. #11354 by Wenhao Zhang, Joel Nothman и Адрин Джалали.Улучшение Классы
GridSearchCV,RandomizedSearchCV, и методыcross_val_score,cross_val_predict,cross_validate, теперь выводит оценки обучения, когдаreturn_train_scoresравно True иverbose> 2. Дляlearning_curve, иvalidation_curveтребуется только последнее. #12613 и #12669 by Марк Торрельяс.Улучшение Некоторые CV splitter классы и
model_selection.train_test_splitтеперь вызываютValueErrorкогда результирующий обучающий набор пуст. #12861 by Nicolas Hug.Исправление Исправлена ошибка, где
model_selection.StratifiedKFoldперемешивает выборки каждого класса с тем жеrandom_state, делаяshuffle=Trueнеэффективен. #13124 by Hanmin Qin.Исправление Добавлена возможность для
model_selection.cross_val_predictдля обработки многометочных (и многоклассовых многомерных) целей сpredict_proba-тип методы. #8773 by Стивен Гувер.Исправление Исправлена проблема в
cross_val_predictгдеmethod="predict_proba"возвращается всегда0.0когда один из классов был исключён в сгибе перекрёстной проверки. #13366 by Гийом Фурнье
sklearn.multiclass#
Исправление Исправлена проблема в
multiclass.OneVsOneClassifier.decision_functionгде значение decision_function для данного образца различалось в зависимости от того, вычислялась ли decision_function на отдельном образце или на пакете, содержащем этот же образец, из-за масштабирования, используемого в decision_function. #10440 by Jonathan Ohayon.
sklearn.multioutput#
Исправление Исправлена ошибка в
multioutput.MultiOutputClassifierгдеpredict_probaметод неправильно проверялpredict_probaатрибут в объекте оценщика. #12222 by Ребекка Ким
sklearn.neighbors#
Основная функция Добавлен
neighbors.NeighborhoodComponentsAnalysisдля метрического обучения, который реализует алгоритм анализа соседних компонентов. #10058 by William de Vazelhes и John Chiotellis.Изменение API Методы в
neighbors.NearestNeighbors:kneighbors,radius_neighbors,kneighbors_graph,radius_neighbors_graphтеперь вызываютNotFittedError, а неAttributeError, когда вызывается передfit#12279 by Krishna Sangeeth.
sklearn.neural_network#
Исправление Исправлена ошибка в
neural_network.MLPClassifierиneural_network.MLPRegressorгде опцияshuffle=Falseигнорировался. #12582 by Сэм Уотербери.Исправление Исправлена ошибка в
neural_network.MLPClassifierгде наборы валидации для ранней остановки не выбирались с стратификацией. Однако в многометочном случае разбиения по-прежнему не стратифицированы. #13164 by Nicolas Hug.
sklearn.pipeline#
Функция
pipeline.Pipelineтеперь может использовать нотацию индексации (например,my_pipeline[0:-1]) для извлечения подпоследовательности шагов как другого экземпляра Pipeline. Pipeline также может быть проиндексирован напрямую для извлечения конкретного шага (например,my_pipeline['svc']), а не обращаясь кnamed_steps. #2568 by Joel Nothman.Функция Добавлен необязательный параметр
verboseвpipeline.Pipeline,compose.ColumnTransformerиpipeline.FeatureUnionи соответствующиеmake_вспомогательные средства для отображения прогресса и времени каждого шага. #11364 by Базе Петрушев, Каран Десаи, Joel Nothman, и Томас Фан.Улучшение
pipeline.Pipelineтеперь поддерживает использование'passthrough'как трансформер, с тем же эффектом, что иNone. #11144 by Томас Фан.Улучшение
pipeline.Pipelineреализует__len__и следовательноlen(pipeline)возвращает количество шагов в конвейере. #13439 by Lakshya KD.
sklearn.preprocessing#
Функция
preprocessing.OneHotEncoderтеперь поддерживает удаление одного признака на категорию с новым параметром drop. #12908 by Drew Johnston.Эффективность
preprocessing.OneHotEncoderиpreprocessing.OrdinalEncoderтеперь обрабатывает pandas DataFrames более эффективно. #13253 by @maikia.Эффективность Сделать
preprocessing.MultiLabelBinarizerкэшировать сопоставления классов вместо вычисления их каждый раз на лету. #12116 by Екатерина Кривич и Joel Nothman.Эффективность
preprocessing.PolynomialFeaturesтеперь поддерживает сжатые разреженные строковые (CSR) матрицы в качестве входных данных для степеней 2 и 3. Это обычно намного быстрее, чем плотный случай, так как масштабируется с плотностью матрицы и степенью расширения (порядка density^degree), и намного, намного быстрее, чем случай сжатых разреженных столбцовых (CSC) матриц. #12197 by Эндрю Нистром.Эффективность Ускорение в
preprocessing.PolynomialFeatures, в плотном случае. Также добавлен новый параметрorderкоторый управляет порядком вывода для дальнейшего повышения производительности. #12251 by Tom Dupre la Tour.Исправление Исправлено переполнение вычислений при использовании типа данных float16 с
preprocessing.StandardScaler. #13007 by Раффаэлло БалуйотИсправление Исправлена ошибка в
preprocessing.QuantileTransformerиpreprocessing.quantile_transformчтобы принудительно установить n_quantiles не более равным n_samples. Значения n_quantiles больше n_samples были либо бесполезны, либо приводили к неправильной аппроксимации оценщика функции кумулятивного распределения. #13333 by Альберт Томас.Изменение API Значение по умолчанию для
copyвpreprocessing.quantile_transformизменится с False на True в версии 0.23, чтобы сделать его более согласованным с настройкой по умолчаниюcopyзначения других функций вsklearn.preprocessingи предотвратить неожиданные побочные эффекты, изменяя значениеXна месте. #13459 by Хантер МакГашион.
sklearn.svm#
Исправление Исправлена проблема в
svm.SVC.decision_functionкогдаdecision_function_shape='ovr'. Значение decision_function для данного образца различалось в зависимости от того, вычислялось ли decision_function на одном образце или на пакете, содержащем этот же образец, из-за масштабирования, используемого в decision_function. #10440 by Jonathan Ohayon.
sklearn.tree#
Функция Деревья решений теперь можно визуализировать с помощью matplotlib, используя
tree.plot_treeбез использованияdotбиблиотека, удаление сложно устанавливаемой зависимости. #8508 by Андреас Мюллер.Функция Деревья решений теперь можно экспортировать в удобочитаемом текстовом формате с помощью
tree.export_text. #6261 byGiuseppe Vettigli.Функция
get_n_leaves()иget_depth()были добавлены вtree.BaseDecisionTreeи, следовательно, все оценщики на его основе, включаяtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier, иtree.ExtraTreeRegressor. #12300 by Адрин Джалали.Исправление Деревья и леса ранее не
predictмногомерные целевые переменные классификации со строковыми метками, несмотря на их принятие вfit. #11458 by Митар Милутинович.Исправление Исправлена проблема с
tree.BaseDecisionTreeи, следовательно, все оценщики на его основе, включаяtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier, иtree.ExtraTreeRegressor, где они раньше превышали заданноеmax_depthна 1 при расширении дерева, еслиmax_leaf_nodesиmax_depthбыли указаны пользователем. Обратите внимание, что это также влияет на все ансамблевые методы, использующие деревья решений. #12344 by Адрин Джалали.
sklearn.utils#
Функция
utils.resampleтеперь принимаетstratifyпараметр для выборки в соответствии с распределениями классов. #13549 by Nicolas Hug.Изменение API Устаревший
warn_on_dtypeпараметр изutils.check_arrayиutils.check_X_y. Добавлено явное предупреждение для преобразования типа данных вcheck_pairwise_arraysеслиmetricпередаваемый является попарной булевой метрикой. #13382 by Prathmesh Savale.
Несколько модулей#
Основная функция The
__repr__()метод всех оценщиков (используется при вызовеprint(estimator)) был полностью переписан, основываясь на стандартной библиотеке Python для красивого вывода. Все параметры выводятся по умолчанию, но это можно изменить с помощьюprint_changed_onlyопция вsklearn.set_config. #11705 by Nicolas Hug.Основная функция Добавлены теги оценщиков: это аннотации оценщиков, которые позволяют программно проверять их возможности, такие как поддержка разреженных матриц, поддерживаемые типы выходных данных и поддерживаемые методы. Теги оценщиков также определяют тесты, которые выполняются на оценщике, когда
check_estimatorвызывается. Подробнее в Руководство пользователя. #8022 by Андреас Мюллер.Эффективность Копирование памяти избегается при приведении массивов к другому dtype в нескольких оценщиках. #11973 by Roman Yurchak.
Исправление Исправлена ошибка в реализации
our_rand_rвспомогательной функции, которая вела себя непоследовательно на разных платформах. #13422 by Мадхура Парих и Клеман Думоро.
Разное#
Улучшение Joblib больше не поставляется в составе scikit-learn и становится зависимостью. Минимальная поддерживаемая версия — joblib 0.11, однако настоятельно рекомендуется использовать версию >= 0.13. #13531 by Roman Yurchak.
Изменения в проверках оценщика#
Эти изменения в основном затрагивают разработчиков библиотек.
Добавить
check_fit_idempotenttocheck_estimator, которая проверяет, что когдаfitвызывается дважды с одними и теми же данными, выводpredict,predict_proba,transform, иdecision_functionне изменяется. #12328 by Nicolas HugМногие проверки теперь могут быть отключены или настроены с помощью Теги оценщиков. #8022 by Андреас Мюллер.
Участники кода и документации
Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 0.20, включая:
adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier`, Finn O’Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^