Версия 0.17#

Версия 0.17.1#

18 февраля 2016

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

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

  • Обновить встроенную joblib до версии 0.9.4, которая исправляет важную ошибку в joblib.Parallel что может незаметно привести к неверным результатам при работе с наборами данных размером более 1 МБ: joblib/joblib

  • Исправлено чтение дампов Bunch, сгенерированных с scikit-learn версии <= 0.16. Это может затронуть пользователей, которые уже загрузили набор данных с scikit-learn 0.16 и загружают его с scikit-learn 0.17. См. #6196 для того, как это повлияло на datasets.fetch_20newsgroups. С помощью Лоик Эстеве.

  • Исправлена ошибка, которая мешала использовать оценку ROC AUC для выполнения поиска по сетке на нескольких CPU / ядрах на больших массивах. См. #6147 По Оливье Гризель.

  • Исправлена ошибка, которая мешала правильно установить presort параметр в ensemble.GradientBoostingRegressor. См. #5857 Автор: Эндрю МакКаллох.

  • Исправлена ошибка joblib при оценке перплексии decomposition.LatentDirichletAllocation модель. См. #6258 Автор: Chyi-Kwei Yau.

Версия 0.17#

5 ноября 2015

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

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

  • Все классы Scaler, кроме preprocessing.RobustScaler может быть обучен онлайн, вызывая partial_fit. С помощью Джорджио Патрини.

  • Новый класс ensemble.VotingClassifier реализует ансамблевый классификатор по принципу "большинства голосов" / "мягкого голосования" для объединения оценщиков классификации. С помощью Sebastian Raschka.

  • Новый класс preprocessing.RobustScaler предоставляет альтернативу preprocessing.StandardScaler для покомпонентного центрирования и нормализации диапазона, устойчивых к выбросам. Путем Thomas Unterthiner.

  • Новый класс preprocessing.MaxAbsScaler предоставляет альтернативу preprocessing.MinMaxScaler для покомпонентной нормализации диапазона, когда данные уже центрированы или разрежены. С помощью Thomas Unterthiner.

  • Новый класс preprocessing.FunctionTransformer превращает Python функцию в Pipeline-совместимый объект-трансформер. Автор: Joe Jevnik.

  • Новые классы cross_validation.LabelKFold и cross_validation.LabelShuffleSplit генерировать обучающие-тестовые разбиения, соответственно аналогично cross_validation.KFold и cross_validation.ShuffleSplit, за исключением того, что свертки обусловлены массивом меток. Путем Брайан МакФи, Жан Коссаифи и Gilles Louppe.

  • decomposition.LatentDirichletAllocation реализует тематическую модель Latent Dirichlet Allocation с онлайн-вариационным выводом. По Chyi-Kwei Yau, с кодом на основе реализации Matt Hoffman. (#3659)

  • Новый решатель sag реализует стохастический градиентный спуск со средним градиентом и доступен в обоих linear_model.LogisticRegression и linear_model.Ridge. Этот решатель очень эффективен для больших наборов данных. С помощью Дэнни Салливан и Tom Dupre la Tour. (#4738)

  • Новый решатель cd реализует Coordinate Descent в decomposition.NMF. Предыдущий решатель на основе проектированного градиента все еще доступен при установке нового параметра solver to pg, но устарел и будет удален в 0.19 вместе с decomposition.ProjectedGradientNMF и параметры sparseness, eta, beta и nls_max_iter. Новые параметры alpha и l1_ratio управление L1 и L2 регуляризацией, и shuffle добавляет шаг перемешивания в cd решатель. Путем Tom Dupre la Tour и Мати́ Блондель.

Улучшения#

  • manifold.TSNE теперь поддерживает приближенную оптимизацию с помощью метода Барнса-Хата, что приводит к значительно более быстрому обучению. Автор: Кристофер Эрик Муди. (#4025)

  • cluster.MeanShift теперь поддерживает параллельное выполнение, как реализовано в mean_shift функция. С помощью Мартино Сорбаро.

  • naive_bayes.GaussianNB теперь поддерживает обучение с sample_weight. Путем Ян Хендрик Метцен.

  • dummy.DummyClassifier теперь поддерживает стратегию предварительного обучения. С помощью Arnaud Joly.

  • Добавлен fit_predict метод для mixture.GMM и подклассы. Путем Cory Lorenz.

  • Добавлен metrics.label_ranking_loss метрика. По Arnaud Joly.

  • Добавлен metrics.cohen_kappa_score метрика.

  • Добавлен warm_start параметр конструктора для ансамблевых моделей бэггинга, чтобы увеличить размер ансамбля. Путем Tim Head.

  • Добавлена возможность использовать метрики регрессии с несколькими выходами без усреднения. Авторы: Константин Шмельков и Michael Eickenberg.

  • Добавлен stratify опция для cross_validation.train_test_split для стратифицированного разделения. Автор: Miroslav Batchkarov.

  • The tree.export_graphviz функция теперь поддерживает эстетические улучшения для tree.DecisionTreeClassifier и tree.DecisionTreeRegressor, включая опции окрашивания узлов по их преобладающему классу или неопределенности, отображения имен переменных и использования пропорций узлов вместо исходных подсчетов выборок. С помощью Тревор Стивенс.

  • Улучшенная скорость newton-cg solver в linear_model.LogisticRegression, избегая вычисления потерь. Мати́ Блондель и Tom Dupre la Tour.

  • The class_weight="auto" эвристики в классификаторах, поддерживающих class_weight был устаревшим и заменен на class_weight="balanced" опция, которая имеет более простую формулу и интерпретацию. По Ханна Валлах и Андреас Мюллер.

  • Добавить class_weight параметр для автоматического взвешивания образцов по частоте классов для linear_model.PassiveAggressiveClassifier. С помощью Тревор Стивенс.

  • Добавлены обратные ссылки со страниц справочника API на руководство пользователя. Автор: Андреас Мюллер.

  • The labels параметр для sklearn.metrics.f1_score, sklearn.metrics.fbeta_score, sklearn.metrics.recall_score и sklearn.metrics.precision_score была расширена. Теперь можно игнорировать одну или несколько меток, например, когда многоклассовая задача имеет основной класс для игнорирования. Путем Joel Nothman.

  • Добавить sample_weight поддержка для linear_model.RidgeClassifier. Путем Тревор Стивенс.

  • Предоставить возможность разреженного вывода из sklearn.metrics.pairwise.cosine_similarity. С помощью Джайдев Дешпанде.

  • Добавить preprocessing.minmax_scale для предоставления функционального интерфейса для preprocessing.MinMaxScaler. С помощью Thomas Unterthiner.

  • dump_svmlight_file now handles multi-label datasets. By Chih-Wei Chang.

  • Загрузчик набора данных RCV1 (sklearn.datasets.fetch_rcv1). С помощью Tom Dupre la Tour.

  • Классический двухклассовый набор данных "Wisconsin Breast Cancer" теперь включен в scikit-learn, доступен с datasets.load_breast_cancer.

  • Обновлено до joblib 0.9.3 для использования нового автоматического группирования коротких задач. Это позволяет scikit-learn использовать параллелизм, когда много очень коротких задач выполняется параллельно, например, с помощью grid_search.GridSearchCV мета-оценщик с n_jobs > 1 используется с большой сеткой параметров на небольшом наборе данных. С помощью Vlad Niculae, Оливье Гризель и Лоик Эстеве.

  • Для получения более подробной информации об изменениях в joblib 0.9.3 см. примечания к выпуску: joblib/joblib

  • Улучшенная скорость (в 3 раза за итерацию) для decomposition.DictLearning с методом координатного спуска из linear_model.Lasso. С помощью Артур Менш.

  • Параллельная обработка (с использованием потоков) для запросов ближайших соседей (с использованием ball-tree) от Николая Майорова.

  • Разрешить datasets.make_multilabel_classification выводить разреженную y. Автор: Kashif Rasul.

  • cluster.DBSCAN теперь принимает разреженную матрицу предвычисленных расстояний, позволяя эффективное по памяти предвычисление расстояний. Автор Joel Nothman.

  • tree.DecisionTreeClassifier теперь предоставляет apply метод для получения индексов листьев, в которые предсказываются образцы. С помощью Daniel Galvez и Gilles Louppe.

  • Ускорение регрессоров дерева решений, случайных лесов, экстра-деревьев и градиентного бустинга за счет вычисления прокси-величины улучшения нечистоты во время роста дерева. Эта прокси-величина такова, что разбиение, максимизирующее это значение, также максимизирует улучшение нечистоты. Путем Arnaud Joly, Jacob Schreiber и Gilles Louppe.

  • Ускорение методов на основе деревьев за счет уменьшения количества вычислений, необходимых при вычислении меры нечистоты с учетом линейной зависимости вычисляемых статистик. Эффект особенно заметен с дополнительными деревьями и на наборах данных с категориальными или разреженными признаками. Путем Arnaud Joly.

  • ensemble.GradientBoostingRegressor и ensemble.GradientBoostingClassifier теперь предоставляют apply метод для получения индексов листьев, в которые попадает каждый образец при каждой попытке. По Jacob Schreiber.

  • Добавить sample_weight поддержка для linear_model.LinearRegression. Автор: Сонни Ху. (#4881)

  • Добавить n_iter_without_progress to manifold.TSNE для управления критерием остановки. Автор: Санти Вильяльба. (#5186)

  • Добавлен необязательный параметр random_state в linear_model.Ridge , чтобы установить начальное значение псевдослучайного генератора, используемого в sag решатель. По Tom Dupre la Tour.

  • Добавлен необязательный параметр warm_start в linear_model.LogisticRegressionЕсли установлено значение True, солверы lbfgs, newton-cg и sag будет инициализирован с коэффициентами, вычисленными в предыдущем обучении. С помощью Tom Dupre la Tour.

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

  • Добавлен необязательный параметр presort to ensemble.GradientBoostingRegressor и ensemble.GradientBoostingClassifier, сохраняя поведение по умолчанию таким же. Это позволяет градиентным бустерам отключать предварительную сортировку при построении глубоких деревьев или использовании разреженных данных. С помощью Jacob Schreiber.

  • Изменено metrics.roc_curve удалить ненужные пороги по умолчанию. С помощью TransformedTargetRegressor.

  • Добавлен feature_selection.SelectFromModel мета-трансформер, который может использоваться вместе с оценщиками, имеющими coef_ или feature_importances_ атрибут для выбора важных признаков входных данных. С помощью Maheshakya Wijewardena, Joel Nothman и Manoj Kumar.

  • Добавлен metrics.pairwise.laplacian_kernel. По Clyde Fare.

  • covariance.GraphLasso позволяет отдельно контролировать критерий сходимости для подзадачи Elastic-Net через enet_tol параметр.

  • Улучшенная подробность вывода в decomposition.DictionaryLearning.

  • ensemble.RandomForestClassifier и ensemble.RandomForestRegressor больше не хранит явно выборки, используемые в бэггинге, что приводит к значительно уменьшенному объему памяти для хранения моделей случайного леса.

  • Добавлен positive опция для linear_model.Lars и linear_model.lars_path для принудительного положительного значения коэффициентов. (#5131)

  • Добавлен X_norm_squared параметр для metrics.pairwise.euclidean_distances для предоставления предвычисленных квадратов норм для X.

  • Добавлен fit_predict метод для pipeline.Pipeline.

  • Добавлен preprocessing.minmax_scale функция.

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

  • Fixed non-determinism in dummy.DummyClassifier с разреженным многометочным выводом. С помощью Андреас Мюллер.

  • Исправлена форма вывода linear_model.RANSACRegressor to (n_samples, ). С помощью Андреас Мюллер.

  • Исправлена ошибка в decomposition.DictLearning когда n_jobs < 0. С помощью Андреас Мюллер.

  • Исправлена ошибка, где grid_search.RandomizedSearchCV может потреблять много памяти для больших дискретных сеток. С помощью Joel Nothman.

  • Исправлена ошибка в linear_model.LogisticRegressionCV где penalty игнорировался в окончательной подгонке. Автор: Manoj Kumar.

  • Исправлена ошибка в ensemble.forest.ForestClassifier при вычислении oob_score и X является sparse.csc_matrix. Путём Ankur Ankan.

  • Все регрессоры теперь последовательно обрабатывают и предупреждают при получении y является числом с плавающей запятой. См. (n_samples, 1). С помощью Андреас Мюллер и Henry Lin. (#5431)

  • Исправление в cluster.KMeans перераспределение кластеров для разреженного ввода с помощью Lars Buitinck.

  • Исправлена ошибка в discriminant_analysis.LinearDiscriminantAnalysis что может вызывать асимметричные ковариационные матрицы при использовании сжатия. Путем Martin Billinger.

  • Исправлено cross_validation.cross_val_predict для оценщиков с разреженными предсказаниями. Автор: Будда Пракаш.

  • Исправлен predict_proba метод linear_model.LogisticRegression использовать soft-max вместо нормализации one-vs-rest. При Manoj Kumar. (#5182)

  • Исправлен partial_fit метод linear_model.SGDClassifier при вызове с average=True. С помощью Эндрю Лэмб. (#5282)

  • Загрузчики наборов данных используют разные имена файлов в Python 2 и Python 3, чтобы избежать проблем совместимости при пиклинге. Путем Оливье Гризель. (#5355)

  • Исправлена ошибка в naive_bayes.GaussianNB что привело к зависимости результатов классификации от масштаба. Путем Jake Vanderplas.

  • Временно исправлено linear_model.Ridge, что было некорректно при подгонке пересечения в случае разреженных данных. Исправление автоматически меняет решатель на 'sag' в этом случае. #5360 by Tom Dupre la Tour.

  • Исправлена ошибка производительности в decomposition.RandomizedPCA на данных с большим количеством признаков и меньшим количеством образцов. (#4478) По Андреас Мюллер, Лоик Эстеве и Джорджио Патрини.

  • Исправлена ошибка в cross_decomposition.PLS что приводило к нестабильному и платформозависимому выводу, а также сбою на fit_transform. Путем Артур Менш.

  • Исправления в Bunch класс, используемый для хранения наборов данных.

  • Исправлено ensemble.plot_partial_dependence игнорируя percentiles параметр.

  • Предоставление set как словарь в CountVectorizer больше не приводит к несогласованным результатам при сериализации.

  • Исправлены условия, когда предвычисленная матрица Грама должна быть пересчитана в linear_model.LinearRegression, linear_model.OrthogonalMatchingPursuit, linear_model.Lasso и linear_model.ElasticNet.

  • Исправлена несогласованная организация памяти в решателе координатного спуска, которая влияла на linear_model.DictionaryLearning и covariance.GraphLasso. (#5337) По Оливье Гризель.

  • manifold.LocallyLinearEmbedding больше не игнорирует reg параметр.

  • Оценщики ближайших соседей с пользовательскими метриками расстояния теперь могут быть сериализованы. (#4362)

  • Исправлена ошибка в pipeline.FeatureUnion где transformer_weights не обрабатывались должным образом при выполнении поиска по сетке.

  • Исправлена ошибка в linear_model.LogisticRegression и linear_model.LogisticRegressionCV при использовании class_weight='balanced' или class_weight='auto'. Путем Tom Dupre la Tour.

  • Исправлена ошибка #5495 при выполнении OVR(SVC(decision_function_shape=”ovr”)). Исправлено Элвис Доматоб.

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

  • Атрибут data_min, data_max и data_range в preprocessing.MinMaxScaler устарели и не будут доступны с версии 0.19. Вместо этого класс теперь предоставляет data_min_, data_max_ и data_range_. С помощью Джорджио Патрини.

  • Все классы Scaler теперь имеют scale_ атрибут, покомпонентное масштабирование, применяемое их transform методы. Старый атрибут std_ в preprocessing.StandardScaler устарел и заменен на scale_; он не будет доступен в 0.19. К Джорджио Патрини.

  • svm.SVC и svm.NuSVC теперь имеют decision_function_shape параметр, чтобы сделать их функцию принятия решений формы (n_samples, n_classes) установкой decision_function_shape='ovr'. Это будет поведением по умолчанию, начиная с версии 0.19. По Андреас Мюллер.

  • Передача одномерных массивов данных в качестве входных данных для оценщиков теперь устарела, так как это вызывало путаницу в том, как элементы массива должны интерпретироваться как признаки или как выборки. Теперь все массивы данных должны иметь явную форму (n_samples, n_features). Путем Вайгнеш Биродкар.

  • lda.LDA и qda.QDA были перемещены в discriminant_analysis.LinearDiscriminantAnalysis и discriminant_analysis.QuadraticDiscriminantAnalysis.

  • The store_covariance и tol параметры были перемещены из метода fit в конструктор в discriminant_analysis.LinearDiscriminantAnalysis и store_covariances и tol параметры были перемещены из метода fit в конструктор в discriminant_analysis.QuadraticDiscriminantAnalysis.

  • Модели, наследующие от _LearntSelectorMixin больше не будет поддерживать методы transform. (т.е., RandomForests, GradientBoosting, LogisticRegression, DecisionTrees, SVMs и модели, связанные с SGD). Оберните эти модели в метапреобразователь feature_selection.SelectFromModel чтобы удалить признаки (согласно coefs_ или feature_importances_), которые находятся ниже определенного порогового значения.

  • cluster.KMeans повторно запускает назначение кластеров в случае отсутствия сходимости, чтобы обеспечить согласованность predict(X) и labels_. С помощью Вайгнеш Биродкар.

  • Модели классификатора и регрессора теперь помечены как таковые с использованием _estimator_type атрибут.

  • Итераторы перекрестной проверки всегда предоставляют индексы для обучающей и тестовой выборок, а не булевы маски.

  • The decision_function на всех регрессорах была устаревшей и будет удалена в 0.19. Используйте predict вместо этого.

  • datasets.load_lfw_pairs устарел и будет удален в версии 0.19. Используйте datasets.fetch_lfw_pairs вместо этого.

  • Устаревший hmm модуль был удалён.

  • Устаревший Bootstrap итератор перекрестной проверки был удален.

  • Устаревший Ward и WardAgglomerative классы были удалены. Используйте cluster.AgglomerativeClustering вместо этого.

  • cross_validation.check_cv теперь является публичной функцией.

  • Свойство residues_ of linear_model.LinearRegression устарел и будет удалён в версии 0.19.

  • Устаревший n_jobs параметр linear_model.LinearRegression был перемещен в конструктор.

  • Удалены устаревшие class_weight параметр из linear_model.SGDClassifier’s fit метод. Используйте вместо этого параметр конструктора.

  • Устаревшая поддержка формата мультиметок в виде последовательности последовательностей (или списка списков) была удалена. Для преобразования в поддерживаемый формат двоичной индикаторной матрицы и обратно используйте MultiLabelBinarizer.

  • Поведение при вызове inverse_transform метод Pipeline.pipeline изменится в версии 0.19. Он больше не будет преобразовывать одномерный ввод в двумерный.

  • Устаревшие атрибуты indicator_matrix_, multilabel_ и classes_ of preprocessing.LabelBinarizer были удалены.

  • Используя gamma=0 в svm.SVC и svm.SVR для автоматической установки gamma в 1. / n_features устарел и будет удален в версии 0.19. Используйте gamma="auto" вместо этого.

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

Aaron Schumacher, Adithya Ganesh, akitty, Alexandre Gramfort, Alexey Grigorev, Ali Baharev, Allen Riddell, Ando Saabas, Andreas Mueller, Andrew Lamb, Anish Shah, Ankur Ankan, Anthony Erlinger, Ari Rouvinen, Arnaud Joly, Arnaud Rachez, Arthur Mensch, banilo, Barmaley.exe, benjaminirving, Boyuan Deng, Brett Naul, Brian McFee, Buddha Prakash, Chi Zhang, Chih-Wei Chang, Christof Angermueller, Christoph Gohlke, Christophe Bourguignat, Christopher Erick Moody, Chyi-Kwei Yau, Cindy Sridharan, CJ Carey, Clyde-fare, Cory Lorenz, Dan Blanchard, Daniel Galvez, Daniel Kronovet, Danny Sullivan, Data1010, David, David D Lowe, David Dotson, djipey, Dmitry Spikhalskiy, Donne Martin, Dougal J. Sutherland, Dougal Sutherland, edson duarte, Eduardo Caro, Eric Larson, Eric Martin, Erich Schubert, Fernando Carrillo, Frank C. Eckert, Frank Zalkow, Gael Varoquaux, Ganiev Ibraim, Gilles Louppe, Giorgio Patrini, giorgiop, Graham Clenaghan, Gryllos Prokopis, gwulfs, Henry Lin, Hsuan-Tien Lin, Immanuel Bayer, Ishank Gulati, Jack Martin, Jacob Schreiber, Jaidev Deshpande, Jake Vanderplas, Jan Hendrik Metzen, Jean Kossaifi, Jeffrey04, Jeremy, jfraj, Jiali Mei, Joe Jevnik, Joel Nothman, John Kirkham, John Wittenauer, Joseph, Joshua Loyal, Jungkook Park, KamalakerDadi, Kashif Rasul, Keith Goodman, Kian Ho, Konstantin Shmelkov, Kyler Brown, Lars Buitinck, Lilian Besson, Loic Esteve, Louis Tiao, maheshakya, Maheshakya Wijewardena, Manoj Kumar, MarkTab marktab.net, Martin Ku, Martin Spacek, MartinBpr, martinosorb, MaryanMorel, Masafumi Oyamada, Mathieu Blondel, Matt Krump, Matti Lyra, Maxim Kolganov, mbillinger, mhg, Michael Heilman, Michael Patterson, Miroslav Batchkarov, Nelle Varoquaux, Nicolas, Nikolay Mayorov, Olivier Grisel, Omer Katz, Óscar Nájera, Pauli Virtanen, Peter Fischer, Peter Prettenhofer, Phil Roth, pianomania, Preston Parry, Raghav RV, Rob Zinkov, Robert Layton, Rohan Ramanath, Saket Choudhary, Sam Zhang, santi, saurabh.bansod, scls19fr, Sebastian Raschka, Sebastian Saeger, Shivan Sornarajah, SimonPL, sinhrks, Skipper Seabold, Sonny Hu, sseg, Stephen Hoover, Steven De Gryze, Steven Seguin, Theodore Vasiloudis, Thomas Unterthiner, Tiago Freitas Pereira, Tian Wang, Tim Head, Timothy Hopper, tokoroten, Tom Dupré la Tour, Trevor Stephens, Valentin Stolbunov, Vighnesh Birodkar, Vinayak Mehta, Vincent, Vincent Michel, vstolbunov, wangz10, Wei Xue, Yucheng Low, Yury Zhauniarovich, Zac Stewart, zhai_pro, Zichen Wang