Версия 0.18#

Предупреждение

Scikit-learn 0.18 — последний крупный выпуск scikit-learn, поддерживающий Python 2.6. Более поздние версии scikit-learn потребуют Python 2.7 или выше.

Версия 0.18.2#

20 июня 2017

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

Участники кода#

Aman Dalmia, Loic Esteve, Nate Guerin, Sergei Lebedev

Версия 0.18.1#

11 ноября 2016 года

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

Улучшения#

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

Сводка изменений API#

Деревья и леса

  • The min_weight_fraction_leaf parameter древовидных классификаторов и регрессоров теперь по умолчанию предполагает равные веса выборки, если sample_weight аргумент не передаётся в fit функция. Ранее параметр молча игнорировался. #7301 by Nelson Liu.

  • Клонирование/сериализация классов критериев разделения дерева теперь безопасна для памяти. #7680 by Ибраим Ганиев.

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

Версия 0.18#

28 сентября 2016

Улучшения выбора модели и изменения API#

  • Модуль model_selection

    Новый модуль sklearn.model_selection, который объединяет функциональность ранее sklearn.cross_validation, sklearn.grid_search и sklearn.learning_curve, открывает новые возможности, такие как вложенная перекрестная проверка и лучшее управление поиском параметров с Pandas.

    Многое останется прежним, но есть некоторые ключевые различия. Прочитайте ниже, чтобы узнать больше об изменениях.

  • Независимые от данных CV-сплиттеры, позволяющие выполнять вложенную перекрестную проверку

    Новые сплиттеры кросс-валидации, определенные в sklearn.model_selectionбольше не инициализируются какими-либо параметрами, зависящими от данных, такими как y. Вместо этого они предоставляют split метод, который принимает данные и выдаёт генератор для различных разбиений.

    Это изменение позволяет использовать разделители перекрёстной проверки для выполнения вложенной перекрёстной проверки, что облегчается model_selection.GridSearchCV и model_selection.RandomizedSearchCV utilities.

  • Улучшенный атрибут cv_results_

    Новый cv_results_ атрибут (из model_selection.GridSearchCV и model_selection.RandomizedSearchCV) введен вместо grid_scores_ атрибут представляет собой словарь одномерных массивов, где элементы в каждом массиве соответствуют настройкам параметров (т.е. кандидатам для поиска).

    The cv_results_ словарь можно легко импортировать в pandas в качестве DataFrame для исследования результатов поиска.

    The cv_results_ массивы включают оценки для каждого разделения перекрестной проверки (с ключами, такими как 'split0_test_score'), а также их среднее ('mean_test_score') и стандартное отклонение ('std_test_score').

    Ранги для кандидатов поиска (основанные на их среднем показателе перекрестной проверки) доступны по адресу cv_results_['rank_test_score'].

    Значения параметров для каждого параметра хранятся отдельно как маскированные объектные массивы numpy. Значение для данного кандидата поиска маскируется, если соответствующий параметр неприменим. Дополнительно список всех словарей параметров хранится в cv_results_['params'].

  • Параметры n_folds и n_iter переименованы в n_splits

    Некоторые имена параметров изменились: n_folds параметра в новом model_selection.KFold, model_selection.GroupKFold (см. ниже изменение названия), и model_selection.StratifiedKFold теперь переименован в n_splits. n_iter параметр в model_selection.ShuffleSplit, новый класс model_selection.GroupShuffleSplit и model_selection.StratifiedShuffleSplit теперь переименован в n_splits.

  • Переименование классов-разделителей, которые принимают метки групп вместе с данными

    Разделители перекрестной проверки LabelKFold, LabelShuffleSplit, LeaveOneLabelOut и LeavePLabelOut были переименованы в model_selection.GroupKFold, model_selection.GroupShuffleSplit, model_selection.LeaveOneGroupOut и model_selection.LeavePGroupsOut соответственно.

    Обратите внимание на изменение от единственного к множественному числу в model_selection.LeavePGroupsOut.

  • Параметры меток подгонки переименованы в группы

    The labels параметр в split метод переименованных разделителей model_selection.GroupKFold, model_selection.LeaveOneGroupOut, model_selection.LeavePGroupsOut, model_selection.GroupShuffleSplit переименован в groups следуя новой номенклатуре их имен классов.

  • Параметр n_labels переименован в n_groups

    Параметр n_labels в переименованном model_selection.LeavePGroupsOut изменено на n_groups.

  • Оценки обучения и информация о времени

    cv_results_ также включает оценки обучения для каждого разбиения перекрестной проверки (с ключами, такими как 'split0_train_score'), а также их среднее ('mean_train_score') и стандартное отклонение ('std_train_score'). Чтобы избежать затрат на вычисление оценки обучения, установите return_train_score=False.

    Кроме того, среднее значение и стандартное отклонение времени, затраченного на разбиение, обучение и оценку модели по всем разбиениям перекрестной проверки, доступны по ключу 'mean_time' и 'std_time' соответственно.

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

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

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

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

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

Улучшения#

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

  • Добавлен новый критерий разделения для tree.DecisionTreeRegressor, средняя абсолютная ошибка. Этот критерий также может использоваться в ensemble.ExtraTreesRegressor, ensemble.RandomForestRegressor, и оценщики градиентного бустинга. #6667 by Nelson Liu.

  • Добавлен взвешенный критерий ранней остановки на основе примесей для роста дерева решений. #6954 by Nelson Liu

  • Оценщики случайного леса, экстра-деревьев и дерева решений теперь имеют метод decision_path который возвращает путь решений для образцов в дереве. С помощью Arnaud Joly.

  • Добавлен новый пример, раскрывающий структуру дерева решений. Путем Arnaud Joly.

  • Случайный лес, экстра-деревья, деревья решений и оценщик градиентного бустинга принимают параметр min_samples_split и min_samples_leaf предоставляется в процентах от обучающих выборок. Путем yelite и Arnaud Joly.

  • Оценщики градиентного бустинга принимают параметр criterion для указания критерия разделения, используемого во встроенных деревьях решений. #6667 by Nelson Liu.

  • Объем памяти уменьшен (иногда значительно) для ensemble.bagging.BaseBagging и классы, которые наследуются от него, т.е., ensemble.BaggingClassifier, ensemble.BaggingRegressor, и ensemble.IsolationForest, путем динамического создания атрибута estimators_samples_ только когда это необходимо. Путем David Staub.

  • Добавлен n_jobs и sample_weight параметры для ensemble.VotingClassifier для обучения базовых оценщиков параллельно. #5805 by Ибраим Ганиев.

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

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

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

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

Метрики

Разное

  • Добавлен n_jobs параметр для feature_selection.RFECV для вычисления оценки на тестовых фолдах параллельно. С помощью Manoj Kumar

  • Кодовая база не содержит сгенерированных файлов C/C++ cython: они генерируются во время сборки. Дистрибутивные пакеты по-прежнему будут содержать сгенерированные файлы C/C++. Благодаря Артур Менш.

  • Уменьшить использование памяти для 32-битных массивов с плавающей точкой utils.sparse_func.mean_variance_axis и utils.sparse_func.incr_mean_variance_axis поддерживая cython слитые типы. Благодаря YenChen Lin.

  • The ignore_warnings теперь принимают аргумент category, чтобы игнорировать только предупреждения указанного типа. От Thierry Guillemot.

  • Добавлен параметр return_X_y и тип возвращаемого значения (data, target) : tuple опция для datasets.load_iris набор данных #7049, datasets.load_breast_cancer набор данных #7152, datasets.load_digits набор данных, datasets.load_diabetes набор данных, datasets.load_linnerud набор данных, datasets.load_boston набор данных #7154 by Manvendra Singh.

  • Упрощение clone функция, устаревает поддержка для оценщиков, которые изменяют параметры в __init__. #5540 by Андреас Мюллер.

  • При распаковке оценщика scikit-learn в версии, отличной от той, в которой оценщик был обучен, возникает UserWarning возникает, см. документация по сохранению моделей для получения дополнительных сведений. (#7248) По Андреас Мюллер.

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

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

  • Случайный лес, экстра-деревья, деревья решений и градиентный бустинг больше не будут принимать min_samples_split=1 поскольку для разделения узла дерева решений требуется не менее 2 образцов. По Arnaud Joly

  • ensemble.VotingClassifier теперь вызывает NotFittedError if predict, transform или predict_proba вызываются на неподогнанном оценщике. от Sebastian Raschka.

  • Исправлена ошибка, где ensemble.AdaBoostClassifier и ensemble.AdaBoostRegressor будет работать плохо, если random_state был исправлен (#7411). С помощью Joel Nothman.

  • Исправлена ошибка в ансамблях с рандомизацией, где ансамбль не устанавливал random_state на базовых оценщиках в конвейере или подобной вложенности. (#7411). Обратите внимание, результаты для ensemble.BaggingClassifier ensemble.BaggingRegressor, ensemble.AdaBoostClassifier и ensemble.AdaBoostRegressor теперь будет отличаться от предыдущих версий. По Joel Nothman.

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

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

  • decomposition.RandomizedPCA количество по умолчанию iterated_power равно 4 вместо 3. #5141 by Джорджио Патрини.

  • utils.extmath.randomized_svd выполняет 4 степенные итерации по умолчанию вместо 0. На практике этого достаточно для получения хорошего приближения истинных собственных значений/векторов при наличии шума. Когда n_components мал (< .1 * min(X.shape)) n_iter установлено в 7, если пользователь не указал большее число. Это улучшает точность при малом количестве компонентов. #5299 by Джорджио Патрини.

  • Несогласованность отбеливания/неотбеливания между компонентами decomposition.PCA и decomposition.RandomizedPCA (теперь разложено в PCA, см. Новые возможности) исправлено. components_ хранятся без отбеливания. #5299 by Джорджио Патрини.

  • Исправлена ошибка в manifold.spectral_embedding где диагональ ненормированной матрицы Лапласа была некорректно установлена в 1. #4995 by Peter Fischer.

  • Исправлена некорректная инициализация utils.arpack.eigsh на всех случаях. Влияет на cluster.bicluster.SpectralBiclustering, decomposition.KernelPCA, manifold.LocallyLinearEmbedding, и manifold.SpectralEmbedding (#5012). С помощью Peter Fischer.

  • Атрибут explained_variance_ratio_ рассчитанный с использованием решателя SVD discriminant_analysis.LinearDiscriminantAnalysis теперь возвращает корректные результаты. Благодаря JPFrancoia

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

  • preprocessing.data._transform_selected теперь всегда передает копию из X для преобразования функции, когда copy=True (#7194). С помощью Caio Oliveira.

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

Метрики

  • Исправлена ошибка в metrics.silhouette_score в которых кластеры размера 1 были неправильно оценены. Они должны получить оценку 0. От Joel Nothman.

  • Исправлена ошибка в metrics.silhouette_samples так что теперь он работает с произвольными метками, а не только с теми, которые находятся в диапазоне от 0 до n_clusters - 1.

  • Исправлена ошибка, при которой ожидаемая и скорректированная взаимная информация были неверными, если ячейки контингентности кластеров превышали 2**16. С помощью Joel Nothman.

  • metrics.pairwise_distances теперь преобразует массивы в логические массивы, когда требуется в scipy.spatial.distance. #5460 by Tom Dupre la Tour.

  • Исправлена поддержка разреженного ввода в metrics.silhouette_score а также пример examples/text/document_clustering.py. С помощью YenChen Lin.

  • metrics.roc_curve и metrics.precision_recall_curve больше не округлять y_score значения при создании ROC-кривых; это вызывало проблемы у пользователей с очень малыми различиями в оценках (#7353).

Разное

  • model_selection.tests._search._check_param_grid теперь работает корректно со всеми типами, которые расширяют/реализуют Sequence (кроме строки), включая range (Python 3.x) и xrange (Python 2.x). #7323 от Вячеслава Ковалевского.

  • utils.extmath.randomized_range_finder более численно устойчив, когда запрашивается много степенных итераций, поскольку по умолчанию применяет LU-нормализацию. Если n_iter<2 численные проблемы маловероятны, поэтому нормализация не применяется. Доступны другие варианты нормализации: 'none', 'LU' и 'QR'. #5141 by Джорджио Патрини.

  • Исправлена ошибка, при которой некоторые форматы scipy.sparse матрица, и оценщики с ними в качестве параметров не могли быть переданы в base.clone. Путем Лоик Эстеве.

  • datasets.load_svmlight_file теперь может читать длинные целочисленные значения QID. #7101 by Ибраим Ганиев.

Сводка изменений API#

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

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

  • Старый mixture.DPGMM устарело в пользу нового mixture.BayesianGaussianMixture (с параметром weight_concentration_prior_type='dirichlet_process'). Новый класс решает вычислительные проблемы старого класса и вычисляет гауссовскую смесь с априорным распределением Дирихле быстрее, чем раньше. #7295 by Вэй Сюэ и Thierry Guillemot.

  • Старый mixture.VBGMM устарело в пользу нового mixture.BayesianGaussianMixture (с параметром weight_concentration_prior_type='dirichlet_distribution'). Новый класс решает вычислительные проблемы старого класса и вычисляет вариационную байесовскую гауссову смесь быстрее, чем раньше. #6651 by Вэй Сюэ и Thierry Guillemot.

  • Старый mixture.GMM устарело в пользу нового mixture.GaussianMixture. Новый класс вычисляет гауссовскую смесь быстрее, чем раньше, и некоторые вычислительные проблемы были решены. #6666 by Вэй Сюэ и Thierry Guillemot.

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

Участники кода#

Адитья Джоши, Алехандро, Александр Фабиш, Александр Логинов, Александр Миниушкин, Александр Руди, Александр Абади, Александр Абрахам, Александр Грамфор, Александр Сен, alexfields, Альваро Ульоа, alyssaq, Амлан Кар, Андреас Мюллер, andrew giessel, Эндрю Джексон, Эндрю МакКаллох, Эндрю Мюррей, Аниш Шах, Арафат, Арчит Шарма, Ариэль Рокем, Арно Жоли, Арно Рашез, Артур Менш, Эш Гувер, asnt, b0noI, Бехзад Табибиан, Бернардо, Бернхард Кратцвальд, Бхаргав Мангипуди, blakeflei, Боюань Дэн, Брэндон Картер, Бретт Наул, Брайан МакФи, Кайо Оливейра, Камило Ламус, Кэрол Уиллинг, Cass, CeShine Lee, Чарльз Труонг, Чи-Квей Яу, CJ Carey, codevig, Колин Ни, Дэн Шиблер, Дэниел, Дэниел Хник, Дэвид Эллис, Дэвид Николсон, Дэвид Стауб, Дэвид Талер, Дэвид Уоршоу, Давиде Лазанья, Дебора, definitelyuncertain, Диди Бар-Зев, djipey, dsquareindia, edwinENSAE, Элиас Куте, Элвис ДОХМАТОБ, Итан Уайт, Фабиан Педрегоса, Фабио Тиккони, fisache, Флориан Вильгельм, Фрэнсис, Фрэнсис О’Донован, Гаэль Вароакс, Ганиев Ибраим, ghg, Жиль Лупп, Джорджо Патрини, Джованни Керубин, Джованни Ланцани, Гленн Цянь, Гордон Мор, govin-vatsan, Грэм Клэнаган, Грег Редда, Грег Стапп, Гийом Леметр, Густав Мёртберг, halwai, Харизо Раджаона, Гарри Маврофоракис, hashcode55, hdmetor, Генри Лин, Хобсон Лейн, Хьюго Боун-Андерсон, Игорь Андрющенко, Imaculate, Инки Хван, Исаак Сиджаранамуал, Ишанк Гулати, Иссам Лараджи, Ивер Йордал, jackmartin, Джейкоб Шрайбер, Джейк Вандерплас, Джеймс Фидлер, Джеймс Раутли, Ян Зикес, Янна Бреттинген, jarfa, Джейсон Ласка, jblackburne, jeff levesque, Джеффри Блэкберн, Jeffrey04, Джереми Хинц, jeremynixon, Жером, Джессика Юнг, Джилл-Дженн Ви, Джимми Джиа, Цзиюань Цянь, Джоэл Нотман, johannah, Джон, Джон Боерсма, Джон Киркхэм, Джон Мёллер, jonathan.striebel, joncrall, Джорди, Джозеф Муньос, Джошуа Кук, JPFrancoia, jrfiedler, JulianKahnert, juliathebrave, kaichogami, КамалакерДади, Кеннет Лайонс, Кевин Ван, kingjr, kjell, Константин Подшумок, Корнел Кельчевски, Кришна Кальян, krishnakalyan3, Квл Патнам, Кайл Джексон, Ларс Бёйтинк, ldavid, LeiG, ЛейтонЧжан, Лиланд МакИннес, Лян-Чи Хси, Лилиан Бессон, lizsz, Лоик Эстеве, Луи Тиао, Леони Борн, Мадс Йенсен, Манитеджа Нандана, Манодж Кумар, Манвендра Сингх, Марко, Марио Крелл, Марк Бао, Марк Сзепинец, Мартин Мадсен, MartinBpr, Марьян Морель, Массил, Матеус, Матьё Блондель, Матьё Дюбуа, Маттео, Маттиас Экман, Макс Мороз, Майкл Шерер, michiaki ariga, Михаил Коробов, Мусса Таифи, mrandrewandrade, Мридул Сет, nadya-p, Наоя Канаи, Нейт Джордж, Нелле Вароакс, Нельсон Лю, Ник Джеймс, NickleDave, Нико, Николя Гуа, Николай Майоров, ningchi, nlathia, okbalefthanded, Охлопков, Оливье Гризель, Панос Лоридас, Пол Стрикленд, Перрин Летелье, pestrickland, Питер Фишер, Питер, Пин-Яо, Чанг, practicalswift, Престон Пэрри, Циму Чжэн, Рачит Кансал, Рагхав РВ, Ральф Гоммерс, Рамана.С, Раммиг, Рэнди Олсон, Роб Александр, Роберт Лутц, Робин Шукер, Рохан Джайн, Руйфэн Чжэн, Райан Ю, Реми Леоне, saihttam, Сайвинг Йонг, Сэм Шлейфер, Сэмюэль Сен-Жан, Сартадж Сингх, Сасанк Чиламкурти, saurabh.bansod, Скотт Эндрюс, Скотт Лоу, seales, Себастьян Рашка, Себастьян Сегер, Себастьян Ванрелль, Сергей Лебедев, шагун Содхани, шанмуга cv, Шашанк Шекхар, shawpan, shengxiduan, Шота, shuckle16, Скиппер Сиболд, sklearn-ci, SmedbergM, srvanrell, Себастьен Лерик, Таранджит, themrmax, Тьерри, Тьерри Гийомо, Томас, Томас Халлок, Томас Моро, Тим Хед, tKammy, toastedcornflakes, Том, TomDLT, Тошихиро Камишима, tracer0tong, Трент Хаук, trevorstephens, Туэ Во, Варун, Варун Джеваликар, Вячеслав, Вигнеш Биродкар, Викрам, Виллу Руусманн, Винаяк Мехта, walter, waterponey, Вэньхуа Ян, Вэньцзянь Хуан, Уилл Уэлч, wyseguy7, xyguo, yanlend, Ярослав Хальченко, yelite, Йен, ЙенЧенЛин, Ичуань Лю, Йоав Рам, Йошики, Чжэн ЖуйФэн, zivori, Оскар Нахера