Версия 1.4#
Для краткого описания основных особенностей выпуска, пожалуйста, обратитесь к Основные нововведения выпуска scikit-learn 1.4.
Легенда для списков изменений
Основная функция что-то большое, что вы не могли сделать раньше.
Функция что-то, что вы не могли делать раньше.
Эффективность существующий признак теперь может не требовать столько вычислений или памяти.
Улучшение различные мелкие улучшения.
Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.
Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.
Версия 1.4.2#
апрель 2024
Этот выпуск включает поддержку только numpy 2.
Версия 1.4.1#
Февраль 2024
Измененные модели#
Изменение API The
tree_.valueатрибут вtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierиtree.ExtraTreeRegressorизменен с взвешенного абсолютного количества образцов на взвешенную долю от общего числа образцов. #27639 by Самуэль Ронсен.
Маршрутизация метаданных#
Исправление Исправление проблемы маршрутизации с
ColumnTransformerпри использовании внутри другого мета-оценщика. #28188 by Адрин Джалали.Исправление Ошибка не возникает, когда метаданные не передаются метаоценщику, который включает суб-оценщик, не поддерживающий маршрутизацию метаданных. #28256 by Адрин Джалали.
Исправление Исправление
multioutput.MultiOutputRegressorиmultioutput.MultiOutputClassifierдля работы с оценщиками, которые не используют метаданные при включенной маршрутизации метаданных. #28240 by Адрин Джалали.
Поддержка DataFrame#
Изменения, затрагивающие многие модули#
Эффективность Исправление Частичный откат #28191 чтобы избежать регрессии производительности для оценщиков, полагающихся на евклидовы попарные вычисления с разреженными матрицами. Затронутые оценщики:
Исправление Исправляет ошибку для всех преобразователей scikit-learn при использовании
set_outputсtransformустановлено вpandasилиpolars. Ошибка могла привести к неправильному именованию столбцов возвращаемого датафрейма. #28262 by Guillaume Lemaitre.Исправление Когда пользователи пытаются использовать метод в
StackingClassifier,StackingClassifier,StackingClassifier,SelectFromModel,RFE,SelfTrainingClassifier,OneVsOneClassifier,OutputCodeClassifierилиOneVsRestClassifierчто их подоценщики не реализуют,AttributeErrorтеперь повторно вызывает в трассировке. #28167 by Stefanie Senger.
Журнал изменений#
sklearn.calibration#
Исправление
calibration.CalibratedClassifierCVподдерживает predict_proba с выходом float32 из внутреннего оценщика. #28247 by Томас Фан.
sklearn.cluster#
Исправление
cluster.AffinityPropagationтеперь избегает назначения нескольких разных кластеров для одинаковых точек. #28121 by Pietro Peterlongo и Yao Xiao.Исправление Избежать бесконечного цикла в
cluster.KMeansкогда количество кластеров больше количества уникальных образцов. #28165 by Жереми дю Буаберранже.
sklearn.compose#
Исправление
compose.ColumnTransformerтеперь преобразуется в polars dataframe, когдаverbose_feature_names_out=Trueи преобразователи, внутренне использовавшие одни и те же столбцы несколько раз. Ранее это вызывало ошибку из-за дублирования имен столбцов. #28262 by Guillaume Lemaitre.
sklearn.ensemble#
Исправление
HistGradientBoostingClassifierиHistGradientBoostingRegressorпри обучении наpandasDataFrameс расширенными типами данных, напримерpd.Int64Dtype#28385 by Loïc Estève.Исправление Исправляет сообщение об ошибке, вызванное
ensemble.VotingClassifierкогда цель является многометочной или многоклассовой-многозначной в формате DataFrame. #27702 by Guillaume Lemaitre.
sklearn.impute#
Исправление :
impute.SimpleImputerтеперь вызывает ошибку в.fitи.transformiffill_valueне может быть приведён к типу входного значения сcasting='same_kind'. #28365 by Leo Grinsztajn.
sklearn.inspection#
Исправление
inspection.permutation_importanceтеперь корректно обрабатываетsample_weightвместе с субдискретизацией (т.е.max_features< 1.0). #28184 by Michael Mayer.
sklearn.linear_model#
Исправление
linear_model.ARDRegressionтеперь обрабатывает типы входных данных pandas дляpredict(X, return_std=True). #28377 by Эдди Бергман.
sklearn.preprocessing#
Исправление make
preprocessing.FunctionTransformerболее снисходительный и перезаписывает имена выходных столбцов с помощьюget_feature_names_outв следующих случаях: (i) имена входных и выходных столбцов остаются одинаковыми (происходит при использовании NumPyufunc); (ii) имена входных столбцов являются числами; (iii) вывод будет установлен в фрейм данных Pandas или Polars. #28241 by Guillaume Lemaitre.Исправление
preprocessing.FunctionTransformerтеперь также предупреждает, когдаset_outputвызывается сtransform="polars"иfuncне возвращает фрейм данных Polars илиfeature_names_outне указано. #28263 by Guillaume Lemaitre.Исправление
preprocessing.TargetEncoderбольше не завершается ошибкой, когдаtarget_type="continuous"и входные данные доступны только для чтения. В частности, теперь он работает с включенным режимом copy-on-write в pandas. #28233 by John Hopfensperger.
sklearn.tree#
Исправление
tree.DecisionTreeClassifierиtree.DecisionTreeRegressorправильно обрабатывают пропущенные значения. Внутренний критерий не инициализировался, когда в данных не было пропущенных значений, что приводило к потенциально неверным значениям критерия. #28295 by Guillaume Lemaitre и #28327 by Adam Li.
sklearn.utils#
Улучшение Исправление
utils.metaestimators.available_ifтеперь повторно вызывает ошибку изcheckфункция как причинаAttributeError. #28198 by Томас Фан.Исправление
utils._safe_indexingтеперь вызываетValueErrorкогдаXявляется списком Python иaxis=1, как указано в документации. #28222 by Guillaume Lemaitre.
Версия 1.4.0#
Январь 2024
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
Эффективность
linear_model.LogisticRegressionиlinear_model.LogisticRegressionCVтеперь имеют гораздо лучшую сходимость для решателей"lbfgs"и"newton-cg". Оба решателя теперь могут достигать гораздо более высокой точности для коэффициентов в зависимости от указанногоtol. Кроме того, lbfgs может более эффективно использоватьtol, т.е., остановиться раньше или достичь более высокой точности. Примечание: lbfgs является решателем по умолчанию, поэтому это изменение может повлиять на многие модели. Это изменение также означает, что с этой новой версией scikit-learn, результирующие коэффициентыcoef_иintercept_ваших моделей изменятся для этих двух решателей (при повторном обучении на тех же данных). Величина изменения зависит от указанногоtol, для малых значений вы получите более точные результаты. #26721 by Christian Lorentzen.Исправление исправляет утечку памяти, наблюдаемую в PyPy для оценщиков, использующих функции потерь на Cython. #27670 by Guillaume Lemaitre.
Изменения, затрагивающие все модули#
Основная функция Трансформеры теперь поддерживают вывод в polars с
set_output(transform="polars"). #27315 by Томас Фан.Улучшение Все оценщики теперь распознают имена столбцов из любого датафрейма, который использует DataFrame Interchange Protocol. Dataframes, которые возвращают корректное представление через
np.asarray(df)ожидается работа с нашими оценщиками и функциями. #26464 by Томас Фан.Улучшение HTML-представление оценщиков теперь включает ссылку на документацию и раскрашено для обозначения, является ли оценщик обученным или нет (необученные оценщики оранжевые, обученные — синие). #26616 by Риккардо Каппуццо, Инес Ибнухсеин, Гаэль Варокво, Joel Nothman и Lilian Boulard.
Исправление Исправлена ошибка в большинстве оценщиков и функций, где установка параметра на большое целое число вызывала
TypeError. #26648 by Naoise Holohan.
Маршрутизация метаданных#
Следующие модели теперь поддерживают маршрутизацию метаданных в одном или нескольких своих методах. См. Руководство по маршрутизации метаданных для более подробной информации.
Функция
LarsCVиLassoLarsCVтеперь поддерживают маршрутизацию метаданных в своихfitметод и направлять метаданные к разделителю перекрестной проверки. #27538 by Omar Salman.Функция
multiclass.OneVsRestClassifier,multiclass.OneVsOneClassifierиmulticlass.OutputCodeClassifierтеперь поддерживают маршрутизацию метаданных в своихfitиpartial_fit, и направлять метаданные вfitиpartial_fit. #27308 by Stefanie Senger.Функция
pipeline.Pipelineтеперь поддерживает маршрутизацию метаданных в соответствии с руководство по маршрутизации метаданных. #26789 by Адрин Джалали.Функция
cross_validate,cross_val_score, иcross_val_predictтеперь поддерживают маршрутизацию метаданных. Метаданные направляются вfit, оценщик, и разделителя CVsplitМетаданные принимаются через новыйparamsпараметр.fit_paramsустарел и будет удален в версии 1.6.groupsпараметр также не принимается как отдельный аргумент, когда маршрутизация метаданных включена, и должен передаваться черезparamsпараметр. #26896 by Адрин Джалали.Функция
GridSearchCV,RandomizedSearchCV,HalvingGridSearchCV, иHalvingRandomSearchCVтеперь поддерживают маршрутизацию метаданных в своихfitиscore, и направлять метаданные вfit, разделитель CV и оценщик. #27058 by Адрин Джалали.Функция
ColumnTransformerтеперь поддерживает маршрутизацию метаданных в соответствии с руководство по маршрутизации метаданных. #27005 by Адрин Джалали.Функция
linear_model.LogisticRegressionCVтеперь поддерживает маршрутизацию метаданных.linear_model.LogisticRegressionCV.fitтеперь принимает**paramsкоторые передаются в базовый разделитель и оценщик.linear_model.LogisticRegressionCV.scoreтеперь принимает**score_paramsкоторые передаются в базовый скорер. #26525 by Omar Salman.Функция
feature_selection.SelectFromModelтеперь поддерживает маршрутизацию метаданных вfitиpartial_fit. #27490 by Stefanie Senger.Функция
linear_model.OrthogonalMatchingPursuitCVтеперь поддерживает маршрутизацию метаданных. Егоfitтеперь принимает**fit_params, которые передаются в базовый разделитель. #27500 by Stefanie Senger.Функция
ElasticNetCV,LassoCV,MultiTaskElasticNetCVиMultiTaskLassoCVтеперь поддерживают маршрутизацию метаданных и направляют метаданные к разделителю CV. #27478 by Omar Salman.Исправление Все мета-оценщики, для которых маршрутизация метаданных еще не реализована, теперь вызывают
NotImplementedErrorнаget_metadata_routingи наfitесли маршрутизация метаданных включена и любые метаданные передаются им. #27389 by Адрин Джалали.
Поддержка разреженных массивов SciPy#
Несколько оценщиков теперь поддерживают разреженные массивы SciPy. Затронуты следующие функции и классы:
Функции:
cluster.compute_optics_graphв #27104 by Марен Вестерманн и в #27250 by Yao Xiao;decomposition.non_negative_factorizationв #27100 by Isaac Virshup;
Классы:
cluster.HDBSCANв #27250 by Yao Xiao;cluster.OPTICSв #27104 by Марен Вестерманн и в #27250 by Yao Xiao;feature_extraction.text.TfidfTransformerв #27219 by Yao Xiao;manifold.Isomapв #27250 by Yao Xiao;manifold.TSNEв #27250 by Yao Xiao;impute.KNNImputerв #27277 by Yao Xiao;kernel_approximation.PolynomialCountSketchв #27301 by Lohit SundaramahaLingam;random_projection.GaussianRandomProjectionв #27314 by Stefanie Senger;random_projection.SparseRandomProjectionв #27314 by Stefanie Senger.
Поддержка Array API#
Несколько оценщиков и функций поддерживают Array API. Такие изменения позволяют использовать оценщики и функции с другими библиотеками, такими как JAX, CuPy и PyTorch. Это, таким образом, обеспечивает некоторые вычисления с ускорением на GPU.
См. Поддержка Array API (экспериментальная) для получения дополнительной информации.
Функции:
sklearn.metrics.accuracy_scoreиsklearn.metrics.zero_one_lossв Исправлена недетерминированность в by Эдоардо Абати;sklearn.model_selection.train_test_splitв #26855 by Tim Head;
Классы:
decomposition.PCAдляfullиrandomizedсолверы (с QR степенными итерациями) в #26315, #27098 и #27431 by Mateusz Sokół, Оливье Гризель и Эдоардо Абати;
Модуль приватной функции потерь#
Исправление Вычисление градиента биномиальной логарифмической потери теперь численно более стабильно для очень больших, по абсолютному значению, входных данных (сырых предсказаний). Раньше это могло приводить к
np.nan. Среди моделей, которые выигрывают от этого изменения,ensemble.GradientBoostingClassifier,ensemble.HistGradientBoostingClassifierиlinear_model.LogisticRegression. #28048 by Christian Lorentzen.
Журнал изменений#
sklearn.base#
Улучшение
base.ClusterMixin.fit_predictиbase.OutlierMixin.fit_predictтеперь принимают**kwargsкоторые передаются вfitметод оценщика. #26506 by Адрин Джалали.Улучшение
base.TransformerMixin.fit_transformиbase.OutlierMixin.fit_predictтеперь выдает предупреждение, еслиtransform/predictпотребляют метаданные, но не пользовательскиеfit_transform/fit_predictопределён в классе, наследующем от них соответственно. #26831 by Адрин Джалали.Улучшение
base.cloneтеперь поддерживаетdictкак вход и создаёт копию. #26786 by Адрин Джалали.Изменение API
process_routingтеперь имеет другую сигнатуру. Первые два (объект и метод) являются только позиционными, а все метаданные передаются как именованные аргументы. #26909 by Адрин Джалали.
sklearn.calibration#
Улучшение Внутренняя цель и градиент
sigmoidметод изcalibration.CalibratedClassifierCVбыли заменены приватным модулем потерь. #27185 by Omar Salman.
sklearn.cluster#
Исправление The
degreeпараметр вcluster.SpectralClusteringконструктор теперь принимает действительные значения вместо только целочисленных значений в соответствии сdegreeпараметрsklearn.metrics.pairwise.polynomial_kernel. #27668 by Нолан МакМахон.Исправление Исправлена ошибка в
cluster.OPTICSгде коррекция кластера на основе предшественника не использовала правильную индексацию. Это приводило к несовместимым результатам в зависимости от порядка данных. #26459 by Хаоин Чжан и Guillaume Lemaitre.Исправление Улучшено сообщение об ошибке при проверке количества связных компонентов в
fitметодcluster.HDBSCAN. #27678 by Ganesh Tata.Исправление Создание копии предварительно вычисленной разреженной матрицы внутри
fitметодcluster.DBSCANчтобы избежать модификации на месте разреженной матрицы. #27651 by Ganesh Tata.Исправление Вызывает правильное
ValueErrorкогдаmetric="precomputed"и запросили сохранение центров через параметрstore_centers. #27898 by Guillaume Lemaitre.Изменение API
kdtreeиballtreeзначения теперь устарели и переименованы какkd_treeиball_treeсоответственно дляalgorithmпараметрcluster.HDBSCANобеспечение согласованности в соглашении об именовании.kdtreeиballtreeзначения будут удалены в версии 1.6. #26744 by Shreesha Kumar Bhat.Изменение API Опция
metric=Noneвcluster.AgglomerativeClusteringиcluster.FeatureAgglomerationустарел в версии 1.4 и будет удален в версии 1.6. Используйте значение по умолчанию вместо этого. #27828 by Guillaume Lemaitre.
sklearn.compose#
Основная функция Добавляет polars поддержка ввода для
compose.ColumnTransformerчерез DataFrame Interchange Protocol. Минимальная поддерживаемая версия для polars —0.19.12. #26683 by Томас Фан.Исправление
cluster.spectral_clusteringиcluster.SpectralClusteringтеперь выдают явное сообщение об ошибке, указывающее, что разреженные матрицы и массивы сnp.int64индексы не поддерживаются. #27240 by Yao Xiao.Изменение API выходные данные, использующие типы данных расширения pandas и содержащие
pd.NAвColumnTransformerтеперь приводят кFutureWarningи вызоветValueErrorв версии 1.6, если контейнер вывода не был настроен как "pandas" сset_output(transform="pandas"). Раньше такие выходы приводили к массивам numpy с типом данныхobjectсодержащийpd.NAкоторые не могли быть преобразованы в numpy floats и вызывали ошибки при передаче другим оценщикам scikit-learn. #27734 by Жером Докес.
sklearn.covariance#
Улучшение Разрешить
covariance.shrunk_covarianceдля обработки нескольких ковариационных матриц одновременно, работая с nd-массивами. #25275 by Квентин Бартелеми.Изменение API Исправление
ColumnTransformerтеперь заменяет"passthrough"с соответствующимFunctionTransformerв обученнойtransformers_атрибут. #27204 by Адрин Джалали.
sklearn.datasets#
Улучшение
datasets.make_sparse_spd_matrixтеперь использует более эффективную по памяти разреженную структуру. Он также принимает новый ключевой параметрsparse_formatкоторый позволяет указывать формат вывода разреженной матрицы. По умолчаниюsparse_format=None, который возвращает плотный numpy ndarray, как и раньше. #27438 by Yao Xiao.Исправление
datasets.dump_svmlight_fileтеперь не вызывает исключенияValueErrorкогдаXдоступен только для чтения, например,numpy.memmapэкземпляр. #28111 by Yao Xiao.Изменение API
datasets.make_sparse_spd_matrixАлгоритм LARS, сделанный более численно устойчивым с помощью эвристик для отбрасывания слишком коррелированных регрессоров, а также для остановки пути, когда числовой шум становится преобладающим, путемdimв пользуn_dim.dimбудет удален в версии 1.6. #27718 by Adam Li.
sklearn.decomposition#
Функция
decomposition.PCAтеперь поддерживаетscipy.sparse.sparrayиscipy.sparse.spmatrixвходные данные при использованииarpackрешатель. При использовании на разреженных данных, таких какdatasets.fetch_20newsgroups_vectorizedэто может привести к ускорению в 100 раз (однопоточное) и снижению использования памяти в 70 раз. Основано на Александр Тарашанскийреализация в scanpy. #18689 by Isaac Virshup и Andrey Portnoy.Улучшение Был добавлен параметр "auto" в
n_componentsпараметрdecomposition.non_negative_factorization,decomposition.NMFиdecomposition.MiniBatchNMFавтоматически определять количество компонентов из форм W или H при использовании пользовательской инициализации. Значение по умолчанию этого параметра изменится сNonetoautoв версии 1.6. #26634 by Александр Ландо и Alexandre Vigny.Исправление
decomposition.dict_learning_onlineбольше не игнорирует параметрmax_iter. #27834 by Guillaume Lemaitre.Исправление The
degreeпараметр вdecomposition.KernelPCAконструктор теперь принимает действительные значения вместо только целочисленных значений в соответствии сdegreeпараметрsklearn.metrics.pairwise.polynomial_kernel. #27668 by Нолан МакМахон.Изменение API Опция
max_iter=Noneвdecomposition.MiniBatchDictionaryLearning,decomposition.MiniBatchSparsePCA, иdecomposition.dict_learning_onlineустарел и будет удалён в версии 1.6. Используйте значение по умолчанию. #27834 by Guillaume Lemaitre.
sklearn.ensemble#
Основная функция
ensemble.RandomForestClassifierиensemble.RandomForestRegressorподдерживает пропущенные значения, когда критерийgini,entropy, илиlog_loss, для классификации илиsquared_error,friedman_mse, илиpoissonдля регрессии. #26391 by Томас Фан.Основная функция
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorподдержкаcategorical_features="from_dtype", который обрабатывает столбцы с типом Pandas или Polars Categorical как категории в алгоритме.categorical_features="from_dtype"станет значением по умолчанию в v1.6. Категориальные признаки больше не нужно кодировать числами. Когда категориальные признаки являются числами, максимальное значение больше не должно быть меньше чемmax_bins; только количество (уникальных) категорий должно быть меньшеmax_bins. #26411 by Томас Фан и #27835 by Жером Докес.Основная функция
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorполучил новый параметрmax_featuresчтобы указать долю случайно выбранных признаков, рассматриваемых в каждом разбиении. #27139 by Christian Lorentzen.Функция
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierиensemble.ExtraTreesRegressorтеперь поддерживают монотонные ограничения, полезные, когда признаки предположительно оказывают положительное/отрицательное влияние на цель. Пропущенные значения в обучающих данных и многомерные цели не поддерживаются. #13649 by Самуэль Ронсен, инициировано Patrick O’Reilly.Эффективность
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorтеперь немного быстрее за счёт повторного использования гистограммы родительского узла как гистограммы дочернего узла в трюке вычитания. В результате требуется меньше выделения и освобождения памяти. #27865 by Christian Lorentzen.Эффективность
ensemble.GradientBoostingClassifierработает быстрее для бинарных и особенно для многоклассовых задач благодаря модулю приватной функции потерь. #26278 и #28095 by Christian Lorentzen.Эффективность Улучшает время выполнения и использование памяти для
ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorпри обучении на разреженных данных. #26957 by Томас Фан.Эффективность
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorтеперь работает быстрее, когдаscoringявляется предопределенной метрикой, перечисленной вmetrics.get_scorer_namesи ранняя остановка включена. #26163 by Томас Фан.Улучшение Настроенное свойство,
estimators_samples_, был добавлен ко всем методам Forest, включаяensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierиensemble.ExtraTreesRegressor, что позволяет получить индексы обучающих выборок, использованных для каждого дерева-оценщика. #26736 by Adam Li.Исправление Исправления
ensemble.IsolationForestкогда входные данные являются разреженной матрицей иcontaminationустановлен в значение с плавающей точкой. #27645 by Guillaume Lemaitre.Исправление Вызывает
ValueErrorвensemble.RandomForestRegressorиensemble.ExtraTreesRegressorпри запросе OOB оценки с многомерной моделью для целей, которые все округлены до целого числа. Это было распознано как многоклассовая задача. #27817 by Daniele OngariИсправление Изменяет теги оценщика, чтобы признать, что
ensemble.VotingClassifier,ensemble.VotingRegressor,ensemble.StackingClassifier,ensemble.StackingRegressor, поддерживают пропущенные значения, если всеestimatorsПоддерживает пропущенные значения. #27710 by Guillaume Lemaitre.Исправление Поддержка загрузки пиклов
ensemble.HistGradientBoostingClassifierиensemble.HistGradientBoostingRegressorкогда pickle был сгенерирован на платформе с другой разрядностью. Типичный пример — обучение и сохранение модели на 64-битной машине и загрузка модели на 32- битной машине для предсказания. #28074 by Christian Lorentzen и Loïc Estève.Изменение API В
ensemble.AdaBoostClassifier,algorithmаргументSAMME.Rбыл устаревшим и будет удален в 1.6. #26830 by Stefanie Senger.
sklearn.feature_extraction#
Изменение API Изменен тип ошибки с
AttributeErrortoexceptions.NotFittedErrorв неподогнанных экземплярахfeature_extraction.DictVectorizerдля следующих методов:feature_extraction.DictVectorizer.inverse_transform,feature_extraction.DictVectorizer.restrict,feature_extraction.DictVectorizer.transform. #24838 by Lorenz Hertel.
sklearn.feature_selection#
Улучшение
feature_selection.SelectKBest,feature_selection.SelectPercentile, иfeature_selection.GenericUnivariateSelectтеперь поддерживают неконтролируемый отбор признаков, предоставляяscore_funcзанимаетXиy=None. #27721 by Guillaume Lemaitre.Улучшение
feature_selection.SelectKBestиfeature_selection.GenericUnivariateSelectсmode='k_best'теперь показывает предупреждение, когдаkбольше, чем количество признаков. #27841 by Томас Фан.Исправление
feature_selection.RFEиfeature_selection.RFECVне проверяют наличие nan во время проверки входных данных. #21807 by Томас Фан.
sklearn.inspection#
Улучшение
inspection.DecisionBoundaryDisplayтеперь принимает параметрclass_of_interestдля выбора интересующего класса при построении отклика, предоставленногоresponse_method="predict_proba"илиresponse_method="decision_function". Это позволяет построить границу решения как для бинарных, так и для многоклассовых классификаторов. #27291 by Guillaume Lemaitre.Исправление
inspection.DecisionBoundaryDisplay.from_estimatorиinspection.PartialDependenceDisplay.from_estimatorтеперь возвращают правильный тип для подклассов. #27675 by Джон Кант.Изменение API
inspection.DecisionBoundaryDisplayвызываетAttributeErrorвместоValueErrorкогда оценщик не реализует запрошенный метод ответа. #27291 by Guillaume Lemaitre.
sklearn.kernel_ridge#
Исправление The
degreeпараметр вkernel_ridge.KernelRidgeконструктор теперь принимает действительные значения вместо только целочисленных значений в соответствии сdegreeпараметрsklearn.metrics.pairwise.polynomial_kernel. #27668 by Нолан МакМахон.
sklearn.linear_model#
Эффективность
linear_model.LogisticRegressionиlinear_model.LogisticRegressionCVтеперь имеют гораздо лучшую сходимость для решателей"lbfgs"и"newton-cg". Оба решателя теперь могут достигать гораздо более высокой точности для коэффициентов в зависимости от указанногоtol. Кроме того, lbfgs может более эффективно использоватьtol, т.е. остановиться раньше или достичь более высокой точности. Это достигается за счет лучшего масштабирования целевой функции, т.е. использования средних потерь на выборку вместо суммы потерь на выборку. #26721 by Christian Lorentzen.Эффективность
linear_model.LogisticRegressionиlinear_model.LogisticRegressionCVс решателем"newton-cg"теперь может быть значительно быстрее для некоторых данных и настроек параметров. Это достигается за счёт улучшенной проверки сходимости линейного поиска для незначительных улучшений потерь, которая учитывает информацию о градиенте. #26721 by Christian Lorentzen.Эффективность Решатель
"newton-cg"вlinear_model.LogisticRegressionиlinear_model.LogisticRegressionCVиспользует немного меньше памяти. Эффект пропорционален количеству коэффициентов (n_features * n_classes). #27417 by Christian Lorentzen.Исправление Убедитесь, что
sigma_атрибутlinear_model.ARDRegressionиlinear_model.BayesianRidgeвсегда имеетfloat32dtype при обучении наfloat32создает многоклассовый набор данных, распределяя каждый класс по одному нормально распределенному кластеру точек. Он предоставляет контроль над центрами и стандартными отклонениями каждого кластера. Этот набор данных используется для демонстрации кластеризации. #27899 by Оливье Гризель.Изменение API Атрибут
loss_function_oflinear_model.SGDClassifierиlinear_model.SGDOneClassSVMустарел и будет удален в версии 1.6. #27979 by Christian Lorentzen.
sklearn.metrics#
Эффективность Вычисление попарных расстояний через
metrics.DistanceMetricдля CSR x CSR, Dense x CSR и CSR x Dense наборов данных теперь в 1.5 раза быстрее. #26765 by Meekail Zain.Эффективность Вычисление расстояний через
metrics.DistanceMetricдля CSR x CSR, Dense x CSR и CSR x Dense теперь использует ~50% меньше памяти, и выводит расстояния в том же типе данных, что и предоставленные данные. #27006 by Meekail Zain.Улучшение Улучшить отображение графика, полученного с помощью
metrics.PrecisionRecallDisplayиmetrics.RocCurveDisplayклассов. Пределы по осям x и y установлены на [0, 1], а соотношение сторон между обеими осями установлено равным 1 для получения квадратного графика. #26366 by Mojdeh Rastgoo.Улучшение Добавлен
neg_root_mean_squared_log_error_scorerв качестве скорера #26734 by Алехандро Мартин Хиль.Улучшение
metrics.confusion_matrixтеперь предупреждает, когда только одна метка была найдена вy_trueиy_pred. #27650 by Lucy Liu.Исправление вычисление попарных расстояний с
metrics.pairwise.euclidean_distancesбольше не вызывает исключение, когдаXпредоставляется какfloat64массив иX_norm_squaredв качествеfloat32массив. #27624 by Жером Докес.Исправление
f1_scoreтеперь предоставляет корректные значения при обработке различных случаев, когда происходит деление на ноль, используя формулировку, не зависящую от значений точности и полноты. #27577 by Omar Salman и Guillaume Lemaitre.Исправление
metrics.make_scorerтеперь вызывает ошибку при использовании регрессора на оценщике, требующем не пороговой функции принятия решения (изdecision_functionилиpredict_proba). Такие метрики специфичны для классификации. #26840 by Guillaume Lemaitre.Исправление
metrics.DetCurveDisplay.from_predictions,metrics.PrecisionRecallDisplay.from_predictions,metrics.PredictionErrorDisplay.from_predictions, иmetrics.RocCurveDisplay.from_predictionsтеперь возвращает правильный тип для подклассов. #27675 by Джон Кант.Изменение API Устаревший
needs_thresholdиneeds_probaизmetrics.make_scorer. Эти параметры будут удалены в версии 1.6. Вместо них используйтеresponse_methodкоторый принимает"predict","predict_proba"или"decision_function"или список таких значений.needs_proba=Trueэквивалентноresponse_method="predict_proba"иneeds_threshold=Trueэквивалентноresponse_method=("decision_function", "predict_proba"). #26840 by Guillaume Lemaitre.Изменение API The
squaredпараметрmetrics.mean_squared_errorиmetrics.mean_squared_log_errorустарела и будет удалена в версии 1.6. Используйте новые функцииmetrics.root_mean_squared_errorиmetrics.root_mean_squared_log_errorвместо этого. #26734 by Алехандро Мартин Хиль.
sklearn.model_selection#
Улучшение
model_selection.learning_curveвыдает предупреждение, когда каждая складка перекрестной проверки завершается неудачей. #26299 by Rahil Parikh.Исправление
model_selection.GridSearchCV,model_selection.RandomizedSearchCV, иmodel_selection.HalvingGridSearchCVтеперь не изменяет заданный объект в сетке параметров, если это оценщик. #26786 by Адрин Джалали.
sklearn.multioutput#
Улучшение Добавить метод
predict_log_probatomultioutput.ClassifierChain. #27720 by Guillaume Lemaitre.
sklearn.neighbors#
Эффективность
sklearn.neighbors.KNeighborsRegressor.predictиsklearn.neighbors.KNeighborsClassifier.predict_probaтеперь эффективно поддерживают пары плотных и разреженных наборов данных. #27018 by Julien Jerphanion.Эффективность Производительность
neighbors.RadiusNeighborsClassifier.predictи изneighbors.RadiusNeighborsClassifier.predict_probaбыл улучшен когдаradiusвелик иalgorithm="brute"с неевклидовыми метриками. #26828 by Omar Salman.Исправление Улучшить сообщение об ошибке для
neighbors.LocalOutlierFactorкогда он вызывается сn_samples=n_neighbors. #23317 by Bharat Raghunathan.Исправление
neighbors.KNeighborsClassifier.predictиneighbors.KNeighborsClassifier.predict_probaтеперь вызывает ошибку, когда веса всех соседей некоторого образца равны нулю. Это может произойти, когдаweights(поддерживает только метрики "cosine", "euclidean", "manhattan" и "l2") #26410 by Yao Xiao.Изменение API
neighbors.KNeighborsRegressorтеперь принимаетmetrics.DistanceMetricобъекты напрямую черезmetricаргумент ключевого слова, позволяющий использовать ускоренные сторонниеmetrics.DistanceMetricобъекты. #26267 by Meekail Zain.
sklearn.preprocessing#
Эффективность
preprocessing.OrdinalEncoderизбегает вычисления пропущенных индексов дважды для повышения эффективности. #27017 by Xuefeng Xu.Эффективность Повышает эффективность в
preprocessing.OneHotEncoderиpreprocessing.OrdinalEncoderпри проверкеnan. #27760 by Xuefeng Xu.Улучшение Улучшает предупреждения в
preprocessing.FunctionTransformerкогдаfuncвозвращает pandas dataframe, и вывод настроен на pandas. #26944 by Томас Фан.Улучшение
preprocessing.TargetEncoderтеперь поддерживаетtarget_type'multiclass'. #26674 by Lucy Liu.Исправление
preprocessing.OneHotEncoderиpreprocessing.OrdinalEncoderвызвать исключение, когдаnanявляется категорией и не последней в предоставленных пользователем категориях. #27309 by Xuefeng Xu.Исправление
preprocessing.OneHotEncoderиpreprocessing.OrdinalEncoderвызвать исключение, если предоставленные пользователем категории содержат дубликаты. #27328 by Xuefeng Xu.Исправление
preprocessing.FunctionTransformerвызывает ошибку вtransformесли выводget_feature_names_outне согласуется с именами столбцов выходного контейнера, если они определены. #27801 by Guillaume Lemaitre.Исправление Вызвать
NotFittedErrorвpreprocessing.OrdinalEncoderпри вызовеtransformбез вызоваfitсcategoriesвсегда требует проверки. #27821 by Guillaume Lemaitre.
sklearn.tree#
Функция
tree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierиtree.ExtraTreeRegressorтеперь поддерживает монотонные ограничения, полезные когда признаки должны оказывать положительное/отрицательное влияние на целевую переменную. Пропущенные значения в обучающих данных и многомерные целевые переменные не поддерживаются. #13649 by Самуэль Ронсен, инициированный Patrick O’Reilly.
sklearn.utils#
Улучшение
sklearn.utils.estimator_html_reprдинамически адаптирует цвета диаграмм на основеprefers-color-scheme, обеспечивая улучшенную адаптируемость к темным темам окружения. #26862 by Эндрю Гох Ишенг, Томас Фан, Адрин Джалали.Улучшение
MetadataRequestиMetadataRouterтеперь имеютconsumesметод, который можно использовать для проверки, будет ли использован заданный набор параметров. #26831 by Адрин Джалали.Улучшение Сделать
sklearn.utils.check_arrayпопытка вывестиint32-индексированные CSR и COO массивы при конвертации из DIA массивов, если количество ненулевых элементов достаточно мало. Это гарантирует, что оценщики, реализованные на Cython и которые не принимаютint64-индексированная разреженная структура данных теперь последовательно принимает те же форматы разреженного ввода для разреженных матриц и массивов SciPy. #27372 by Guillaume Lemaitre.Исправление
sklearn.utils.check_arrayдолжен принимать как матрицы, так и массивы из разреженного модуля SciPy. Предыдущая реализация завершалась ошибкой, еслиcopy=Trueпутем вызова конкретных функций NumPynp.may_share_memoryкоторый не работает с разреженными массивами SciPy и не возвращает правильный результат для разреженных матриц SciPy. #27336 by Guillaume Lemaitre.Исправление
check_estimators_pickleсreadonly_memmap=Trueтеперь полагается на собственную возможность joblib выделять выровненные массивы, отображённые в память, при загрузке сериализованного оценщика, вместо вызова выделенной приватной функции, которая могла бы завершиться сбоем, когда OpenBLAS неправильно определяет архитектуру процессора. #27614 by Оливье Гризель.Исправление Сообщение об ошибке в
check_arrayкогда передавалась разреженная матрица, ноaccept_sparseявляетсяFalseтеперь предлагает использовать.toarray()и неX.toarray(). #27757 by Lucy Liu.Исправление Исправить функцию
check_arrayдля вывода правильного сообщения об ошибке когда входные данные являются Series вместо DataFrame. #28090 by Stan Furrer и Yao Xiao.Изменение API
sklearn.utils.extmath.log_logisticустарел и будет удалён в версии 1.6. Используйте-np.logaddexp(0, -x)вместо этого. #27544 by Christian Lorentzen.
Участники кода и документации
Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 1.3, включая:
101AlexMartin, Abhishek Singh Kushwah, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Alex, Alexander Al-Feghali, Alexis IMBERT, AlexL, Alex Molas, Anam Fatima, Andrew Goh, andyscanzio, Aniket Patil, Artem Kislovskiy, Arturo Amor, ashah002, avm19, Ben Holmes, Ben Mares, Benoit Chevallier-Mames, Bharat Raghunathan, Binesh Bannerjee, Brendan Lu, Brevin Kunde, Camille Troillard, Carlo Lemos, Chad Parmet, Christian Clauss, Christian Lorentzen, Christian Veenhuis, Christos Aridas, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, cynthias13w, DaminK, Daniele Ongari, Daniel Schmitz, Daniel Tinoco, David Brochart, Deborah L. Haar, DevanshKyada27, Dimitri Papadopoulos Orfanos, Dmitry Nesterov, DUONG, Edoardo Abati, Eitan Hemed, Elabonga Atuo, Elisabeth Günther, Emma Carballal, Emmanuel Ferdman, epimorphic, Erwan Le Floch, Fabian Egli, Filip Karlo Došilović, Florian Idelberger, Franck Charras, Gael Varoquaux, Ganesh Tata, Hleb Levitski, Guillaume Lemaitre, Haoying Zhang, Harmanan Kohli, Ily, ioangatop, IsaacTrost, Isaac Virshup, Iwona Zdzieblo, Jakub Kaczmarzyk, James McDermott, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, John Cant, John Hopfensperger, Jona Sassenhagen, Jon Nordby, Julien Jerphanion, Kennedy Waweru, kevin moore, Kian Eliasi, Kishan Ved, Konstantinos Pitas, Koustav Ghosh, Kushan Sharma, ldwy4, Linus, Lohit SundaramahaLingam, Loic Esteve, Lorenz, Louis Fouquet, Lucy Liu, Luis Silvestrin, Lukáš Folwarczný, Lukas Geiger, Malte Londschien, Marcus Fraaß, Marek Hanuš, Maren Westermann, Mark Elliot, Martin Larralde, Mateusz Sokół, mathurinm, mecopur, Meekail Zain, Michael Higgins, Miki Watanabe, Milton Gomez, MN193, Mohammed Hamdy, Mohit Joshi, mrastgoo, Naman Dhingra, Naoise Holohan, Narendra Singh dangi, Noa Malem-Shinitski, Nolan, Nurseit Kamchyev, Oleksii Kachaiev, Olivier Grisel, Omar Salman, partev, Peter Hull, Peter Steinbach, Pierre de Fréminville, Pooja Subramaniam, Puneeth K, qmarcou, Quentin Barthélemy, Rahil Parikh, Rahul Mahajan, Raj Pulapakura, Raphael, Ricardo Peres, Riccardo Cappuzzo, Roman Lutz, Salim Dohri, Samuel O. Ronsin, Sandip Dutta, Sayed Qaiser Ali, scaja, scikit-learn-bot, Sebastian Berg, Shreesha Kumar Bhat, Shubhal Gupta, Søren Fuglede Jørgensen, Stefanie Senger, Tamara, Tanjina Afroj, THARAK HEGDE, thebabush, Thomas J. Fan, Thomas Roehr, Tialo, Tim Head, tongyu, Venkatachalam N, Vijeth Moudgalya, Vincent M, Vivek Reddy P, Vladimir Fokow, Xiao Yuan, Xuefeng Xu, Yang Tao, Yao Xiao, Yuchen Zhou, Yuusuke Hiramatsu