Версия 0.19#
Версия 0.19.2#
Июль 2018
Этот выпуск предназначен исключительно для поддержки Python 3.7.
Версия 0.19.1#
23 октября 2017
Это релиз с исправлением ошибок с некоторыми незначительными улучшениями документации и улучшениями функций, выпущенных в 0.19.0.
Обратите внимание, что в этом выпуске могут быть незначительные различия в выводе TSNE (из-за #9623), в случае, когда несколько образцов имеют одинаковое расстояние до некоторого образца.
Журнал изменений#
Изменения API#
Отменено добавление
metrics.ndcg_scoreиmetrics.dcg_scoreкоторые были ошибочно объединены в версию 0.19.0. Реализации были сломаны и не документированы.return_train_scoreкоторый был добавлен вmodel_selection.GridSearchCV,model_selection.RandomizedSearchCVиmodel_selection.cross_validateв версии 0.19.0 изменит значение по умолчанию с True на False в версии 0.21. Мы обнаружили, что вычисление оценки обучения может значительно повлиять на время выполнения перекрестной проверки в некоторых случаях. Пользователи должны явно устанавливатьreturn_train_scoreв False, если функции предсказания или оценки медленные, что приводит к негативному влиянию на время выполнения CV, или в True, если они хотят использовать рассчитанные оценки. #9677 by Kumar Ashutosh и Joel Nothman.correlation_modelsиregression_modelsиз устаревшей реализации гауссовских процессов были с опозданием объявлены устаревшими. #9717 by Kumar Ashutosh.
Исправления ошибок#
Избегайте целочисленных переполнений в
metrics.matthews_corrcoef. #9693 by Сэм Стейнхолд.Исправлена ошибка в целевой функции для
manifold.TSNE(как точное, так и с аппроксимацией Барнса-Хата) приn_components >= 3. #9711 by @goncalo-rodrigues.Исправление регрессии в
model_selection.cross_val_predictгде возникала ошибка сmethod='predict_proba'для некоторых вероятностных классификаторов. #9641 by James Bourbeau.Исправлена ошибка, где
datasets.make_classificationнепосредственно извлекает кластеры из собственных векторов в спектральной кластеризации. В отличие от k-средних и дискретизации, cluster_qr не имеет настраиваемых параметров и не является итеративным методом, но может превзойти k-средние и дискретизацию как по качеству, так и по скорости. Для подробного сравнения стратегий кластеризации см. следующий пример:weights. #9865 by Сачин Келкар.model_selection.StratifiedShuffleSplitтеперь работает с многомерными многоклассовыми или многометочными данными с более чем 1000 столбцов. #9922 by Charlie Brummitt.Исправлена ошибка с вложенной и условной настройкой параметров, например, одновременная настройка шага конвейера и его параметра. #9945 by Andreas Müller и Joel Nothman.
Регрессии в 0.19.0 исправлены в 0.19.1:
Исправлена ошибка, при которой параллельное предсказание в случайных лесах не было потокобезопасным и могло (редко) приводить к произвольным ошибкам. #9830 by Joel Nothman.
Исправление регрессии в
model_selection.cross_val_predictгде он больше не принималXв виде списка. #9600 by Rasul Kerimov.Исправлена обработка
model_selection.cross_val_predictдля бинарной классификации сmethod='decision_function'. #9593 by Reiichiro Nakano и основные разработчики.Исправление регрессии в
pipeline.Pipelineгде он больше не принималstepsв виде кортежа. #9604 by Joris Van den Bossche.Исправлена ошибка, где
n_iterне был должным образом устаревшим, оставляяn_iterнедоступно для промежуточного использования вlinear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorиlinear_model.Perceptron. #9558 by Андреас Мюллер.Загрузчики наборов данных гарантируют, что временные файлы закрываются перед удалением, что вызывало ошибки в Windows. #9847 by Жоан Массич.
Исправлена регрессия в
manifold.TSNEгде он больше не поддерживает метрики, отличные от 'euclidean' и 'precomputed'. #9623 by Оли Блум.
Улучшения#
Наш набор тестов и
utils.estimator_checks.check_estimatorтеперь может быть запущен без установленного Nose. #9697 by Жоан Массич.Для улучшения удобства использования версии 0.19
pipeline.Pipelineкэширование,memoryтеперь позволяетjoblib.Memoryэкземпляров. Это использует новуюutils.validation.check_memoryhelper. #9584 by Kumar AshutoshСделал FutureWarning в оценщиках на основе SGD менее подробным. #9802 by Vrishank Bhardwaj.
Участники кода и документации#
С благодарностью:
Joel Nothman, Loic Esteve, Andreas Mueller, Kumar Ashutosh, Vrishank Bhardwaj, Hanmin Qin, Rasul Kerimov, James Bourbeau, Nagarjuna Kumar, Nathaniel Saul, Olivier Grisel, Roman Yurchak, Reiichiro Nakano, Sachin Kelkar, Sam Steingold, Yaroslav Halchenko, diegodlh, felix, goncalo-rodrigues, jkleint, oliblum90, pasbi, Anthony Gitter, Ben Lawson, Charlie Brummitt, Didi Bar-Zev, Gael Varoquaux, Joan Massich, Joris Van den Bossche, nielsenmarkus11
Версия 0.19#
12 августа 2017 г.
Основные моменты#
Мы рады представить ряд отличных новых функций, включая
neighbors.LocalOutlierFactor для обнаружения аномалий,
preprocessing.QuantileTransformer для устойчивого преобразования признаков,
и multioutput.ClassifierChain мета-оценщик просто учитывает зависимости между классами в многометочных задачах. У нас есть новые алгоритмы в существующих оценщиках, такие как мультипликативное обновление в
decomposition.NMF и мультиномиальное
linear_model.LogisticRegression с L1-потерями (используйте solver='saga').
Перекрестная проверка теперь может возвращать результаты нескольких метрик
оценки. Новый model_selection.cross_validate может возвращать множество
оценок на тестовых данных, а также производительность на обучающем наборе и время выполнения, и мы
расширили scoring и refit параметры для сеточного/случайного поиска для обработки нескольких метрик.
Вы также можете учиться быстрее. Например, новая опция для кэширования преобразований в pipeline.Pipeline делает поиск по сетке
в конвейерах, включающих медленные преобразования, гораздо более эффективным. И
вы можете предсказывать быстрее: если вы уверены в своих действиях, вы можете отключить
проверку того, что входные данные конечны, используя config_context.
Мы также внесли некоторые важные исправления. Мы исправили давнюю ошибку реализации в metrics.average_precision_score, поэтому будьте осторожны с предыдущими результатами, сообщенными этой функцией. Ряд ошибок в
manifold.TSNE реализация была исправлена, особенно в
стандартном приближении Барнса-Хата. semi_supervised.LabelSpreading и
semi_supervised.LabelPropagation получили существенные исправления.
LabelPropagation ранее был сломан. LabelSpreading теперь должен корректно
учитывать свой параметр alpha.
Измененные модели#
Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.
cluster.KMeansс разреженной X и заданными начальными центроидами (исправление ошибки)cross_decomposition.PLSRegressionсscale=True(исправление ошибки)ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorгдеmin_impurity_splitиспользуется (исправление ошибки)градиентный бустинг
loss='quantile'(исправление ошибки)ensemble.IsolationForest(исправление ошибки)feature_selection.SelectFdr(исправление ошибки)linear_model.RANSACRegressor(исправление ошибки)linear_model.LassoLars(исправление ошибки)linear_model.LassoLarsIC(исправление ошибки)manifold.TSNE(исправление ошибки)neighbors.NearestCentroid(исправление ошибки)semi_supervised.LabelSpreading(исправление ошибки)semi_supervised.LabelPropagation(исправление ошибки)древовидных моделях, где
min_weight_fraction_leafиспользуется (улучшение)model_selection.StratifiedKFoldсshuffle=True(это изменение, из-за #7823 не упоминалось в примечаниях к выпуску в то время)
Подробности перечислены в журнале изменений ниже.
(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)
Журнал изменений#
Новые возможности#
Классификаторы и регрессоры
Добавлен
multioutput.ClassifierChainдля многометочной классификации. Путем Адам Клечевски.Добавлен решатель
'saga'который реализует улучшенную версию Stochastic Average Gradient,linear_model.LogisticRegressionиlinear_model.Ridge. Он позволяет использовать штраф L1 с мультиномиальной логистической потерей и работает немного лучше, чем 'sag' в первые эпохи гребневой и логистической регрессии. #8446 by Артур Менш.
Другие оценщики
Добавлен
neighbors.LocalOutlierFactorкласс для обнаружения аномалий на основе ближайших соседей. #5279 by Nicolas Goix и Александр Грамфор.Добавлен
preprocessing.QuantileTransformerкласс иpreprocessing.quantile_transformфункция для нормализации признаков на основе квантилей. #8363 by Denis Engemann, Guillaume Lemaitre, Оливье Гризель, Рагхав РВ, Thierry Guillemot, и Гаэль Варокво.Новый решатель
'mu'реализует мультипликативное обновление вdecomposition.NMF, позволяя оптимизацию всех бета-дивергенций, включая норму Фробениуса, обобщённую дивергенцию Кульбака-Лейблера и дивергенцию Итакуры-Сайто. #5295 by Tom Dupre la Tour.
Выбор и оценка модели
model_selection.GridSearchCVиmodel_selection.RandomizedSearchCVтеперь поддерживают одновременную оценку нескольких метрик. Обратитесь к Указание нескольких метрик для оценки раздел руководства пользователя для получения дополнительной информации. #7388 by Рагхав РВДобавлен
model_selection.cross_validateчто позволяет оценивать несколько метрик. Эта функция возвращает словарь с более полезной информацией из перекрёстной проверки, такой как оценки обучения, время обучения и время оценки. См. Функция cross_validate и оценка нескольких метрик раздел руководства пользователя для получения дополнительной информации. #7388 by Рагхав РВДобавлен
metrics.mean_squared_log_error, который вычисляет среднеквадратичную ошибку логарифмического преобразования целей, особенно полезную для целей с экспоненциальным трендом. #7655 by Каран Десаи.Добавлен
metrics.dcg_scoreиmetrics.ndcg_score, которые вычисляют дисконтированный кумулятивный выигрыш (DCG) и нормализованный дисконтированный кумулятивный выигрыш (NDCG). #7739 by David Gasquez.Добавлен
model_selection.RepeatedKFoldиmodel_selection.RepeatedStratifiedKFold. #8120 by Neeraj Gangwar.
Разное
Проверка того, что входные данные не содержат NaN или inf, теперь может быть отключена с помощью
config_context, на свой страх и риск. Это сэкономит время выполнения, и может быть особенно полезно для времени предсказания. #7548 by Joel Nothman.Добавлен тест для проверки соответствия перечисления параметров в строках документации сигнатуре функции/класса. #9206 by Александр Грамфор и Рагхав РВ.
Улучшения#
Деревья и ансамбли
The
min_weight_fraction_leafограничение при построении дерева теперь более эффективно, используя быстрый путь для объявления узла листом, если его вес меньше 2 * минимума. Обратите внимание, что построенное дерево будет отличаться от предыдущих версий, гдеmin_weight_fraction_leafиспользуется. #7441 by Nelson Liu.ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorтеперь поддерживают разреженный ввод для предсказания. #6101 by Ибраим Ганиев.ensemble.VotingClassifierтеперь позволяет изменять модели с помощьюensemble.VotingClassifier.set_paramsОценщик также может быть удалён путём установки его вNone. #7674 by Yichuan Liu.tree.export_graphvizтеперь показывает настраиваемое количество десятичных знаков. #8698 by Guillaume Lemaitre.Добавлен
flatten_transformпараметр дляensemble.VotingClassifierизменить форму выводаtransformметод до 2 измерений. #7794 by Ибраим Ганиев и Herilalaina Rakotoarison.
Линейные, ядерные и связанные модели
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorиlinear_model.Perceptronтеперь предоставляютmax_iterиtolпараметры, чтобы более точно управлять сходимостью.n_iterпараметр устарел, и обученный оценщик предоставляетn_iter_атрибут, с фактическим количеством итераций до сходимости. #5036 by Tom Dupre la Tour.Добавлен
averageпараметр для выполнения усреднения весов вlinear_model.PassiveAggressiveClassifier. #4939 by Andrea Esuli.linear_model.RANSACRegressorбольше не вызывает ошибку при вызовеfitесли в его первой итерации не найдено выбросов. Кроме того, причины пропущенных итераций отслеживаются в новых добавленных атрибутах,n_skips_*. #7914 by Michael Horrell.В
gaussian_process.GaussianProcessRegressor, методpredictзначительно быстрее сreturn_std=True. #8591 by Hadrien Bertrand.Добавлен
return_stdtopredictметодlinear_model.ARDRegressionиlinear_model.BayesianRidge. #7838 by Сергей Фельдман.Улучшения использования памяти: предотвращение преобразования из float32 в float64 в:
linear_model.MultiTaskElasticNet;linear_model.LogisticRegressionпри использовании решателя newton-cg; иlinear_model.Ridgeпри использовании решателей svd, sparse_cg, cholesky или lsqr. #8835, #8061 by Жоан Массич и Nicolas Cordier и Thierry Guillemot.
Другие предикторы
Пользовательские метрики для
sklearn.neighborsбинарные деревья теперь имеют меньше ограничений: они должны принимать два одномерных массива и возвращать число с плавающей точкой. #6288 by Jake Vanderplas.algorithm='autoвsklearn.neighborsestimators теперь выбирает наиболее подходящий алгоритм для всех типов входных данных и метрик. #9145 by Herilalaina Rakotoarison и Редди Чинтала.
Разложение, обучение многообразию и кластеризация
cluster.MiniBatchKMeansиcluster.KMeansтеперь используют значительно меньше памяти при назначении точек данных их ближайшему центру кластера. #7721 by Джон Кралл.decomposition.PCA,decomposition.IncrementalPCAиdecomposition.TruncatedSVDтеперь раскрывают сингулярные значения из базового SVD. Они хранятся в атрибутеsingular_values_как вdecomposition.IncrementalPCA. #7685 by Tommy Löfstedtdecomposition.NMFтеперь быстрее, когдаbeta_loss=0. #9277 by @hongkahjun.Улучшения памяти для метода
barnes_hutвmanifold.TSNE#7089 by Томас Море и Оливье Гризель.Улучшения расписания оптимизации для Barnes-Hut
manifold.TSNEпоэтому результаты ближе к результатам эталонной реализации lvdmaaten/bhtsne by Томас Моро и Оливье Гризель.Улучшения использования памяти: предотвращение преобразования из float32 в float64 в
decomposition.PCAиdecomposition.randomized_svd_low_rank. #9067 by Рагхав РВ.
Предобработка и отбор признаков
Добавлен
norm_orderпараметр дляfeature_selection.SelectFromModelдля включения выбора порядка нормы приcoef_имеет более 1 измерения. #6181 by Антуан Вендлингер.Добавлена возможность использовать разреженные матрицы в
feature_selection.f_regressionсcenter=True. #8065 by Daniel LeJeune.Небольшое улучшение производительности при создании n-грамм в
sklearn.feature_extraction.textпутем привязки методов для циклов и специальной обработки униграмм. #7567 by Jaye DoepkeОслабить предположение о данных для
kernel_approximation.SkewedChi2Sampler. Поскольку ядро Skewed-Chi2 определено на открытом интервале \((-skewedness; +\infty)^d\), функция преобразования не должна проверять, является лиX < 0но независимо от того,X < -self.skewedness. #7573 by Romain Brault.Сделал параметры ядра по умолчанию зависимыми от ядра в
kernel_approximation.Nystroem. #5229 by Saurabh Bansod и Андреас Мюллер.
Оценка модели и мета-оценщики
pipeline.Pipelineтеперь может кэшировать преобразователи внутри конвейера с помощьюmemoryпараметр конструктора. #7990 by Guillaume Lemaitre.pipeline.Pipelineшаги теперь доступны как атрибуты егоnamed_stepsатрибут. #8586 by Herilalaina Rakotoarison.Добавлен
sample_weightпараметр дляpipeline.Pipeline.score. #7723 by Михаил Коробов.Добавлена возможность установки
n_jobsпараметр дляpipeline.make_union. ATypeErrorбудет вызвано для любых других kwargs. #8028 by Александр Бут.model_selection.GridSearchCV,model_selection.RandomizedSearchCVиmodel_selection.cross_val_scoreтеперь разрешают оценщики с вызываемыми ядрами, которые ранее были запрещены. #8005 by Андреас Мюллер .model_selection.cross_val_predictтеперь возвращает вывод правильной формы для всех значений аргументаmethod. #7863 by Aman Dalmia.Добавлен
shuffleиrandom_stateпараметры для перемешивания обучающих данных перед взятием префиксов на основе размеров обучения вmodel_selection.learning_curve. #7506 by Narine Kokhlikyan.model_selection.StratifiedShuffleSplitтеперь работает с многомерными многоклассовыми (или многометочными) данными. #9044 by Vlad Niculae.Улучшения скорости для
model_selection.StratifiedShuffleSplit. #5991 by Артур Менш и Joel Nothman.Добавить
shuffleпараметр дляmodel_selection.train_test_split. #8845 by themrmaxmultioutput.MultiOutputRegressorиmultioutput.MultiOutputClassifierтеперь поддерживают онлайн-обучение с использованиемpartial_fit. :issue:8053by Peng Yu.Добавить
max_train_sizeпараметр дляmodel_selection.TimeSeriesSplit#8282 by Aman Dalmia.Дополнительные метрики кластеризации теперь доступны через
metrics.get_scorerиscoringпараметры. #8117 by Рагхав РВ.Оценщик на основе
metrics.explained_variance_scoreтакже доступен. #9259 by Hanmin Qin.
Метрики
metrics.matthews_corrcoefтеперь поддерживает многоклассовую классификацию. #8094 by Джон Кралл.Добавить
sample_weightпараметр дляmetrics.cohen_kappa_score. #8335 by Виктор Пугон.
Разное
utils.estimator_checks.check_estimatorтеперь пытается гарантировать, что методы transform, predict и т.д. не устанавливают атрибуты на оценщике. #7533 by Екатерина Кривич.Добавлена проверка типов к
accept_sparseпараметр вsklearn.utils.validationметодов. Этот параметр теперь принимает только булевы значения, строки или списки/кортежи строк.accept_sparse=Noneустарел и должен быть заменен наaccept_sparse=False. #7880 by Josh Karnofsky.Позволяет загрузить фрагмент файла в формате svmlight, передав диапазон байтов в
datasets.load_svmlight_file. #935 by Оливье Гризель.dummy.DummyClassifierиdummy.DummyRegressorтеперь принимают неконечные признаки. #8931 by @Attractadore.
Исправления ошибок#
Деревья и ансамбли
Исправлена утечка памяти в деревьях при использовании деревьев с
criterion='mae'. #8002 by Рагхав РВ.Исправлена ошибка, где
ensemble.IsolationForestиспользует неправильную формулу для средней длины пути #8549 by Питер Ванг.Исправлена ошибка, где
ensemble.AdaBoostClassifierвыбрасываетZeroDivisionErrorпри обучении данных с метками одного класса. #7501 by Dominik Krzeminski.Исправлена ошибка в
ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorгде число с плавающей точкой сравнивается с0.0используя==вызвал ошибку деления на ноль. #7970 by He Chen.Исправлена ошибка, где
ensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressorигнорировалmin_impurity_splitпараметр. #8006 by Sebastian Pölsterl.Исправлено
oob_scoreвensemble.BaggingClassifier. #8936 by Michael LewisИсправлено чрезмерное использование памяти при предсказании для оценщиков случайных лесов. #8672 by Mike Benfield.
Исправлена ошибка, где
sample_weightв виде списка нарушил работу случайных лесов в Python 2 #8068 by @xor.Исправлена ошибка, где
ensemble.IsolationForestзавершается ошибкой, когдаmax_featuresменьше 1. #5732 by Ishank Gulati.Исправлена ошибка, при которой градиентный бустинг с
loss='quantile'вычислены отрицательные ошибки для отрицательных значенийytrue - ypredприводя к неверным значениям при вызове__call__. #8087 by Alexis MignonИсправлена ошибка, где
ensemble.VotingClassifierвызывает ошибку при передаче массива numpy для весов. #7983 by Vincent Pham.Исправлена ошибка, где
tree.export_graphvizвызывал ошибку, когда длина features_names не совпадает с n_features в дереве решений. #8512 by Li Li.
Линейные, ядерные и связанные модели
Исправлена ошибка, где
linear_model.RANSACRegressor.fitможет выполняться доmax_iterесли он находит большую группу выбросов рано. #8251 by @aivision2020.Исправлена ошибка, где
naive_bayes.MultinomialNBиnaive_bayes.BernoulliNBзавершился неудачей, когдаalpha=0. #5814 by Yichuan Liu и Herilalaina Rakotoarison.Исправлена ошибка, где
linear_model.LassoLarsне дает того же результата, что и реализация LassoLars, доступная в R (библиотека lars). #7849 by Jair Montoya Martinez.Исправлена ошибка в
linear_model.RandomizedLasso,linear_model.Lars,linear_model.LassoLars,linear_model.LarsCVиlinear_model.LassoLarsCV, где параметрprecomputeне использовался последовательно по классам, и некоторые значения, предложенные в документации, могли вызывать ошибки. #5359 by Tom Dupre la Tour.Исправлены несовместимые результаты между
linear_model.RidgeCVиlinear_model.Ridgeпри использованииnormalize=True. #9302 by Александр Грамфор.Исправлена ошибка, где
linear_model.LassoLars.fitиногда оставленcoef_в виде списка, а не ndarray. #8160 by CJ Кэри.Исправление
linear_model.BayesianRidge.fitдля возврата параметра гребневой регрессииalpha_иlambda_согласовано с вычисленными коэффициентамиcoef_иintercept_. #8224 by Peter Gedeck.Исправлена ошибка в
svm.OneClassSVMгде он возвращал числа с плавающей точкой вместо целочисленных классов. #8676 by Vathsala Achar.Исправление вычисления критерия AIC/BIC в
linear_model.LassoLarsIC. #9022 by Александр Грамфор и Mehmet Basbug.Исправлена утечка памяти в нашей реализации LibLinear. #9024 by Сергей Лебедев
Исправлена ошибка, при которой стратифицированные CV-сплиттеры не работали с
linear_model.LassoCV. #8973 by Пауло Хаддад.Исправлена ошибка в
gaussian_process.GaussianProcessRegressorкогда стандартное отклонение и ковариация, предсказанные без fit, по умолчанию завершались бы бессмысленной ошибкой. #6573 by Квази Маруфур Рахман и Manoj Kumar.
Другие предикторы
Исправление
semi_supervised.BaseLabelPropagationдля корректной реализацииLabelPropagationиLabelSpreadingкак сделано в упомянутых статьях. #9239 by Андре Амброзио Боэшат, Utkarsh Upadhyay, и Joel Nothman.
Разложение, обучение многообразию и кластеризация
Исправлена реализация
manifold.TSNE:early_exaggerationпараметр не имел эффекта и теперь используется для первых 250 итераций оптимизации.Исправлен
AssertionError: Tree consistency failedисключение, о котором сообщалось в #8992.Улучшить график обучения, чтобы соответствовать тому, что в эталонной реализации lvdmaaten/bhtsne. от Томас Море и Оливье Гризель.
Исправлена ошибка в
decomposition.LatentDirichletAllocationгдеperplexityметод возвращал некорректные результаты, потому чтоtransformметод возвращает нормализованные распределения тем документов, начиная с версии 0.18. #7954 by Гэри Форман.Исправлена форма вывода и ошибки с n_jobs > 1 в
decomposition.SparseCodertransform иdecomposition.sparse_encodeдля одномерных данных и одного компонента. Это также влияет на выходную формуdecomposition.DictionaryLearning. #8086 by Андреас Мюллер.Исправлена реализация
explained_variance_вdecomposition.PCA,decomposition.RandomizedPCAиdecomposition.IncrementalPCA. #9105 by Hanmin Qin.Исправлена реализация
noise_variance_вdecomposition.PCA. #9108 by Hanmin Qin.Исправлена ошибка, где
cluster.DBSCANдает некорректный результат, когда входные данные представляют собой предварительно вычисленную разреженную матрицу с начальными строками, состоящими из нулей. #8306 by Акшай ГуптаИсправлена ошибка, связанная с обучением
cluster.KMeansс разреженным массивом X и начальными центроидами, где средние значения X ненужно вычитались из центроидов. #7872 by Josh Karnofsky.Исправления для проверки входных данных в
covariance.EllipticEnvelope. #8086 by Андреас Мюллер.Исправлена ошибка в
covariance.MinCovDetгде ввод данных, которые создали сингулярную ковариационную матрицу, вызывал бы вспомогательный метод_c_stepвыбросить исключение. #3367 by Джереми СтюардИсправлена ошибка в
manifold.TSNEвлияющие на сходимость градиентного спуска. #8768 by David DeTomaso.Исправлена ошибка в
manifold.TSNEгде хранился некорректныйkl_divergence_. #6507 by Себастьян Зегер.Исправлено неправильное масштабирование в
cross_decomposition.PLSRegressionсscale=True. #7819 by jayzed82.cluster.SpectralCoclusteringиcluster.SpectralBiclusteringfitметод соответствует API, принимаяyи возвращая объект. #6126, #7814 by Laurent Direr и Манитеджа Нандана.Исправлена ошибка, где
sklearn.mixturesampleметоды не возвращали столько образцов, сколько запрашивалось. #7702 by Леви Джон Вольф.Исправлена реализация сжатия в
neighbors.NearestCentroid. #9219 by Hanmin Qin.
Предобработка и отбор признаков
Для разреженных матриц,
preprocessing.normalizeсreturn_norm=Trueтеперь вызоветNotImplementedErrorс нормой 'l1' или 'l2' и с нормой 'max' возвращаемые нормы будут такими же, как для плотных матриц. #7771 by Анг Лу.Исправлена ошибка, где
feature_selection.SelectFdrне реализовал точно процедуру Бенджамини-Хохберга. Ранее он мог выбирать меньше признаков, чем следовало. #7490 by Peng Meng.Исправлена ошибка, где
linear_model.RandomizedLassoиlinear_model.RandomizedLogisticRegressionразрыв для разреженного ввода. #8259 by Aman Dalmia.Исправлена ошибка, где
feature_extraction.FeatureHasherобязательно применяли разреженную случайную проекцию к хешированным признакам, предотвращая использованиеfeature_extraction.text.HashingVectorizerв конвейере сfeature_extraction.text.TfidfTransformer. #7565 by Roman Yurchak.Исправлена ошибка, где
feature_selection.mutual_info_regressionне корректно использовалn_neighbors. #8181 by Guillaume Lemaitre.
Оценка модели и мета-оценщики
Исправлена ошибка, где
model_selection.BaseSearchCV.inverse_transformвозвращаетself.best_estimator_.transform()вместоself.best_estimator_.inverse_transform(). #8344 by Акшай Гупта и Rasmus Eriksson.Добавлен
classes_атрибут дляmodel_selection.GridSearchCV,model_selection.RandomizedSearchCV,grid_search.GridSearchCV, иgrid_search.RandomizedSearchCVкоторый соответствуетclasses_атрибутbest_estimator_. #7661 и #8295 by Alyssa Batula, Dylan Werner-Meier, и Стивен Гувер.Исправлена ошибка, где
model_selection.validation_curveповторно использовал тот же оценщик для каждого значения параметра. #7365 by Александр Сандровский.model_selection.permutation_test_scoreтеперь работает с типами Pandas. #5697 by Stijn Tonk.Несколько исправлений валидации входных данных в
multiclass.OutputCodeClassifier#8086 by Андреас Мюллер.multiclass.OneVsOneClassifier’spartial_fitтеперь гарантирует, что все классы предоставлены заранее. #6250 by Asish Panda.Исправление
multioutput.MultiOutputClassifier.predict_probaвозвращает список двумерных массивов вместо трехмерного массива. В случае, когда разные целевые столбцы имеют разное количество классов,ValueErrorбудет вызвана при попытке сложить матрицы с разными размерностями. #8093 by Peter Bull.Кросс-валидация теперь работает с типами данных Pandas, имеющими индекс только для чтения. #9507 by Лоик Эстеве.
Метрики
metrics.average_precision_scoreбольше не линейно интерполирует между рабочими точками, а вместо этого взвешивает точности по изменению полноты с последней рабочей точки, как в Запись в Википедии. (#7356). С помощью Ник Дингволл и Гаэль Варокво.Исправлена ошибка в
metrics.classification._check_targetsкоторый вернёт'binary'ify_trueиy_predбыли оба'binary'но объединениеy_trueиy_predбыл'multiclass'. #8377 by Лоик Эстеве.Исправлена ошибка переполнения целых чисел в
metrics.confusion_matrixи, следовательно,metrics.cohen_kappa_score. #8354, #7929 by Joel Nothman и Джон Кралл.Исправлена передача
gammaпараметр дляchi2ядро вmetrics.pairwise.pairwise_kernelsПримечание: поиск разделения не останавливается, пока не будет найдена хотя бы одна допустимая разделяющая выборка узла, даже если для этого требуется фактически проверить более чем by Nick Rhinehart, Saurabh Bansod и Андреас Мюллер.
Разное
Исправлена ошибка, когда
datasets.make_classificationзавершается ошибкой при генерации более 30 признаков. #8159 by Herilalaina Rakotoarison.Исправлена ошибка, где
datasets.make_moonsmax_features_n_samplesявляется нечётным. #8198 by Джош Леви.Некоторые
fetch_функции вsklearn.datasetsигнорировалиdownload_if_missingключевое слово. #7944 by Ralf Gommers.Исправление оценщиков для принятия
sample_weightпараметр типаpandas.Seriesв ихfitфункция. #7825 by Kathleen Chen.Исправлена ошибка в случаях, когда
numpy.cumsumможет быть численно неустойчивым, вызывая исключение, если обнаружена неустойчивость. #7376 и #7331 by Joel Nothman и @yangarbiter.Исправлена ошибка, где
base.BaseEstimator.__getstate__препятствовали кастомизации пиклинга дочерних классов при использовании в контексте множественного наследования. #8316 by Holger Peters.Обновить Sphinx-Gallery с версии 0.1.4 до 0.1.7 для разрешения ссылок в сборке документации с Sphinx>1.5 #8010, #7986 by Oscar Najera
Добавить
data_homeпараметр дляsklearn.datasets.fetch_kddcup99. #9289 by Лоик Эстеве.Исправление загрузчиков наборов данных с использованием версии makedirs для Python 3, чтобы также работало в Python 2. #9284 by Себастьян Санти.
Несколько незначительных проблем были исправлены благодаря предупреждениям от lgtm.com. #9278 by Jean Helie, среди прочих.
Сводка изменений API#
Деревья и ансамбли
Базовые модели градиентного бустинга больше не являются оценщиками. Путем Андреас Мюллер.
Все древовидные оцениватели теперь принимают
min_impurity_decreaseпараметр вместоmin_impurity_split, который теперь устарел.min_impurity_decreaseпомогает остановить разделение узлов, в которых взвешенное уменьшение неопределенности от разделения больше не является как минимумmin_impurity_decrease. #8449 by Рагхав РВ.
Линейные, ядерные и связанные модели
n_iterпараметр устарел вlinear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorиlinear_model.Perceptron. С помощью Tom Dupre la Tour.
Другие предикторы
neighbors.LSHForestбыл устаревшим и будет удален в 0.21 из-за низкой производительности. #9078 by Laurent Direr.neighbors.NearestCentroidбольше не заявляет о поддержкеmetric='precomputed'что теперь вызывает ошибку. #8515 by Сергул Айдор.The
alphaпараметрsemi_supervised.LabelPropagationтеперь не имеет эффекта и устарел для удаления в версии 0.21. #9239 by Андре Амброзио Боэшат, Utkarsh Upadhyay, и Joel Nothman.
Разложение, обучение многообразию и кластеризация
Устаревает
doc_topic_distrаргументperplexityметод вdecomposition.LatentDirichletAllocationпоскольку пользователь больше не имеет доступа к ненормализованному распределению тем документа, необходимому для расчета перплексии. #7954 by Гэри Форман.The
n_topicsпараметрdecomposition.LatentDirichletAllocationбыл переименован вn_componentsи будет удалён в версии 0.21. #8922 by @Attractadore.decomposition.SparsePCA.transform’sridge_alphaпараметр устарел в пользу параметра класса. #8137 by Наоя Канаи.cluster.DBSCANтеперь имеетmetric_paramsпараметр. #8139 by Наоя Канаи.
Предобработка и отбор признаков
feature_selection.SelectFromModelтеперь имеетpartial_fitметод только если базовый оценщик это делает. По Андреас Мюллер.feature_selection.SelectFromModelтеперь проверяетthresholdпараметр и устанавливаетthreshold_атрибут во время вызоваfit, и больше не во время вызоваtransform. С помощью Andreas Müller.The
non_negativeпараметр вfeature_extraction.FeatureHasherбыл устаревшим и заменен более принципиальной альтернативой,alternate_sign. #7565 by Roman Yurchak.linear_model.RandomizedLogisticRegression, иlinear_model.RandomizedLassoбыли объявлены устаревшими и будут удалены в версии 0.21. #8995 by Ramana.S.
Оценка модели и мета-оценщики
Устаревает
fit_paramsвход конструктора дляmodel_selection.GridSearchCVиmodel_selection.RandomizedSearchCVв пользу передачи параметров ключевых слов вfitметоды этих классов. Параметры, зависящие от данных и необходимые для обучения модели, следует передавать как ключевые аргументы вfitи соответствие этому соглашению позволит классам выбора гиперпараметров использоваться с инструментами, такими какmodel_selection.cross_val_predict. #2879 by Стивен Гувер.В версии 0.21 поведение по умолчанию для сплиттеров, использующих
test_sizeиtrain_sizeпараметр изменится, так что указаниеtrain_sizeодно только вызоветtest_sizeбудет остатком. #7459 by Nelson Liu.multiclass.OneVsRestClassifierтеперь имеетpartial_fit,decision_functionиpredict_probaметоды только тогда, когда базовый оценщик это делает. #7812 by Андреас Мюллер и Михаил Коробов.multiclass.OneVsRestClassifierтеперь имеетpartial_fitметод только если базовый оценщик поддерживает. По Андреас Мюллер.The
decision_functionформа вывода для бинарной классификации вmulticlass.OneVsRestClassifierиmulticlass.OneVsOneClassifierтеперь(n_samples,)в соответствии с соглашениями scikit-learn. #9100 by Андреас Мюллер.The
multioutput.MultiOutputClassifier.predict_probaфункция, используемая для возврата 3D массива (n_samples,n_classes,n_outputs). В случае, когда разные целевые столбцы имели разное количество классов, aValueErrorбудет вызвано при попытке объединить матрицы с разными размерностями. Эта функция теперь возвращает список массивов, где длина списка равнаn_outputs, и каждый массив являетсяn_samples,n_classes) для этого конкретного вывода. #8093 by Peter Bull.Заменить атрибут
named_stepsdicttoutils.Bunchвpipeline.Pipelineдля включения автодополнения в интерактивной среде. В случае конфликта значений наnamed_stepsиdictатрибут,dictповедение будет приоритетным. #8481 by Herilalaina Rakotoarison.
Разное
Устаревает
yпараметр вtransformиinverse_transform. Метод не должен приниматьyпараметр, так как он используется во время предсказания. #8174 by Tahar Zanouda, Александр Грамфор и Рагхав РВ.SciPy >= 0.13.3 и NumPy >= 1.8.2 теперь являются минимальными поддерживаемыми версиями для scikit-learn. Следующие обратно портированные функции в
sklearn.utilsбыли удалены или устарели соответствующим образом. #8854 и #8874 by Наоя КанаиThe
store_covariancesиcovariances_параметрыdiscriminant_analysis.QuadraticDiscriminantAnalysisбыли переименованы вstore_covarianceиcovariance_чтобы быть согласованным с соответствующими именами параметровdiscriminant_analysis.LinearDiscriminantAnalysis. Они будут удалены в версии 0.21. #7998 by ЦзячэнУдалено в 0.19:
utils.fixes.argpartitionutils.fixes.array_equalutils.fixes.astypeutils.fixes.bincountutils.fixes.expitutils.fixes.frombuffer_emptyutils.fixes.in1dutils.fixes.normutils.fixes.rankdatautils.fixes.safe_copy
Устарело в 0.19, будет удалено в 0.21:
utils.arpack.eigsutils.arpack.eigshutils.arpack.svdsutils.extmath.fast_dotutils.extmath.logsumexputils.extmath.normutils.extmath.pinvhutils.graph.graph_laplacianutils.random.choiceutils.sparsetools.connected_componentsutils.stats.rankdata
Модели с обоими методами
decision_functionиpredict_probaтеперь должны иметь монотонную связь между ними. Методcheck_decision_proba_consistencyбыл добавлен в utils.estimator_checks для проверки их согласованности. #7578 by Shubham BhardwajВсе проверки в
utils.estimator_checks, в частностиutils.estimator_checks.check_estimatorтеперь принимают экземпляры оценщиков. Большинство других проверок больше не принимают классы оценщиков. #9019 by Андреас Мюллер.Убедитесь, что атрибуты оценщиков, оканчивающиеся на
_не устанавливаются в конструкторе, а только вfitметод. Наиболее заметно, ансамблевые оценщики (производные отensemble.BaseEnsemble) теперь имеют толькоself.estimators_доступно послеfit. #7464 by Lars Buitinck и Лоик Эстеве.
Участники кода и документации#
Благодарим всех, кто участвовал в поддержке и улучшении проекта с версии 0.18, включая:
Джоэл Нотман, Лоик Эстеве, Андреас Мюллер, Гийом Леметр, Оливье Гризель, Ханмин Цинь, Рагхав РВ, Александр Грамфорт, themrmax, Аман Далмия, Гаэль Варо, Наоя Канаи, Том Дюпре ла Тур, Ришикеш, Нельсон Лю, Тэхун Ли, Нелле Варо, Аашил, Михаил Коробов, Себастьян Санти, Жоан Массич, Роман Юрчак, РАКОТОАРИСОН Херилалайна, Тьерри Гийомо, Александр Абади, Кэрол Уиллинг, Балакумаран Манохаран, Джош Карнофски, Влад Никулае, Уткари Упадхьяй, Дмитрий Петров, Минхуэй Лю, Шриватсан, Винсент Фам, Альберт Томас, Джейк ВандерПлас, Attractadore, JC Liu, alexandercbooth, chkoar, Оскар Нахера, Ааршай Джайн, Кайл Гиллиам, Рамана Суббраманьям, CJ Carey, Клеман Жуде, Дэвид Роблес, Хэ Чэнь, Джорис Ван ден Босше, Каран Десаи, Кэти Луангкот, Лиланд МакИннес, Манитеджа Нандана, Микеле Лаккия, Сергей Лебедев, Шубхам Бхардвадж, akshay0724, omtcyfz, rickiepark, waterponey, Ватсала Ачар, jbDelafosse, Ральф Гоммерс, Екатерина Кривич, Вивек Кумар, Ишанк Гулати, Дэйв Эллиотт, ldirer, Рейичиро Накано, Леви Джон Вулф, Матье Блондель, Сид Капур, Дугал Дж. Сазерленд, midinas, mikebenfield, Сурав Сингх, Асим Бансал, Ибраим Ганиев, Стивен Гувер, АйшварияРК, Стивен С. Хауэлл, Гэри Форман, Нирадж Гангвар, Тахар, Джон Кралл, dokato, Кэти Чен, ferria, Томас Моро, Чарли Браммитт, Николя Гуа, Адам Клечевски, Сэм Шлейфер, Никита Сингх, Базил Бейрути, Джорджо Патрини, Манодж Кумар, Рафаэль Поссас, Джеймс Бурбо, Джеймс А. Беднар, Джанин Харпер, Джей, Жан Эли, Джереми Стюард, Арциом, Джон Вей, Джонатан Лиго, Джонатан Ран, seanpwilliams, Артур Менш, Джош Леви, Джулиан Кульманн, Жюльен Обер, Йорн Хес, Кай, shivamgargsya, Кэт Хемпстолк, Каушик Лакшмикант, Кеннеди, Кеннет Лайонс, Кеннет Майерс, Кевин Яп, Кирилл Бобырев, Константин Подшумок, Артур Имберт, Ли Мюррей, toastedcornflakes, Лера, Ли Ли, Артур Дуйяр, Майнак Джас, tobycheese, Манрадж Сингх, Манвендра Сингх, Марк Мекетон, MarcoFalke, Мэтью Бретт, Маттиас Гилч, Мехул Ахуджа, Мелани Гетц, Мэн, Пэн, Майкл Дезюб, Михал Баумгартнер, vibrantabhi19, Артем Голубин, Милен Пасков, Антонин Карретт, Morikko, MrMjauh, НАЛЕПА Эммануэль, Намия, Антуан Вендлингер, Нарин Кохликян, NarineK, Нейт Герен, Ангус Уильямс, Анг Лу, Николь Ваврова, Нитиш Пандей, Охлопков Даниил Олегович, Энди Крейз, Ом Пракаш, Парминдер Сингх, Патрик Карлсон, Патрик Пей, Пол Ганссле, Пауло Хадад, Павел Лорек, Пэн Ю, Пит Бахант, Питер Булл, Питер Чижек, Питер Ван, Питер Артур де Йонг, Пин-Яо, Чанг, Престон Пэрри, Пунит Матур, Квентин Хибон, Эндрю Смит, Эндрю Джексон, 1kastner, Рамешвар Бхаскаран, Ребекка Билбро, Реми Рампен, Андреа Эсули, Роб Холл, Роберт Брэдшоу, Роман Бро, Аман Пратик, Жуйфэн Чжэн, Рассел Смит, Сачин Агарвал, Сайлеш Чоял, Самсон Тан, Самуэль Вебер, Сара Браун, Себастьян Пёльстерль, Себастьян Рашка, Себастьян Сегер, Алисса Батула, Абхьюдай Пратап Сингх, Сергей Фельдман, Сергул Айдор, Шаран Ялбурги, willduan, Сиддхарт Гупта, Шри Кришна, Алмер, Стейн Тонк, Аллен Ридделл, Теофилос Папапанагиоту, Элисон, Алексис Миньон, Томми Бушер, Томми Лёфстедт, Тошихиро Камишима, Тайлер Фолкман, Тайлер Ланиган, Александр Юнге, Варун Шеной, Виктор Пугон, Вильгельм фон Эренхайм, Александр Сандровский, Алан Йи, Власиос Василиу, Варут Виджитбенджаронк, Ян Чжан, Ярослав Хальченко, Ичуань Лю, Юичи Фудзикава, affanv14, aivision2020, xor, andreh7, brady salz, campustrampus, Агамемнон Красулис, ditenberg, elena-sharova, filipj8, fukatani, gedeck, guiniol, guoci, hakaa1, hongkahjun, i-am-xhy, jakirkham, jaroslaw-weber, jayzed82, jeroko, jmontoyam, jonathan.striebel, josephsalmon, jschendel, leereeves, martin-hahn, mathurinm, mehak-sachdeva, mlewis1729, mlliou112, mthorrell, ndingwall, nuffe, yangarbiter, plagree, pldtc325, Брено Фрейтас, Бретт Олсен, Брайан А. Альфано, Брайан Бернс, polmauri, Брэндон Картер, Чарльтон Остин, Чайант T15h, Чинмая Панчоли, Кристиан Даниельсен, Чунг Йен, Чи-Квей Яу, pravarmahajan, DOHMATOB Элвис, Дэниел ЛеЖён, Дэниел Хник, Дариуш Моравец, Дэвид ДеТомасо, Дэвид Гаскес, Дэвид Хабертюр, Дэвид Херьянто, Дэвид Киркби, Дэвид Николсон, rashchedrin, Дебора Гертруда Диггес, Денис Энгеманн, Деванш Д, Диксон, Боб Баксли, Don86, Э. Линч-Кларуп, Эд Роджерс, Элизабет Феррис, Ellen-Co2, Фабиан Эгли, Фан-Цзе Чоу, Бин Тянь Дай, Грег Стапп, Гжегож Шпак, Бертран Тирион, Адриен Бертран, Харизо Раджаона, zxcvbnius, Генри Лин, Хольгер Петерс, Айсиблэйд Дай, Игорь Андрющенко, Илья, Айзек Локлин, Иван Вальес, Орельен Белле, JPFrancoia, Джейкоб Шрайбер, Ашиш Махапатра