Версия 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:

Улучшения#

Участники кода и документации#

С благодарностью:

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.

Измененные модели#

Следующие оценщики и функции, при обучении на тех же данных и параметрах, могут создавать модели, отличные от предыдущей версии. Это часто происходит из-за изменений в логике моделирования (исправления ошибок или улучшения) или в процедурах случайной выборки.

Подробности перечислены в журнале изменений ниже.

(Хотя мы стараемся лучше информировать пользователей, предоставляя эту информацию, мы не можем гарантировать, что этот список полный.)

Журнал изменений#

Новые возможности#

Классификаторы и регрессоры

  • Добавлен multioutput.ClassifierChain для многометочной классификации. Путем Адам Клечевски.

  • Добавлен решатель 'saga' который реализует улучшенную версию Stochastic Average Gradient, linear_model.LogisticRegression и linear_model.Ridge. Он позволяет использовать штраф L1 с мультиномиальной логистической потерей и работает немного лучше, чем 'sag' в первые эпохи гребневой и логистической регрессии. #8446 by Артур Менш.

Другие оценщики

Выбор и оценка модели

Разное

  • Проверка того, что входные данные не содержат NaN или inf, теперь может быть отключена с помощью config_context, на свой страх и риск. Это сэкономит время выполнения, и может быть особенно полезно для времени предсказания. #7548 by Joel Nothman.

  • Добавлен тест для проверки соответствия перечисления параметров в строках документации сигнатуре функции/класса. #9206 by Александр Грамфор и Рагхав РВ.

Улучшения#

Деревья и ансамбли

Линейные, ядерные и связанные модели

Другие предикторы

  • Пользовательские метрики для sklearn.neighbors бинарные деревья теперь имеют меньше ограничений: они должны принимать два одномерных массива и возвращать число с плавающей точкой. #6288 by Jake Vanderplas.

  • algorithm='auto в sklearn.neighbors estimators теперь выбирает наиболее подходящий алгоритм для всех типов входных данных и метрик. #9145 by Herilalaina Rakotoarison и Редди Чинтала.

Разложение, обучение многообразию и кластеризация

Предобработка и отбор признаков

Оценка модели и мета-оценщики

Метрики

Разное

Исправления ошибок#

Деревья и ансамбли

Линейные, ядерные и связанные модели

Другие предикторы

Разложение, обучение многообразию и кластеризация

Предобработка и отбор признаков

Оценка модели и мета-оценщики

Метрики

Разное

  • Исправлена ошибка, когда datasets.make_classification завершается ошибкой при генерации более 30 признаков. #8159 by Herilalaina Rakotoarison.

  • Исправлена ошибка, где datasets.make_moons max_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 Рагхав РВ.

Линейные, ядерные и связанные модели

Другие предикторы

Разложение, обучение многообразию и кластеризация

Предобработка и отбор признаков

  • 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). В случае, когда разные целевые столбцы имели разное количество классов, a ValueError будет вызвано при попытке объединить матрицы с разными размерностями. Эта функция теперь возвращает список массивов, где длина списка равна n_outputs, и каждый массив являетсяn_samples, n_classes) для этого конкретного вывода. #8093 by Peter Bull.

  • Заменить атрибут named_steps dict to utils.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.argpartition

    • utils.fixes.array_equal

    • utils.fixes.astype

    • utils.fixes.bincount

    • utils.fixes.expit

    • utils.fixes.frombuffer_empty

    • utils.fixes.in1d

    • utils.fixes.norm

    • utils.fixes.rankdata

    • utils.fixes.safe_copy

    Устарело в 0.19, будет удалено в 0.21:

    • utils.arpack.eigs

    • utils.arpack.eigsh

    • utils.arpack.svds

    • utils.extmath.fast_dot

    • utils.extmath.logsumexp

    • utils.extmath.norm

    • utils.extmath.pinvh

    • utils.graph.graph_laplacian

    • utils.random.choice

    • utils.sparsetools.connected_components

    • utils.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, Джейкоб Шрайбер, Ашиш Махапатра