Версия 1.3#
Для краткого описания основных особенностей выпуска, пожалуйста, обратитесь к Основные изменения в выпуске scikit-learn 1.3.
Легенда для списков изменений
Основная функция что-то большое, что вы не могли сделать раньше.
Функция что-то, что вы не могли делать раньше.
Эффективность существующий признак теперь может не требовать столько вычислений или памяти.
Улучшение различные мелкие улучшения.
Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.
Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.
Версия 1.3.2#
Октябрь 2023
Журнал изменений#
sklearn.datasets#
Исправление Все загрузчики наборов данных теперь принимают
data_homeкак любой объект, который реализуетos.PathLikeинтерфейс, например,pathlib.Path. #27468 by Yao Xiao.
sklearn.decomposition#
Исправление Исправлена ошибка в
decomposition.KernelPCAпутём принудительного вывода внутреннегоpreprocessing.KernelCentererбыть массивом по умолчанию. Когда используется решатель arpack, он ожидает массив сdtypeатрибут. #27583 by Guillaume Lemaitre.
sklearn.metrics#
Исправление Исправляет ошибку для метрик, использующих
zero_division=np.nan(например,precision_score) внутри параллельного цикла (например,cross_val_score), где синглтон дляnp.nanбудет отличаться в подпроцессах. #27573 by Guillaume Lemaitre.
sklearn.tree#
Исправление Не допускайте утечки данных через неинициализированную память в файлах pickle деревьев решений и сделайте генерацию этих файлов детерминированной. #27580 by Loïc Estève.
Версия 1.3.1#
Сентябрь 2023
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
Исправление Модели Ridge с
solver='sparse_cg'может давать немного разные результаты с scipy>=1.12, из-за изменения в решателе scipy (см. scipy#18488 для получения дополнительных сведений) #26814 by Loïc Estève
Изменения, затрагивающие все модули#
Журнал изменений#
sklearn.calibration#
Исправление
calibration.CalibratedClassifierCVтеперь может обрабатывать модели, которые производят большие оценки предсказаний. Раньше это было численно нестабильно. #26913 by Omar Salman.
sklearn.cluster#
Исправление
cluster.BisectingKMeansможет привести к сбою при предсказании на данных с другим масштабом, чем данные, использованные для обучения модели. #27167 by Оливье Гризель.Исправление
cluster.BisectingKMeansтеперь работает с данными, имеющими один признак. #27243 by Жереми дю Буаберранже.
sklearn.cross_decomposition#
Исправление
cross_decomposition.PLSRegressionтеперь автоматически преобразует выводpredictесли обучен с одномернымиy. #26602 by Yao Xiao.
sklearn.ensemble#
Исправление Исправлена ошибка в
ensemble.AdaBoostClassifierсalgorithm="SAMME"где решающая функция каждого слабого ученика должна быть симметричной (т.е. сумма оценок должна суммироваться в ноль для выборки). #26521 by Guillaume Lemaitre.
sklearn.feature_selection#
Исправление
feature_selection.mutual_info_regressionтеперь правильно вычисляет результат, когдаXимеет целочисленный тип данных. #26748 by Yao Xiao.
sklearn.impute#
Исправление
impute.KNNImputerтеперь корректно добавляет столбец с индикатором пропущенных значений вtransformкогдаadd_indicatorустановлено вTrueи пропущенные значения наблюдаются во времяfit. #26600 by Shreesha Kumar Bhat.
sklearn.metrics#
Исправление Оценщики, используемые с
metrics.get_scorerправильно обрабатывать матрицу мультиметок-индикаторов. #27002 by Guillaume Lemaitre.
sklearn.mixture#
Исправление Инициализация
mixture.GaussianMixtureот пользователяprecisions_initдляcovariance_typeoffullилиtiedбыл некорректен и был исправлен. #26416 by Ян Тао.
sklearn.neighbors#
Исправление
neighbors.KNeighborsClassifier.predictбольше не вызывает исключение дляpandas.DataFramesввод. #26772 by Жереми дю Буаберранже.Исправление Восстановить
sklearn.neighbors.BallTree.valid_metricsиsklearn.neighbors.KDTree.valid_metricsкак публичные атрибуты класса. #26754 by Julien Jerphanion.Исправление
sklearn.model_selection.HalvingRandomSearchCVбольше не вызывает исключение, когда входные данные дляparam_distributionsпараметр представляет собой список словарей. #26893 by Stefanie Senger.Исправление Оценщики на основе соседей теперь корректно работают, когда
metric="minkowski"и параметр metricpнаходится в диапазоне0 < p < 1, независимо отdtypeofX. #26760 by Shreesha Kumar Bhat.
sklearn.preprocessing#
Исправление
preprocessing.LabelEncoderкорректно принимаетyв качестве именованного аргумента. #26940 by Томас Фан.Исправление
preprocessing.OneHotEncoderпоказывает более информативное сообщение об ошибке когдаsparse_output=Trueи вывод настроен на pandas. #26931 by Томас Фан.
sklearn.tree#
Исправление
tree.plot_treeтеперь принимаетclass_names=Trueкак задокументировано. #26903 by Томас РёрИсправление The
feature_namesпараметрtree.plot_treeтеперь принимает любой массивоподобный объект вместо только списка. #27292 by Rahil Parikh.
Версия 1.3.0#
Июнь 2023
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
Улучшение
multiclass.OutputCodeClassifier.predictтеперь использует более эффективное сокращение попарных расстояний. Как следствие, стратегия разрешения ничьих отличается, и поэтому предсказанные метки могут быть другими. #25196 by Guillaume Lemaitre.Улучшение The
fit_transformметодdecomposition.DictionaryLearningболее эффективен, но может давать разные результаты по сравнению с предыдущими версиями, когдаtransform_algorithmне то же самое, чтоfit_algorithmи количество итераций мало. #24871 by Omar Salman.Улучшение The
sample_weightпараметр теперь будет использоваться при инициализации центроидов дляcluster.KMeans,cluster.BisectingKMeansиcluster.MiniBatchKMeans. Это изменение нарушит обратную совместимость, поскольку числа, сгенерированные из тех же случайных начальных значений, будут разными. #25752 by Hleb Levitski, Жереми дю Буаберранже, Guillaume Lemaitre.Исправление Более последовательно обрабатывать малые значения в
WиHматриц во времяfitиtransformшагиdecomposition.NMFиdecomposition.MiniBatchNMFчто может давать результаты, отличные от предыдущих версий. #25438 by Йотам Авидар-Константини.Исправление
decomposition.KernelPCAможет давать разные результаты черезinverse_transformifgammaявляетсяNone. Теперь он будет выбран правильно как1/n_featuresданных, на которых он обучен, в то время как ранее он мог быть ошибочно выбран как1/n_featuresданных, переданных вinverse_transform. Новый атрибутgamma_предоставляется для раскрытия фактического значенияgammaиспользуется каждый раз при вызове ядра. #26337 by Yao Xiao.
Измененные отображения#
Улучшение
model_selection.LearningCurveDisplayпо умолчанию отображает как обучающую, так и тестовую кривые. Вы можете установитьscore_type="test"для сохранения прежнего поведения. #25120 by Guillaume Lemaitre.Исправление
model_selection.ValidationCurveDisplayтеперь принимает передачу списка вparam_rangeпараметр. #27311 by Arturo Amor.
Изменения, затрагивающие все модули#
Улучшение The
get_feature_names_outметод следующих классов теперь вызываетNotFittedErrorесли экземпляр не обучен. Это гарантирует, что ошибка согласована во всех оценщиках сget_feature_names_outметод.The
NotFittedErrorотображает информативное сообщение с просьбой обучить экземпляр с соответствующими аргументами.#25294, #25308, #25291, #25367, #25402, от Джон Пангас, Rahil Parikh , и Alex Buzenet.
Улучшение Добавлена многопоточная процедура на Cython для вычисления квадратов евклидовых расстояний (иногда с последующей операцией слияния) для пары наборов данных, состоящих из разреженной CSR-матрицы и плотного массива NumPy.
Это может улучшить производительность следующих функций и оценщиков:
Типичный пример такого улучшения производительности происходит при передаче разреженной матрицы CSR в
predictилиtransformметод оценщиков, которые полагаются на плотное представление NumPy для хранения своих обученных параметров (или наоборот).Например,
sklearn.neighbors.NearestNeighbors.kneighborsтеперь работает до 2 раз быстрее для этого случая на обычных ноутбуках.Улучшение Все оценщики, которые внутренне используют многопоточность OpenMP (через Cython), теперь по умолчанию используют количество потоков, равное количеству физических (вместо логических) ядер. В прошлом мы наблюдали, что использование такого же количества потоков, как логических ядер на хостах с SMT, иногда могло вызывать серьёзные проблемы с производительностью в зависимости от алгоритмов и формы данных. Обратите внимание, что по-прежнему возможно вручную настроить количество потоков, используемых OpenMP, как описано в Параллелизм.
Экспериментальный / В разработке#
Основная функция при использовании парсера pandas. Параметрсвязанные базовые методы включены в этот выпуск. Эта функция доступна только через
enable_metadata_routingфлаг функции, который можно включить с помощьюsklearn.set_configиsklearn.config_context. Пока эта функция в основном полезна сторонним разработчикам для подготовки их кодовой базы к маршрутизации метаданных, и мы настоятельно рекомендуем им также скрывать её за тем же флагом функции, а не включать по умолчанию. #24027 by Адрин Джалали, Бенджамин Боссан, и Omar Salman.
Журнал изменений#
sklearn#
Функция Добавлена новая опция
skip_parameter_validation, к функцииsklearn.set_configи контекстный менеджерsklearn.config_context, что позволяет пропустить проверку параметров, передаваемых оценщикам и публичным функциям. Это может быть полезно для ускорения кода, но следует использовать с осторожностью, так как это может привести к неожиданному поведению или вызвать неясные сообщения об ошибках при установке недопустимых параметров. #25815 by Жереми дю Буаберранже.
sklearn.base#
Функция A
__sklearn_clone__протокол теперь доступен для переопределения поведения по умолчаниюbase.clone. #24568 by Томас Фан.Исправление
base.TransformerMixinсейчас сохраняет класс namedtuple, еслиtransformвозвращает namedtuple. #26121 by Томас Фан.
sklearn.calibration#
Исправление
calibration.CalibratedClassifierCVтеперь не требует выравнивания выборок наfit_params. #25805 by Адрин Джалали.
sklearn.cluster#
Основная функция Добавлен
cluster.HDBSCAN, современный иерархический алгоритм кластеризации на основе плотности. Аналогичноcluster.OPTICS, это можно рассматривать как обобщениеcluster.DBSCANпутём разрешения иерархической вместо плоской кластеризации, однако он отличается подходом отcluster.OPTICSЭтот алгоритм очень устойчив к значениям своих гиперпараметров и может использоваться на самых разных данных без особой, если вообще какой-либо, настройки.Эта реализация является адаптацией оригинальной реализации HDBSCAN в scikit-learn-contrib/hdbscan, от Leland McInnes и др.
Улучшение The
sample_weightпараметр теперь будет использоваться при инициализации центроидов дляcluster.KMeans,cluster.BisectingKMeansиcluster.MiniBatchKMeans. Это изменение нарушит обратную совместимость, поскольку числа, сгенерированные из тех же случайных начальных значений, будут разными. #25752 by Hleb Levitski, Жереми дю Буаберранже, Guillaume Lemaitre.Исправление
cluster.KMeans,cluster.MiniBatchKMeansиcluster.k_meansтеперь корректно обрабатывает комбинациюn_init="auto"иinitявляясь массивоподобным, запускает одну инициализацию в этом случае. #26657 by Бинеш Баннерджи.Изменение API The
sample_weightпараметр вpredictдляcluster.KMeans.predictиcluster.MiniBatchKMeans.predictтеперь устарел и будет удален в v1.5. #25251 by Hleb Levitski.Изменение API The
Xredаргумент вcluster.FeatureAgglomeration.inverse_transformпереименован вXtи будет удалён в версии 1.5. #26503 by Адрин Джалали.
sklearn.compose#
Исправление
compose.ColumnTransformerвызывает информативную ошибку, когда отдельные преобразователиColumnTransformerвыводить pandas датафреймы с индексами, которые не согласованы друг с другом, и вывод настроен на pandas. #26286 by Томас Фан.Исправление
compose.ColumnTransformerкорректно устанавливает вывод остатка, когдаset_outputвызывается. #26323 by Томас Фан.
sklearn.covariance#
Исправление Позволяет
alpha=0вcovariance.GraphicalLassoчтобы быть совместимым сcovariance.graphical_lasso. #26033 by Genesis Valencia.Исправление
covariance.empirical_covarianceтеперь выдает информативное сообщение об ошибке, когда входные данные не подходят. #26108 by Квентин Бартелеми.Изменение API Устаревает
cov_initвcovariance.graphical_lassoв 1.3, поскольку параметр не имеет эффекта. Он будет удален в 1.5. #26033 by Genesis Valencia.Изменение API Добавляет
costs_подогнанный атрибут вcovariance.GraphicalLassoиcovariance.GraphicalLassoCV. #26033 by Genesis Valencia.Изменение API Добавляет
covarianceпараметр вcovariance.GraphicalLasso. #26033 by Genesis Valencia.Изменение API Добавляет
epsпараметр вcovariance.GraphicalLasso,covariance.graphical_lasso, иcovariance.GraphicalLassoCV. #26033 by Genesis Valencia.
sklearn.datasets#
Улучшение Позволяет переопределить параметры, используемые для открытия ARFF файла, с помощью параметра
read_csv_kwargsвdatasets.fetch_openmlпри использовании парсера pandas. #26433 by Guillaume Lemaitre.Исправление
datasets.fetch_openmlвозвращает улучшенные типы данных, когдаas_frame=Trueиparser="liac-arff". #26386 by Томас Фан.Исправление Согласно спецификациям ARFF, только маркер
"?"теперь считается как пропущенное значение при открытии файлов ARFF, полученных с помощьюdatasets.fetch_openmlМаксимальная ошибкаread_csv_kwargsпозволяет переопределить это поведение. #26551 by Guillaume Lemaitre.Исправление
datasets.fetch_openmlбудет последовательно использоватьnp.nanкак маркер пропущенных значений с обоими парсерами"pandas"и"liac-arff". #26579 by Guillaume Lemaitre.Изменение API The
data_transposedаргументdatasets.make_sparse_coded_signalустарел и будет удален в v1.5. #25784 by @Jérémie du Boisberranger.
sklearn.decomposition#
Эффективность
decomposition.MiniBatchDictionaryLearningиdecomposition.MiniBatchSparsePCAтеперь работают быстрее для небольших размеров пакетов, избегая дублирующих проверок. #25490 by Жереми дю Буаберранже.Улучшение
decomposition.DictionaryLearningтеперь принимает параметрcallbackдля согласованности с функциейdecomposition.dict_learning. #24871 by Omar Salman.Исправление Более последовательно обрабатывать малые значения в
WиHматриц во времяfitиtransformшагиdecomposition.NMFиdecomposition.MiniBatchNMFчто может давать результаты, отличные от предыдущих версий. #25438 by Йотам Авидар-Константини.Изменение API The
Wаргумент вdecomposition.NMF.inverse_transformиdecomposition.MiniBatchNMF.inverse_transformпереименован вXtи будет удален в v1.5. #26503 by Адрин Джалали.
sklearn.discriminant_analysis#
Улучшение
discriminant_analysis.LinearDiscriminantAnalysisтеперь поддерживает PyTorch. См. Поддержка Array API (экспериментальная) для получения дополнительной информации. #25956 by Томас Фан.
sklearn.ensemble#
Функция
ensemble.HistGradientBoostingRegressorтеперь поддерживает функцию потерь гамма-девиации черезloss="gamma". Использование девианса Гамма в качестве функции потерь удобно для моделирования асимметрично распределенных, строго положительных целевых значений. #22409 by Christian Lorentzen.Функция Вычислить пользовательскую оценку вне пакета, передав вызываемый объект в
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifierиensemble.ExtraTreesRegressor. #25177 by Tim Head.Функция
ensemble.GradientBoostingClassifierтеперь предоставляет оценки out-of-bag черезoob_scores_илиoob_score_атрибуты. #24882 by Ashwin Mathur.Эффективность
ensemble.IsolationForestвремя предсказания теперь быстрее (обычно в 8 или более раз). Внутренне оценщик теперь предварительно вычисляет длины путей решений для каждого дерева приfitвремя. Поэтому невозможно загрузить оценщик, обученный с scikit-learn 1.2, чтобы делать прогнозы с scikit-learn 1.3: требуется переобучение с scikit-learn 1.3. #25186 by Фелипе Бреве Сиола.Эффективность
ensemble.RandomForestClassifierиensemble.RandomForestRegressorсwarm_start=Trueтеперь пересчитывает оценки вне пакета только тогда, когда их действительно большеn_estimatorsв последующихfitвызовы. #26318 by Joshua Choo Yun Keat.Улучшение
ensemble.BaggingClassifierиensemble.BaggingRegressorпредоставить доступ кallow_nanтег из базового оценщика. #25506 by Томас Фан.Исправление
ensemble.RandomForestClassifier.fitнаборыmax_samples = 1когдаmax_samplesявляется float иround(n_samples * max_samples) < 1. #25601 by Jan Fidor.Исправление
ensemble.IsolationForest.fitбольше не предупреждает об отсутствующих именах признаков при вызове сcontaminationне"auto"на pandas dataframe. #25931 by Yao Xiao.Исправление
ensemble.HistGradientBoostingRegressorиensemble.HistGradientBoostingClassifierобрабатывает отрицательные значения для категориальных признаков последовательно как пропущенные значения, следуя соглашениям LightGBM и pandas. #25629 by Томас Фан.Исправление Исправление устаревания
base_estimatorвensemble.AdaBoostClassifierиensemble.AdaBoostRegressorкоторый был представлен в #23819. #26242 by Марко Топлак.
sklearn.exceptions#
Функция Добавлен
exceptions.InconsistentVersionWarningкоторая возникает когда оценщик scikit-learn распаковывается с версией scikit-learn, которая несовместима с версией scikit-learn, с которой оценщик был упакован. #25297 by Томас Фан.
sklearn.feature_extraction#
Изменение API
feature_extraction.image.PatchExtractorтеперь следует API трансформеров scikit-learn. Этот класс определен как трансформер без состояния, что означает, что не требуется вызыватьfitперед вызовомtransform. Проверка параметров происходит только приfittime. #24230 by Guillaume Lemaitre.
sklearn.feature_selection#
Улучшение Все селекторы в
sklearn.feature_selectionсохранит dtype DataFrame при преобразовании. #25102 by Томас Фан.Исправление
feature_selection.SequentialFeatureSelector’scvпараметр теперь поддерживает генераторы. #25973 byYao Xiao.
sklearn.impute#
Улучшение Добавлен параметр
fill_valuetoimpute.IterativeImputer. #25232 by Тейс ван Везел.Исправление
impute.IterativeImputerтеперь корректно сохраняет Pandas Index, когдаset_config(transform_output="pandas"). #26454 by Томас Фан.
sklearn.inspection#
Улучшение Добавлена поддержка для
sample_weightвinspection.partial_dependenceиinspection.PartialDependenceDisplay.from_estimator. Это позволяет взвешенное усреднение при агрегировании для каждого значения сетки, на которой мы проводим проверку. Опция доступна только когдаmethodустановлено вbrute. #25209 и #26644 by Carlo Lemos.Изменение API
inspection.partial_dependenceвозвращаетutils.Bunchс новым ключом:grid_values.valuesключ устарел в пользуgrid_valuesиvaluesключ будет удален в версии 1.5. #21809 и #25732 by Томас Фан.
sklearn.kernel_approximation#
Исправление
kernel_approximation.AdditiveChi2Samplerтеперь не имеет состояния.sample_interval_атрибут устарел и будет удален в версии 1.5. #25190 by Vincent Maladière.
sklearn.linear_model#
Эффективность Избегайте масштабирования данных, когда
sample_weight=Noneи других ненужных копий данных и неожиданного преобразования разреженных данных в плотные вlinear_model.LinearRegression. #26207 by Оливье Гризель.Улучшение
linear_model.SGDClassifier,linear_model.SGDRegressorиlinear_model.SGDOneClassSVMтеперь сохраняет dtype дляnumpy.float32. #25587 by Omar Salman.Улучшение The
n_iter_атрибут был включен вlinear_model.ARDRegressionчтобы показать фактическое количество итераций, необходимых для достижения критерия остановки. #25697 by Джон Пангас.Исправление Используйте более надежный критерий для обнаружения сходимости
linear_model.LogisticRegressionсpenalty="l1"иsolver="liblinear"на линейно разделимых задачах. #25214 by Tom Dupre la Tour.Исправление Исправлен сбой при вызове
fitнаlinear_model.LogisticRegressionсsolver="newton-cholesky"иmax_iter=0который не смог проверить состояние модели до первого обновления параметра. #26653 by Оливье Гризель.Изменение API Устаревает
n_iterв пользуmax_iterвlinear_model.BayesianRidgeиlinear_model.ARDRegression.n_iterбудет удалено в scikit-learn 1.5. Это изменение делает эти оценщики согласованными с остальными оценщиками. #25697 by Джон Пангас.
sklearn.manifold#
Исправление
manifold.Isomapтеперь корректно сохраняет Pandas Index, когдаset_config(transform_output="pandas"). #26454 by Томас Фан.
sklearn.metrics#
Функция Добавляет
zero_division=np.nanк нескольким метрикам классификации:metrics.precision_score,metrics.recall_score,metrics.f1_score,metrics.fbeta_score,metrics.precision_recall_fscore_support,metrics.classification_report. Когдаzero_division=np.nanи происходит деление на ноль, метрика не определена и исключается из усреднения. Когда не используется для усреднений, возвращаемое значениеnp.nan. #25531 by Marc Torrellas Socastro.Функция
metrics.average_precision_scoreтеперь поддерживает многоклассовый случай. #17388 by Джеффри Болмье и #24769 by Ashwin Mathur.Эффективность Вычисление ожидаемой взаимной информации в
metrics.adjusted_mutual_info_scoreтеперь работает быстрее, когда количество уникальных меток велико, и его использование памяти в целом сокращено. Этот метод позволяет: (i) проверить параметры оценщика и (ii) быть совместимым с API трансформеров scikit-learn. by Кшитидж Матур, Guillaume Lemaitre, Omar Salman и Жереми дю Буаберранже.Улучшение
metrics.silhouette_samplesтеперь принимает разреженную матрицу попарных расстояний между образцами или массив признаков. #18723 by Sahil Gupta и #24677 by Ashwin Mathur.Улучшение Новый параметр
drop_intermediateбыл добавлен вmetrics.precision_recall_curve,metrics.PrecisionRecallDisplay.from_estimator,metrics.PrecisionRecallDisplay.from_predictions, который отбрасывает некоторые субоптимальные пороги для создания более легких кривых точности-полноты. #24668 by @dberenbaum.Улучшение
metrics.RocCurveDisplay.from_estimatorиmetrics.RocCurveDisplay.from_predictionsтеперь принимают два новых ключевых слова,plot_chance_levelиchance_level_kwдля построения базового уровня вероятности. Эта линия отображается вchance_level_атрибут. #25987 by Yao Xiao.Улучшение
metrics.PrecisionRecallDisplay.from_estimatorиmetrics.PrecisionRecallDisplay.from_predictionsтеперь принимают два новых ключевых слова,plot_chance_levelиchance_level_kwдля отображения базового уровня случайности. Эта линия доступна вchance_level_атрибут. #26019 by Yao Xiao.Исправление
metrics.pairwise.manhattan_distancesтеперь поддерживает неизменяемые разреженные наборы данных. #25432 by Julien Jerphanion.Исправление Исправлено
metrics.classification_reportтак что пустой ввод вернётnp.nan. Ранее "macro avg" иweighted avgndarray формы (n_samples, k)f1-score=np.nanиf1-score=0.0, будучи несогласованными. Теперь они оба возвращаютnp.nan. #25531 by Marc Torrellas Socastro.Исправление
metrics.ndcg_scoreтеперь выдает осмысленное сообщение об ошибке для входных данных длины 1. #25672 by Lene Preuss и Wei-Chun Chu.Исправление
metrics.log_lossвыдает предупреждение, если значения параметраy_predне нормализованы, вместо фактической нормализации в метрике. Начиная с версии 1.5 это будет вызывать ошибку. #25299 by @Omar Salman. Исправление В
metrics.roc_curve, используйте пороговое значениеnp.infвместо произвольныхmax(y_score) + 1. Этот порог связан с точкой кривой ROCtpr=0иfpr=0. #26194 by Guillaume Lemaitre.Исправление The
'matching'метрика была удалена при использовании SciPy>=1.9 для согласованности сscipy.spatial.distanceкоторый не поддерживает'matching'больше. #26264 by Barata T. OnggoИзменение API The
epsпараметрmetrics.log_lossустарел и будет удалён в 1.5. #25299 by Omar Salman.
sklearn.gaussian_process#
Исправление
gaussian_process.GaussianProcessRegressorимеет новый аргументn_targets, который используется для определения количества выходов при выборке из априорных распределений. #23099 by Zhehao Liu.
sklearn.mixture#
Эффективность
mixture.GaussianMixtureтеперь более эффективен и будет обходить ненужную инициализацию, если веса, средние и точности предоставлены пользователями. #26021 by Jiawei Zhang.
sklearn.model_selection#
Основная функция Добавлен класс
model_selection.ValidationCurveDisplayкоторая позволяет легко строить графики кривых валидации, полученных функциейmodel_selection.validation_curve. #25120 by Guillaume Lemaitre.Изменение API Параметр
log_scaleв методеplotклассаmodel_selection.LearningCurveDisplayбыл устаревшим в 1.3 и будет удален в 1.5. Масштаб по умолчанию можно переопределить, установив его непосредственно наaxобъект и будет установлен автоматически из интервала точек данных в противном случае. #25120 by Guillaume Lemaitre.Улучшение
model_selection.cross_validateпринимает новый параметрreturn_indicesвозвращать индексы обучающей и тестовой выборок для каждого разделения кросс-валидации. #25659 by Guillaume Lemaitre.
sklearn.multioutput#
Исправление
getattrнаmultioutput.MultiOutputRegressor.partial_fitиmultioutput.MultiOutputClassifier.partial_fitтеперь правильно вызываютAttributeErrorесли выполнено до вызоваfit. #26333 by Адрин Джалали.
sklearn.naive_bayes#
Исправление
naive_bayes.GaussianNBбольше не вызываетZeroDivisionErrorкогда предоставленныйsample_weightсводит задачу к одному классу вfit. #24140 by Jonathan Ohayon и Кьяра Мармо.
sklearn.neighbors#
Улучшение Производительность
neighbors.KNeighborsClassifier.predictи изneighbors.KNeighborsClassifier.predict_probaбыл улучшен когдаn_neighborsвелик иalgorithm="brute"с неевклидовыми метриками. #24076 by Meekail Zain, Julien Jerphanion.Исправление Удалить поддержку для
KulsinskiDistanceвneighbors.BallTree. Это несходство не является метрикой и не может поддерживаться BallTree. #25417 by Guillaume Lemaitre.Изменение API Поддержка метрик, отличных от
euclideanиmanhattanи для вызываемых объектов вneighbors.NearestNeighborsустарел и будет удален в версии 1.5. #24083 by Валентин Лоран.
sklearn.neural_network#
Исправление
neural_network.MLPRegressorиneural_network.MLPClassifierсообщает правильныйn_iter_когдаwarm_start=True. Это соответствует количеству итераций, выполненных при текущем вызовеfitвместо общего количества итераций, выполненных с момента инициализации оценщика. #25443 by Марвин Кравучке.
sklearn.pipeline#
Функция
pipeline.FeatureUnionтеперь может использовать нотацию индексации (например,feature_union["scalar"]) для доступа к трансформаторам по имени. #25093 by Томас Фан.Функция
pipeline.FeatureUnionтеперь может получить доступ кfeature_names_in_атрибут, еслиXзначение, наблюдаемое во время.fitимеетcolumnsатрибут и все столбцы являются строками. Например, когдаXявляетсяpandas.DataFrame#25220 by Иэн Томпсон.Исправление
pipeline.Pipeline.fit_transformтеперь вызываетAttributeErrorесли последний шаг конвейера не поддерживаетfit_transform. #26325 by Адрин Джалали.
sklearn.preprocessing#
Основная функция Вводит
preprocessing.TargetEncoderчто является категориальным кодированием на основе среднего целевой переменной, условного по значению категории. #25334 by Томас Фан.Функция
preprocessing.OrdinalEncoderтеперь поддерживает группировку редких категорий в один признак. Группировка редких категорий включается указанием способа выбора редких категорий с помощьюmin_frequencyилиmax_categories. #25677 by Томас Фан.Улучшение
preprocessing.PolynomialFeaturesтеперь вычисляет количество развернутых членов априори при работе с разреженнымиcsrматрицы для оптимизации выбораdtypeдляindicesиindptr. Теперь он может выводитьcsrматрицы сnp.int32indices/indptrкомпонентов, когда элементов достаточно мало, и автоматически используетnp.int64для достаточно больших матриц. #20524 by niuk-a и #23731 by Meekail ZainУлучшение Новый параметр
sparse_outputбыл добавлен вpreprocessing.SplineTransformer, доступно начиная с SciPy 1.8. Еслиsparse_output=True,preprocessing.SplineTransformerвозвращает разреженную матрицу CSR. #24145 by Christian Lorentzen.Улучшение Добавляет
feature_name_combinerпараметр дляpreprocessing.OneHotEncoder. Это задает пользовательскую вызываемую функцию для создания имен признаков, возвращаемыхpreprocessing.OneHotEncoder.get_feature_names_out. Вызываемый объект объединяет входные аргументы(input_feature, category)в строку. #22506 by Марио Костелац.Улучшение Добавлена поддержка для
sample_weightвpreprocessing.KBinsDiscretizer. Это позволяет указать параметрsample_weightдля каждого образца, который будет использоваться при обучении. Опция доступна только когдаstrategyустановлено вquantileиkmeans. #24935 by Seladus, Guillaume Lemaitre, и Dea María Léon, #25257 by Hleb Levitski.Улучшение Подвыборка через
subsampleпараметр теперь можно использовать вpreprocessing.KBinsDiscretizerнезависимо от используемой стратегии. #26424 by Жереми дю Буаберранже.Исправление
preprocessing.PowerTransformerтеперь корректно сохраняет Pandas Index, когдаset_config(transform_output="pandas"). #26454 by Томас Фан.Исправление
preprocessing.PowerTransformerтеперь корректно вызывает ошибку при использованииmethod="box-cox"на данных с константойnp.nanстолбец. #26400 by Yao Xiao.Исправление
preprocessing.PowerTransformerсmethod="yeo-johnson"теперь оставляет постоянные признаки неизменными вместо преобразования с произвольным значением дляlambdas_подобранный параметр. #26566 by Жереми дю Буаберранже.Изменение API Значение по умолчанию для
subsampleпараметрpreprocessing.KBinsDiscretizerизменится сNoneto200_000в версии 1.5, когдаstrategy="kmeans"илиstrategy="uniform". #26424 by Жереми дю Буаберранже.
sklearn.svm#
Изменение API
dualпараметр теперь принимаетautoопция дляsvm.LinearSVCиsvm.LinearSVR. #26093 by Hleb Levitski.
sklearn.tree#
Основная функция
tree.DecisionTreeRegressorиtree.DecisionTreeClassifierподдерживает пропущенные значения, когдаsplitter='best'и критерий равенgini,entropy, илиlog_loss, для классификации илиsquared_error,friedman_mse, илиpoissonдля регрессии. #23595, #26376 by Томас Фан.Улучшение Добавляет
class_namesпараметр дляtree.export_text. Это позволяет указать параметрclass_namesдля каждого целевого класса в порядке возрастания числовых значений. #25387 by William M и crispinlogan.Исправление
tree.export_graphvizиtree.export_textтеперь принимаетfeature_namesиclass_namesкак array-like, а не списки. #26289 by Yao Xiao
sklearn.utils#
Исправление Исправления
utils.check_arrayдля правильного преобразования pandas extension arrays. #25813 и #26106 by Томас Фан.Исправление
utils.check_arrayтеперь поддерживает pandas DataFrames с расширенными массивами и типами object, возвращая ndarray с типом object. #25814 by Томас Фан.Изменение API
utils.estimator_checks.check_transformers_unfitted_statelessбыл введен, чтобы гарантировать, что stateless трансформеры не вызываютNotFittedErrorво времяtransformбез предварительного вызоваfitилиfit_transform. #25190 by Vincent Maladière.Изменение API A
FutureWarningтеперь вызывается при создании экземпляра класса, который наследуется от устаревшего базового класса (т.е. декорированногоutils.deprecated) и который переопределяет__init__метод. #25733 by Бригитта Сипёч и Жереми дю Буаберранже.
sklearn.semi_supervised#
Улучшение
semi_supervised.LabelSpreading.fitиsemi_supervised.LabelPropagation.fitтеперь принимает разреженные метрики. #19664 by Kaushik Amar Das.
Разное#
Улучшение Заменить устаревшие исключения
EnvironmentError,IOErrorиWindowsError. #26466 by Dimitri Papadopoulos ORfanos.
Участники кода и документации
Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 1.2, включая:
2357juan, Abhishek Singh Kushwah, Adam Handke, Adam Kania, Adam Li, adienes, Admir Demiraj, adoublet, Adrin Jalali, A.H.Mansouri, Ahmedbgh, Ala-Na, Alex Buzenet, AlexL, Ali H. El-Kassas, amay, András Simon, André Pedersen, Andrew Wang, Ankur Singh, annegnx, Ansam Zedan, Anthony22-dev, Artur Hermano, Arturo Amor, as-90, ashah002, Ashish Dutt, Ashwin Mathur, AymericBasset, Azaria Gebremichael, Barata Tripramudya Onggo, Benedek Harsanyi, Benjamin Bossan, Bharat Raghunathan, Binesh Bannerjee, Boris Feld, Brendan Lu, Brevin Kunde, cache-missing, Camille Troillard, Carla J, carlo, Carlo Lemos, c-git, Changyao Chen, Chiara Marmo, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, crispinlogan, Da-Lan, DanGonite57, Dave Berenbaum, davidblnc, david-cortes, Dayne, Dea María Léon, Denis, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, Dmitry Nesterov, Dominic Fox, Dominik Prodinger, Edern, Ekaterina Butyugina, Elabonga Atuo, Emir, farhan khan, Felipe Siola, futurewarning, Gael Varoquaux, genvalen, Hleb Levitski, Guillaume Lemaitre, gunesbayir, Haesun Park, hujiahong726, i-aki-y, Ian Thompson, Ido M, Ily, Irene, Jack McIvor, jakirkham, James Dean, JanFidor, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jessicakk0711, Jiawei Zhang, Joey Ortiz, JohnathanPi, John Pangas, Joshua Choo Yun Keat, Joshua Hedlund, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kaushik Amar Das, Kento Nozawa, Kian Eliasi, Kilian Kluge, Lene Preuss, Linus, Logan Thomas, Loic Esteve, Louis Fouquet, Lucy Liu, Madhura Jayaratne, Marc Torrellas Socastro, Maren Westermann, Mario Kostelac, Mark Harfouche, Marko Toplak, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, Max Halford, maximeSaur, Maxwell Liu, m. bou, mdarii, Meekail Zain, Mikhail Iljin, murezzda, Nawazish Alam, Nicola Fanelli, Nightwalkx, Nikolay Petrov, Nishu Choudhary, NNLNR, npache, Olivier Grisel, Omar Salman, ouss1508, PAB, Pandata, partev, Peter Piontek, Phil, pnucci, Pooja M, Pooja Subramaniam, precondition, Quentin Barthélemy, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Rushil Desai, Sadra Barikbin, SANJAI_3, Sashka Warner, Scott Gigante, Scott Gustafson, searchforpassion, Seoeun Hong, Shady el Gewily, Shiva chauhan, Shogo Hida, Shreesha Kumar Bhat, sonnivs, Sortofamudkip, Stanislav (Stanley) Modrak, Stefanie Senger, Steven Van Vaerenbergh, Tabea Kossen, Théophile Baranger, Thijs van Weezel, Thomas A Caswell, Thomas Germer, Thomas J. Fan, Tim Head, Tim P, Tom Dupré la Tour, tomiock, tspeng, Valentin Laurent, Veghit, VIGNESH D, Vijeth Moudgalya, Vinayak Mehta, Vincent M, Vincent-violet, Vyom Pathak, William M, windiana42, Xiao Yuan, Yao Xiao, Yaroslav Halchenko, Yotam Avidar-Constantini, Yuchen Zhou, Yusuf Raji, zeeshan lone