Версия 0.16#
Версия 0.16.1#
14 апреля 2015 г.
Журнал изменений#
Исправления ошибок#
Разрешить входные данные больше, чем
block_sizeвcovariance.LedoitWolfby Андреас Мюллер.Исправлена ошибка в
isotonic.IsotonicRegressionдедупликация, которая вызывала нестабильные результаты вcalibration.CalibratedClassifierCVby Ян Хендрик Метцен.Исправлена сортировка меток в
preprocessing.label_binarizeМайклом Хейлманом.Исправлены несколько проблем стабильности и сходимости в
cross_decomposition.CCAиcross_decomposition.PLSCanonicalby Андреас МюллерИсправлена ошибка в
cluster.KMeansкогдаprecompute_distances=Falseна данных с порядком Fortran.Исправление регрессии скорости в
ensemble.RandomForestClassifier’spredictиpredict_probaby Андреас Мюллер.Исправление регрессии, где
utils.shuffleпреобразовал списки и датафреймы в массивы, с помощью Оливье Гризель
Версия 0.16#
26 марта 2015
Основные моменты#
Улучшения скорости (особенно в
cluster.DBSCAN), сниженные требования к памяти, исправления ошибок и улучшенные настройки по умолчанию.Мультиномиальная логистическая регрессия и алгоритм пути в
linear_model.LogisticRegressionCV.Обучение PCA вне памяти через
decomposition.IncrementalPCA.Калибровка вероятности классификаторов с использованием
calibration.CalibratedClassifierCV.cluster.Birchметод кластеризации для больших наборов данных.Масштабируемый поиск приближённых ближайших соседей с лесами локально-чувствительного хеширования в
neighbors.LSHForest.Улучшенные сообщения об ошибках и лучшая валидация при использовании некорректных входных данных.
Более устойчивая интеграция с датафреймами pandas.
Журнал изменений#
Новые возможности#
Новый
neighbors.LSHForestреализует локально-чувствительное хеширование для приближенного поиска ближайших соседей. С помощью Maheshakya Wijewardena.Добавлен
svm.LinearSVR. Этот класс использует реализацию liblinear для регрессии опорных векторов, которая намного быстрее для больших размеров выборки, чемsvm.SVRс линейным ядром. С помощью Fabian Pedregosa и Цян Ло.Инкрементное обучение для
GaussianNB.Добавлен
sample_weightподдержка дляdummy.DummyClassifierиdummy.DummyRegressor. С помощью Arnaud Joly.Добавлен
metrics.label_ranking_average_precision_scoreметрик. По Arnaud Joly.Добавьте
metrics.coverage_errorметрики. С помощью Arnaud Joly.Добавлен
linear_model.LogisticRegressionCV. С помощью Manoj Kumar, Fabian Pedregosa, Гаэль Варокво и Александр Грамфор.Добавлен
warm_startпараметр конструктора, чтобы сделать возможным для любой обученной модели леса наращивать дополнительные деревья инкрементально. Путем Laurent Direr.Добавлен
sample_weightподдержка дляensemble.GradientBoostingClassifierиensemble.GradientBoostingRegressor. С помощью Peter Prettenhofer.Добавлен
decomposition.IncrementalPCA, реализация алгоритма PCA, поддерживающая обучение вне ядра сpartial_fitметод. С помощью Кайл Кастнер.Усреднённый SGD для
SGDClassifierиSGDRegressorПо Дэнни Салливан.Добавлен
cross_val_predictфункция, которая вычисляет кросс-валидационные оценки. С помощью Luis Pedro CoelhoДобавлен
linear_model.TheilSenRegressor, устойчивый оценщик на основе обобщенной медианы. С помощью Florian Wilhelm.Добавлен
metrics.median_absolute_error, надежная метрика. По Гаэль Варокво и Florian Wilhelm.Добавить
cluster.Birch, алгоритм онлайн-кластеризации. С помощью Manoj Kumar, Александр Грамфор и Joel Nothman.Добавлена поддержка сжатия в
discriminant_analysis.LinearDiscriminantAnalysisиспользуя два новых решателя. С помощью Clemens Brunner и Мартин Биллингер.Добавлен
kernel_ridge.KernelRidge, реализация ядерной гребневой регрессии. С помощью Мати́ Блондель и Ян Хендрик Метцен.Все решатели в
linear_model.Ridgeтеперь поддерживаетsample_weight. Путем Мати́ Блондель.Добавлен
cross_validation.PredefinedSplitкросс-валидация для фиксированных предоставленных пользователем фолдов кросс-валидации. С помощью Thomas Unterthiner.Добавлен
calibration.CalibratedClassifierCV, подход для калибровки предсказанных вероятностей классификатора. С помощью Александр Грамфор, Ян Хендрик Метцен, Мати́ Блондель и Balazs Kegl.
Улучшения#
Добавить опцию
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.MeanShiftby Андреас Мюллер.Сделать критерий остановки для
mixture.GMM,mixture.DPGMMиmixture.VBGMMменее зависим от количества образцов путем порогового значения среднего изменения логарифмического правдоподобия вместо его суммы по всем образцам. Путем Hervé Bredin.Результат
manifold.spectral_embeddingбыл сделан детерминированным путем изменения знака собственных векторов. С помощью Хасил Шарма.Значительные улучшения производительности и использования памяти в
preprocessing.PolynomialFeatures. С помощью Эрик Мартин.Улучшения численной стабильности для
preprocessing.StandardScalerиpreprocessing.scale. С помощью Nicolas Goixsvm.SVCобученный на разреженных входных данных теперь реализуетdecision_function. Путем Роб Зинков и Андреас Мюллер.cross_validation.train_test_splitтеперь сохраняет тип входных данных, вместо преобразования в массивы numpy.
Улучшения документации#
Добавлен пример использования
pipeline.FeatureUnionдля разнородных входных данных. По Matt TerryДокументация по скорерам была улучшена, чтобы подчеркнуть обработку функций потерь. С помощью Мэтт Пико.
Теперь отмечено расхождение между выводом liblinear и обёртками scikit-learn. По Manoj Kumar.
Улучшена генерация документации: примеры, ссылающиеся на класс или функцию, теперь отображаются в галерее на странице API-справки класса/функции. От Joel Nothman.
Более явная документация генераторов выборок и преобразования данных. С помощью Joel Nothman.
sklearn.neighbors.BallTreeиsklearn.neighbors.KDTreeиспользовался для указания на пустые страницы, утверждая, что они являются псевдонимами BinaryTree. Это исправлено, чтобы показывать правильную документацию класса. Автор Manoj Kumar.Добавлены графики силуэтов для анализа кластеризации KMeans с использованием
metrics.silhouette_samplesиmetrics.silhouette_score. См. Выбор количества кластеров с помощью анализа силуэта для кластеризации KMeans
Исправления ошибок#
Метаоценщики теперь поддерживают утиную типизацию для наличия
decision_function,predict_probaи другие методы. Это исправляет поведениеgrid_search.GridSearchCV,grid_search.RandomizedSearchCV,pipeline.Pipeline,feature_selection.RFE,feature_selection.RFECVпри вложенности. Путём Joel NothmanThe
scoringатрибут методов сеточного поиска и перекрёстной проверки больше не игнорируется, когдаgrid_search.GridSearchCVзадается как базовый оценщик или базовый оценщик не имеет predict.Функция
hierarchical.ward_treeтеперь возвращает дочерние элементы в том же порядке как для структурированной, так и для неструктурированной версий. Matteo Visconti di Oleggio Castello.feature_selection.RFECVтеперь корректно обрабатывает случаи, когдаstepне равен 1. С помощью Nikolay MayorovThe
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 Jolyneighbors.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_neighborsofneighbors.NearestNeighborsвозвращает образцы, лежащие на границе дляalgorithm='brute'. С помощью Yan Yi.Изменить знак
dual_coef_ofsvm.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