Версия 0.16#

Версия 0.16.1#

14 апреля 2015 г.

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

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

Версия 0.16#

26 марта 2015

Основные моменты#

  • Улучшения скорости (особенно в cluster.DBSCAN), сниженные требования к памяти, исправления ошибок и улучшенные настройки по умолчанию.

  • Мультиномиальная логистическая регрессия и алгоритм пути в linear_model.LogisticRegressionCV.

  • Обучение PCA вне памяти через decomposition.IncrementalPCA.

  • Калибровка вероятности классификаторов с использованием calibration.CalibratedClassifierCV.

  • cluster.Birch метод кластеризации для больших наборов данных.

  • Масштабируемый поиск приближённых ближайших соседей с лесами локально-чувствительного хеширования в neighbors.LSHForest.

  • Улучшенные сообщения об ошибках и лучшая валидация при использовании некорректных входных данных.

  • Более устойчивая интеграция с датафреймами pandas.

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

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

Улучшения#

  • Добавить опцию return_distance в hierarchical.ward_tree возвращать расстояния между узлами как для структурированных, так и для неструктурированных версий алгоритма. С помощью Matteo Visconti di Oleggio Castello. Та же опция была добавлена в hierarchical.linkage_tree. Путем Manoj Kumar

  • Добавлена поддержка весов примеров в объектах оценщиков. Метрики с поддержкой весов примеров автоматически получат от этого выгоду. Путем Noel Dawe и Vlad Niculae.

  • Добавлен newton-cg и lbfgs поддержка решателя в linear_model.LogisticRegression. С помощью Manoj Kumar.

  • Добавить selection="random" параметр для реализации стохастического координатного спуска для linear_model.Lasso, linear_model.ElasticNet и связанные. С помощью Manoj Kumar.

  • Добавить sample_weight параметр для metrics.jaccard_similarity_score и metrics.log_loss. Путем Джатин Шах.

  • Поддержка разреженного многометочного индикаторного представления в preprocessing.LabelBinarizer и multiclass.OneVsRestClassifier (с помощью Hamzeh Alsalhi с благодарностью Rohit Sivaprasad), а также метрики оценки (от Joel Nothman).

  • Добавить sample_weight параметр для metrics.jaccard_similarity_score. Путем Jatin Shah.

  • Добавить поддержку многоклассовой классификации в metrics.hinge_loss. Добавлен labels=None в качестве необязательного параметра. С помощью Saurabh Jha.

  • Добавить sample_weight параметр для metrics.hinge_loss. Путем Saurabh Jha.

  • Добавить multi_class="multinomial" опция в linear_model.LogisticRegression для реализации решателя логистической регрессии, который минимизирует кросс-энтропию или мультиномиальную потерю вместо настройки по умолчанию One-vs-Rest. Поддерживает lbfgs и newton-cg решателей. С помощью Lars Buitinck и Manoj Kumar. Опция решателя newton-cg от Simon Wu.

  • DictVectorizer теперь может выполнять fit_transform на итерируемом объекте за один проход при указании опции sort=False. С помощью Дэн Бланшар.

  • model_selection.GridSearchCV и model_selection.RandomizedSearchCV теперь можно настроить для работы с оценщиками, которые могут завершаться с ошибкой и вызывать исключения на отдельных фолдах. Эта опция контролируется error_score параметр. Это не влияет на ошибки, возникающие при повторном обучении. При Michal Romaniuk.

  • Добавить digits параметр для metrics.classification_report чтобы позволить отчету показывать разную точность чисел с плавающей запятой. С помощью Иэн Гилмор.

  • Добавить стратегию прогнозирования квантилей в dummy.DummyRegressor. Путем Aaron Staple.

  • Добавить handle_unknown опция для preprocessing.OneHotEncoder для более корректной обработки неизвестных категориальных признаков во время transform. Путём Manoj Kumar.

  • Добавлена поддержка разреженных входных данных для деревьев решений и их ансамблей. С помощью Fares Hedyati и Arnaud Joly.

  • Оптимизировано cluster.AffinityPropagation путем сокращения количества выделений памяти для больших временных структур данных. С помощью Antony Lee.

  • Параллелизация вычисления важности признаков в случайном лесу. С помощью Оливье Гризель и Arnaud Joly.

  • Добавить n_iter_ атрибут для оценщиков, которые принимают max_iter атрибут в их конструкторе. Автор Manoj Kumar.

  • Добавлена функция принятия решений для multiclass.OneVsOneClassifier По Рагхав РВ и Кайл Бошамп.

  • neighbors.kneighbors_graph и radius_neighbors_graph поддерживают неевклидовы метрики. Благодаря Manoj Kumar

  • Параметр connectivity в cluster.AgglomerativeClustering и family теперь принимают вызываемые объекты, возвращающие матрицу связности. С помощью Manoj Kumar.

  • Поддержка разреженных данных для metrics.pairwise.paired_distances. С помощью Joel Nothman.

  • cluster.DBSCAN теперь поддерживает разреженный ввод и веса образцов и был оптимизирован: внутренний цикл переписан на Cython, и запросы соседей по радиусу теперь вычисляются пакетно. Благодаря Joel Nothman и Lars Buitinck.

  • Добавить class_weight параметр для автоматического взвешивания образцов по частоте классов для ensemble.RandomForestClassifier, tree.DecisionTreeClassifier, ensemble.ExtraTreesClassifier и tree.ExtraTreeClassifier. С помощью Тревор Стивенс.

  • grid_search.RandomizedSearchCV теперь выполняет выборку без возвращения, если все параметры заданы в виде списков. Благодаря Андреас Мюллер.

  • Параллелизованный расчет metrics.pairwise_distances теперь поддерживается для scipy метрик и пользовательских callable-объектов. С помощью Joel Nothman.

  • Разрешить обучение и оценку всех алгоритмов кластеризации в pipeline.Pipeline. С помощью Андреас Мюллер.

  • Более надежное начальное заполнение и улучшенные сообщения об ошибках в cluster.MeanShift by Андреас Мюллер.

  • Сделать критерий остановки для mixture.GMM, mixture.DPGMM и mixture.VBGMM менее зависим от количества образцов путем порогового значения среднего изменения логарифмического правдоподобия вместо его суммы по всем образцам. Путем Hervé Bredin.

  • Результат manifold.spectral_embedding был сделан детерминированным путем изменения знака собственных векторов. С помощью Хасил Шарма.

  • Значительные улучшения производительности и использования памяти в preprocessing.PolynomialFeatures. С помощью Эрик Мартин.

  • Улучшения численной стабильности для preprocessing.StandardScaler и preprocessing.scale. С помощью Nicolas Goix

  • svm.SVC обученный на разреженных входных данных теперь реализует decision_function. Путем Роб Зинков и Андреас Мюллер.

  • cross_validation.train_test_split теперь сохраняет тип входных данных, вместо преобразования в массивы numpy.

Улучшения документации#

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

  • Метаоценщики теперь поддерживают утиную типизацию для наличия decision_function, predict_proba и другие методы. Это исправляет поведение grid_search.GridSearchCV, grid_search.RandomizedSearchCV, pipeline.Pipeline, feature_selection.RFE, feature_selection.RFECV при вложенности. Путём Joel Nothman

  • The scoring атрибут методов сеточного поиска и перекрёстной проверки больше не игнорируется, когда grid_search.GridSearchCV задается как базовый оценщик или базовый оценщик не имеет predict.

  • Функция hierarchical.ward_tree теперь возвращает дочерние элементы в том же порядке как для структурированной, так и для неструктурированной версий. Matteo Visconti di Oleggio Castello.

  • feature_selection.RFECV теперь корректно обрабатывает случаи, когда step не равен 1. С помощью Nikolay Mayorov

  • The decomposition.PCA теперь отменяет отбеливание в своем inverse_transform. Также, его components_ теперь всегда имеют единичную длину. Путем Michael Eickenberg.

  • Исправлена неполная загрузка набора данных, когда datasets.download_20newsgroups вызывается. С помощью Manoj Kumar.

  • Различные исправления в подпакете Gaussian processes от Vincent Dubourg и Jan Hendrik Metzen.

  • Вызов partial_fit с class_weight=='auto' выдает соответствующее сообщение об ошибке и предлагает обходное решение. По Дэнни Салливан.

  • RBFSampler с gamma=g ранее аппроксимировался rbf_kernel с gamma=g/2.; определение gamma теперь согласован, что может существенно изменить ваши результаты, если вы используете фиксированное значение. (Если вы проводили перекрестную проверку по gamma, это, вероятно, не имеет большого значения.) С помощью Dougal Sutherland.

  • Объект Pipeline делегирует classes_ атрибут к базовому оценщику. Это позволяет, например, выполнять бэггинг объекта конвейера. Arnaud Joly

  • neighbors.NearestCentroid теперь использует медиану в качестве центроида, когда метрика установлена в manhattan. Ранее использовалось среднее значение. Путем Manoj Kumar

  • Исправление проблем численной стабильности в linear_model.SGDClassifier и linear_model.SGDRegressor путем ограничения больших градиентов и обеспечения того, что масштабирование затухания весов всегда положительно (для больших значений l2-регуляризации и большой скорости обучения). Оливье Гризель

  • Когда compute_full_tree установлен в "auto", полное дерево строится, когда n_clusters высоко, и рано останавливается, когда n_clusters низко, в то время как поведение должно быть обратным в cluster.AgglomerativeClustering (и аналогичные). Это было исправлено Manoj Kumar

  • Исправлено ленивое центрирование данных в linear_model.enet_path и linear_model.lasso_path. Он был центрирован вокруг единицы. Он был изменён, чтобы быть центрированным вокруг начала координат. Путём Manoj Kumar

  • Исправление обработки предвычисленных матриц сходства в cluster.AgglomerativeClustering при использовании ограничений связности. С помощью Кэти Дэн

  • Корректно partial_fit обработка class_prior для sklearn.naive_bayes.MultinomialNB и sklearn.naive_bayes.BernoulliNB. С помощью Тревор Стивенс.

  • Исправлен сбой в metrics.precision_recall_fscore_support при использовании несортированных labels в многометочной настройке. Путём Андреас Мюллер.

  • Избегайте пропуска первого ближайшего соседа в методах radius_neighbors, kneighbors, kneighbors_graph и radius_neighbors_graph в sklearn.neighbors.NearestNeighbors и семейство, когда данные запроса не совпадают с обучающими данными. С помощью Manoj Kumar.

  • Исправление расчета логарифмической плотности в mixture.GMM с связанной ковариацией. С помощью Will Dawson

  • Исправлена ошибка масштабирования в feature_selection.SelectFdr где фактор n_features отсутствовал. Путём Эндрю Таллок

  • Исправлено деление на ноль в neighbors.KNeighborsRegressor и связанных классов при использовании взвешивания по расстоянию и наличии идентичных точек данных. С помощью Garret-R.

  • Исправлены ошибки округления с неположительно-определенными ковариационными матрицами в GMM. Автор Alexis Mignon.

  • Исправлена ошибка в вычислении условных вероятностей в naive_bayes.BernoulliNB. С помощью Ханна Валлах.

  • Сделать метод radius_neighbors of neighbors.NearestNeighbors возвращает образцы, лежащие на границе для algorithm='brute'. С помощью Yan Yi.

  • Изменить знак dual_coef_ of svm.SVC чтобы сделать его согласованным с документацией и decision_function. Автор Артем Соболев.

  • Исправлена обработка связей в isotonic.IsotonicRegression. Теперь мы используем взвешенное среднее целевых значений (вторичный метод). Путем Андреас Мюллер и Майкл Боммарито.

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

  • GridSearchCV и cross_val_score и другие мета-оценщики больше не преобразуют pandas DataFrames в массивы, позволяя операции, специфичные для DataFrame, в пользовательских оценщиках.

  • multiclass.fit_ovr, multiclass.predict_ovr, predict_proba_ovr, multiclass.fit_ovo, multiclass.predict_ovo, multiclass.fit_ecoc и multiclass.predict_ecoc устарели. Используйте базовые оценщики вместо них.

  • Оценщики ближайших соседей раньше принимали произвольные ключевые аргументы и передавали их своей метрике расстояния. Это больше не будет поддерживаться в scikit-learn 0.18; используйте metric_params аргумент вместо этого.

  • n_jobs параметр метода fit перенесен в конструктор

    класс LinearRegression.

  • The predict_proba метод multiclass.OneVsRestClassifier теперь возвращает две вероятности на образец в многоклассовом случае; это соответствует другим оценщикам и документации метода, но предыдущие версии случайно возвращали только положительную вероятность. Исправлено Уиллом Ламондом и Lars Buitinck.

  • Изменить значение по умолчанию для precompute в linear_model.ElasticNet и linear_model.Lasso в False. Установка precompute в “auto” оказалась медленнее, когда n_samples > n_features, поскольку вычисление матрицы Грама вычислительно затратно и перевешивает преимущество подгонки Грама только для одного альфа. precompute="auto" теперь устарел и будет удален в 0.18 Путем Manoj Kumar.

  • Предоставить positive опция в linear_model.enet_path и linear_model.enet_path что ограничивает коэффициенты положительными значениями. С помощью Manoj Kumar.

  • Пользователи теперь должны предоставлять явный average параметр для sklearn.metrics.f1_score, sklearn.metrics.fbeta_score, sklearn.metrics.recall_score и sklearn.metrics.precision_score при выполнении многоклассовой или многометочной (т.е. не бинарной) классификации. Благодаря Joel Nothman.

  • scoring параметр для перекрестной проверки теперь принимает 'f1_micro', 'f1_macro' или 'f1_weighted'. 'f1' теперь только для бинарной классификации. Аналогичные изменения применяются к 'precision' и 'recall'. Путем Joel Nothman.

  • The fit_intercept, normalize и return_models параметры в linear_model.enet_path и linear_model.lasso_path были удалены. Они были устаревшими с версии 0.14

  • Отныне все оценщики будут единообразно вызывать NotFittedError когда любой из predict подобные методы вызываются до обучения модели. По Рагхав РВ.

  • Валидация входных данных была переработана для более последовательной проверки входных данных. Функция check_arrays функция была заменена на check_array и check_X_y. С помощью Андреас Мюллер.

  • Разрешить X=None в методах radius_neighbors, kneighbors, kneighbors_graph и radius_neighbors_graph в sklearn.neighbors.NearestNeighbors и семейство. Если установлено в None, то для каждого образца это позволяет избежать установки самого образца как первого ближайшего соседа. По Manoj Kumar.

  • Добавить параметр include_self в neighbors.kneighbors_graph и neighbors.radius_neighbors_graph который должен быть явно установлен пользователем. Если установлено значение True, то сам образец считается как первый ближайший сосед.

  • thresh параметр устарел в пользу нового tol параметр в GMM, DPGMM и VBGMM. См. Enhancements раздел для подробностей. С помощью Hervé Bredin.

  • Оценщики будут обрабатывать входные данные с типом object как числовые, когда это возможно. По Андреас Мюллер

  • Оценщики теперь вызывают ValueError последовательно при обучении на пустых данных (менее 1 образца или менее 1 признака для 2D-ввода). Путем Оливье Гризель.

  • The shuffle опция linear_model.SGDClassifier, linear_model.SGDRegressor, linear_model.Perceptron, linear_model.PassiveAggressiveClassifier и linear_model.PassiveAggressiveRegressor теперь по умолчанию True.

  • cluster.DBSCAN теперь использует детерминированную инициализацию. random_state параметр устарел. По Erich Schubert.

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

A. Flaxman, Aaron Schumacher, Aaron Staple, abhishek thakur, Akshay, akshayah3, Aldrian Obaja, Alexander Fabisch, Alexandre Gramfort, Alexis Mignon, Anders Aagaard, Andreas Mueller, Andreas van Cranenburgh, Andrew Tulloch, Andrew Walker, Antony Lee, Arnaud Joly, banilo, Barmaley.exe, Ben Davies, Benedikt Koehler, bhsu, Boris Feld, Borja Ayerdi, Boyuan Deng, Brent Pedersen, Brian Wignall, Brooke Osborn, Calvin Giles, Cathy Deng, Celeo, cgohlke, chebee7i, Christian Stade-Schuldt, Christof Angermueller, Chyi-Kwei Yau, CJ Carey, Clemens Brunner, Daiki Aminaka, Dan Blanchard, danfrankj, Danny Sullivan, David Fletcher, Dmitrijs Milajevs, Dougal J. Sutherland, Erich Schubert, Fabian Pedregosa, Florian Wilhelm, floydsoft, Félix-Antoine Fortin, Gael Varoquaux, Garrett-R, Gilles Louppe, gpassino, gwulfs, Hampus Bengtsson, Hamzeh Alsalhi, Hanna Wallach, Harry Mavroforakis, Hasil Sharma, Helder, Herve Bredin, Hsiang-Fu Yu, Hugues SALAMIN, Ian Gilmore, Ilambharathi Kanniah, Imran Haque, isms, Jake VanderPlas, Jan Dlabal, Jan Hendrik Metzen, Jatin Shah, Javier López Peña, jdcaballero, Jean Kossaifi, Jeff Hammerbacher, Joel Nothman, Jonathan Helmus, Joseph, Kaicheng Zhang, Kevin Markham, Kyle Beauchamp, Kyle Kastner, Lagacherie Matthieu, Lars Buitinck, Laurent Direr, leepei, Loic Esteve, Luis Pedro Coelho, Lukas Michelbacher, maheshakya, Manoj Kumar, Manuel, Mario Michael Krell, Martin, Martin Billinger, Martin Ku, Mateusz Susik, Mathieu Blondel, Matt Pico, Matt Terry, Matteo Visconti dOC, Matti Lyra, Max Linke, Mehdi Cherti, Michael Bommarito, Michael Eickenberg, Michal Romaniuk, MLG, mr.Shu, Nelle Varoquaux, Nicola Montecchio, Nicolas, Nikolay Mayorov, Noel Dawe, Okal Billy, Olivier Grisel, Óscar Nájera, Paolo Puggioni, Peter Prettenhofer, Pratap Vardhan, pvnguyen, queqichao, Rafael Carrascosa, Raghav R V, Rahiel Kasim, Randall Mason, Rob Zinkov, Robert Bradshaw, Saket Choudhary, Sam Nicholls, Samuel Charron, Saurabh Jha, sethdandridge, sinhrks, snuderl, Stefan Otte, Stefan van der Walt, Steve Tjoa, swu, Sylvain Zimmer, tejesh95, terrycojones, Thomas Delteil, Thomas Unterthiner, Tomas Kazmar, trevorstephens, tttthomasssss, Tzu-Ming Kuo, ugurcaliskan, ugurthemaster, Vinayak Mehta, Vincent Dubourg, Vjacheslav Murashkin, Vlad Niculae, wadawson, Wei Xue, Will Lamond, Wu Jiang, x0l, Xinfan Meng, Yan Yi, Yu-Chin