Версия 0.24#

Для краткого описания основных особенностей выпуска, пожалуйста, обратитесь к Основные нововведения scikit-learn 0.24.

Легенда для списков изменений

  • Основная функция что-то большое, что вы не могли сделать раньше.

  • Функция что-то, что вы не могли делать раньше.

  • Эффективность существующий признак теперь может не требовать столько вычислений или памяти.

  • Улучшение различные мелкие улучшения.

  • Исправление то, что ранее не работало, как задокументировано – или согласно разумным ожиданиям – теперь должно работать.

  • Изменение API вам потребуется изменить свой код, чтобы добиться того же эффекта в будущем; или функция будет удалена в будущем.

Версия 0.24.2#

Апрель 2021

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

sklearn.compose#

  • Исправление compose.ColumnTransformer.get_feature_names не вызывает get_feature_names на трансформерах с пустым выбором столбцов. #19579 by Томас Фан.

sklearn.cross_decomposition#

sklearn.decomposition#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.gaussian_process#

  • Исправление Избегайте явного формирования обратной ковариационной матрицы в gaussian_process.GaussianProcessRegressor когда установлен на вывод стандартного отклонения. С определёнными ковариационными матрицами это обратное значение нестабильно для явного вычисления. Вызов решателя Холецкого смягчает эту проблему в вычислениях. #19939 by Ian Halvic.

  • Исправление Избегайте деления на ноль при масштабировании постоянной цели в gaussian_process.GaussianProcessRegressor. Это было связано с нулевым стандартным отклонением. Теперь такой случай обнаруживается, и стандартное отклонение устанавливается равным 1, избегая деления на ноль и, следовательно, появления значений NaN в нормализованной целевой переменной. #19703 by @sobkevich, Boris Villazón-Terrazas и Александр Фонари.

sklearn.linear_model#

sklearn.metrics#

  • Исправление metrics.top_k_accuracy_score теперь поддерживает многоклассовые задачи, где только два класса появляются в y_true и все классы указаны в labels. #19721 by Joris Clement.

sklearn.model_selection#

sklearn.multioutput#

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.tree#

  • Исправление Исправлена ошибка в fit of tree.BaseDecisionTree который вызывал ошибки сегментации при определенных условиях. fit теперь выполняет глубокое копирование Criterion объект для предотвращения совместных параллельных доступов. #19580 by Samuel Brice и Alex Adamson и Wil Yegelwel.

sklearn.utils#

Версия 0.24.1#

Январь 2021

Упаковка#

Версия 0.24.0 scikit-learn wheels не работала с MacOS <1.15 из-за libomp. Версия libomp , использованная для сборки колес, была слишком новой для старых версий macOS. Эта проблема была исправлена для колес scikit-learn 0.24.1. Колеса scikit-learn, опубликованные на PyPI.org, теперь официально поддерживают macOS 10.13 и новее.

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

sklearn.metrics#

sklearn.semi_supervised#

Версия 0.24.0#

Декабрь 2020

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

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

  • Исправление decomposition.KernelPCA поведение теперь более согласовано между 32-битными и 64-битными данными, когда ядро имеет малые положительные собственные значения.

  • Исправление decomposition.TruncatedSVD становится детерминированным, предоставляя random_state параметр.

  • Исправление linear_model.Perceptron когда penalty='elasticnet'.

  • Исправление Изменение в процедурах случайной выборки для инициализации центров cluster.KMeans.

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

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

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

sklearn.base#

sklearn.calibration#

  • Эффективность calibration.CalibratedClassifierCV.fit теперь поддерживает параллелизацию через joblib.Parallel используя аргумент n_jobs. #17107 by Julien Jerphanion.

  • Улучшение Разрешить calibration.CalibratedClassifierCV использовать с prefit pipeline.Pipeline где данные не X не является массивоподобным, разреженной матрицей или датафреймом в начале. #17546 by Lucy Liu.

  • Улучшение Добавить ensemble параметр для calibration.CalibratedClassifierCV, что позволяет реализовать калибровку через ансамбль калибраторов (текущий метод) или только один калибратор, используя все данные (аналогично встроенной функции sklearn.svm оцениватели с probabilities=True параметр). #17856 by Lucy Liu и Andrea Esuli.

sklearn.cluster#

  • Улучшение cluster.AgglomerativeClustering имеет новый параметр compute_distances. Когда установлено в True, расстояния между кластерами вычисляются и сохраняются в distances_ атрибут, даже когда параметр distance_threshold не используется. Этот новый параметр полезен для создания визуализаций дендрограмм, но вносит вычислительные и ресурсные накладные расходы. #17984 by Michael Riedmann, Emilie Delattre, и Francesco Casalegno.

  • Улучшение cluster.SpectralClustering и cluster.spectral_clustering имеют новый аргумент ключевого слова verbose. При установке в True, будут отображаться дополнительные сообщения, которые могут помочь в отладке. #18052 by Шон О. Столли.

  • Улучшение Добавлен cluster.kmeans_plusplus как публичную функцию. Инициализация с помощью KMeans++ теперь может вызываться отдельно для генерации начальных центроидов кластеров. #17937 by @g-walsh

  • Изменение API cluster.MiniBatchKMeans атрибуты, counts_ и init_size_, устарели и будут удалены в версии 1.1 (переименование версии 0.26). #17864 by Жереми дю Буаберранже.

sklearn.compose#

sklearn.covariance#

  • Изменение API Устаревает cv_alphas_ в пользу cv_results_['alphas'] и grid_scores_ в пользу оценок разделения в cv_results_ в covariance.GraphicalLassoCV. cv_alphas_ и grid_scores_ будет удален в версии 1.1 (переименование 0.26). #16392 by Томас Фан.

sklearn.cross_decomposition#

sklearn.datasets#

  • Функция datasets.fetch_openml теперь проверяет контрольную сумму md5 файлов arff, загруженных или кэшированных, для обеспечения целостности данных. #14800 by Shashank Singh и Joel Nothman.

  • Улучшение datasets.fetch_openml теперь позволяет аргумент as_frame будет 'auto', что пытается преобразовать возвращённые данные в pandas DataFrame, если данные не разрежены. #17396 by Jiaxiang.

  • Улучшение datasets.fetch_covtype теперь поддерживает необязательный аргумент as_frame; когда установлено в True, возвращаемый объект Bunch data и frame элементы являются pandas DataFrames, и target член является pandas Series. #17491 by Alex Liang.

  • Улучшение datasets.fetch_kddcup99 теперь поддерживает необязательный аргумент as_frame; когда установлено в True, возвращаемый объект Bunch data и frame элементы являются pandas DataFrames, и target член является pandas Series. #18280 by Alex Liang и Guillaume Lemaitre.

  • Улучшение datasets.fetch_20newsgroups_vectorized теперь поддерживает загрузку как pandas DataFrame установкой as_frame=True. #17499 by Бригитта Сипёч и Guillaume Lemaitre.

  • Изменение API Значение по умолчанию для as_frame в datasets.fetch_openml изменяется с False на ‘auto’. #17610 by Jiaxiang.

sklearn.decomposition#

  • Изменение API Для decomposition.NMF, init значение, когда 'init=None' и n_components <= min(n_samples, n_features) будет изменено с 'nndsvd' to 'nndsvda' в 1.1 (переименование 0.26). #18525 by Кьяра Мармо.

  • Улучшение decomposition.FactorAnalysis теперь поддерживает необязательный аргумент rotation, который может принимать значение None, 'varimax' или 'quartimax'. #11064 by Jona Sassenhagen.

  • Улучшение decomposition.NMF теперь поддерживает необязательный параметр regularization, которые могут принимать значения None, 'components', 'transformation' или 'both', в соответствии с decomposition.NMF.non_negative_factorization. #17414 by Bharat Raghunathan.

  • Исправление decomposition.KernelPCA поведение теперь более согласовано между 32-битными и 64-битными входными данными, когда ядро имеет малые положительные собственные значения. Малые положительные собственные значения не корректно отбрасывались для 32-битных данных. #18149 by Sylvain Marié.

  • Исправление Исправление decomposition.SparseCoder так, чтобы он соответствовал API scikit-learn и поддерживал клонирование. Атрибут components_ устарел в версии 0.24 и будет удален в версии 1.1 (переименование версии 0.26). Этот атрибут был избыточным с dictionary атрибут и параметр конструктора. #17679 by Xavier Dupré.

  • Исправление decomposition.TruncatedSVD.fit_transform последовательно возвращает то же самое, что и decomposition.TruncatedSVD.fit с последующим decomposition.TruncatedSVD.transform. #18528 by Albert Villanova del Moral и Ruifeng Zheng.

sklearn.discriminant_analysis#

sklearn.ensemble#

sklearn.exceptions#

  • Изменение API exceptions.ChangedBehaviorWarning и exceptions.NonBLASDotWarning устарели и будут удалены в версии 1.1 (переименование 0.26). #17804 by Адрин Джалали.

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

  • Улучшение Новый метод gaussian_process.kernel._check_bounds_params вызывается после подгонки гауссовского процесса и вызывает ConvergenceWarning если границы гиперпараметров слишком узки. #12638 by Sylvain Lannuzel.

sklearn.impute#

  • Функция impute.SimpleImputer теперь поддерживает список строк, когда strategy='most_frequent' или strategy='constant'. #17526 by Аяко ЯГИ и Juan Carlos Alfaro Jiménez.

  • Функция Добавлен метод impute.SimpleImputer.inverse_transform для возврата импутированных данных к исходным при инициализации с add_indicator=True. #17612 by Srimukh Sripada.

  • Исправление заменить значения по умолчанию в impute.IterativeImputer of min_value и max_value параметры для -np.inf и np.inf, соответственно, вместо None. Однако поведение класса не меняется, поскольку None уже использовал эти значения по умолчанию. #16493 by Darshan N.

  • Исправление impute.IterativeImputer не будет пытаться установить оценщика random_state атрибут, позволяющий использовать его с большим количеством внешних классов. #15636 by David Cortes.

  • Эффективность impute.SimpleImputer теперь работает быстрее с object массив типа dtype. когда strategy='most_frequent' в SimpleImputer. #18987 by Дэвид Кац.

sklearn.inspection#

sklearn.isotonic#

  • Функция Предоставление обученных атрибутов X_thresholds_ и y_thresholds_ которые содержат дедуплицированные пороги интерполяции isotonic.IsotonicRegression экземпляр для целей инспекции модели. #16289 by Masashi Kishimoto и Оливье Гризель.

  • Улучшение isotonic.IsotonicRegression теперь принимает 2d массив с 1 признаком в качестве входного массива. #17379 by Jiaxiang.

  • Исправление Добавить допуск при определении дублирующихся значений X, чтобы предотвратить предсказание inf значений с помощью isotonic.IsotonicRegression. #18639 by Lucy Liu.

sklearn.kernel_approximation#

sklearn.linear_model#

  • Функция linear_model.LinearRegression теперь заставляет коэффициенты быть всеми положительными, когда positive установлено в True. #17578 by устарел в пользу более согласованного, Нель Варокво и Кьяра Мармо.

  • Улучшение linear_model.RidgeCV теперь поддерживает поиск оптимального значения регуляризации alpha для каждой цели отдельно, установив alpha_per_target=True. Это поддерживается только при использовании стандартной эффективной схемы перекрестной проверки с исключением по одному cv=None. #6624 by Marijn van Vliet.

  • Исправление Исправлена ошибка в linear_model.TheilSenRegressor где predict и score завершалось ошибкой, когда fit_intercept=False и была одна фича во время обучения. #18121 by Томас Фан.

  • Исправление Исправлена ошибка в linear_model.ARDRegression где predict вызывал ошибку, когда normalize=True и return_std=True потому что X_offset_ и X_scale_ были неопределены. #18607 by fhaselbeck.

  • Исправление Добавлен недостающий l1_ratio параметр в linear_model.Perceptron, для использования, когда penalty='elasticnet'. Это изменяет значение по умолчанию с 0 на 0.15. #18622 by Хесун Парк.

sklearn.manifold#

  • Эффективность Исправлено #10493. Улучшенный метод локального линейного вложения (LLE), который вызвал MemoryError исключение при использовании с большими входными данными. #17997 by Bertrand Maisonneuve.

  • Улучшение Добавить square_distances параметр для manifold.TSNE, что обеспечивает обратную совместимость во время устаревания устаревшего поведения возведения в квадрат. Расстояния будут возводиться в квадрат по умолчанию в версии 1.1 (переименование 0.26), и этот параметр будет удален в версии 1.3. #17662 by Joshua Newton.

  • Исправление manifold.MDS теперь правильно устанавливает свой _pairwise атрибут. #18278 by Томас Фан.

sklearn.metrics#

  • Функция Добавлен metrics.cluster.pair_confusion_matrix реализующий матрицу ошибок, возникающую из пар элементов двух кластеризаций. #17412 by Уве Ф. Майер.

  • Функция новая метрика metrics.top_k_accuracy_score. Это обобщение metrics.top_k_accuracy_score, разница заключается в том, что предсказание считается правильным, если истинная метка связана с одним из k наивысшие предсказанные оценки. metrics.accuracy_score является частным случаем k = 1. #16625 by Джеффри Болмье.

  • Функция Добавлен metrics.det_curve для вычисления кривой классификационной метрики компромисса между ошибками обнаружения. #10591 by Джереми Карновски и Даниэль Монс.

  • Функция Добавлен metrics.plot_det_curve и metrics.DetCurveDisplay для упрощения построения кривых DET. #18176 by Guillaume Lemaitre.

  • Функция Добавлен metrics.mean_absolute_percentage_error метрика и связанный с ней скорер для задач регрессии. #10708 исправлено с помощью PR #15007 by Ashutosh Hathidara. Метрика оценки и некоторые практические тестовые случаи были взяты из PR #10711 by Mohamed Ali Jamaoui.

  • Функция Добавлен metrics.rand_score реализующий (нескорректированный) индекс Рэнда. #17412 by Уве Ф. Майер.

  • Функция metrics.plot_confusion_matrix теперь поддерживает возможность сделать цветовую шкалу необязательной в графике matplotlib, установив colorbar=False. #17192 by Ави Гупта

  • Улучшение Добавить sample_weight параметр для metrics.median_absolute_error. #17225 by Lucy Liu.

  • Улучшение Добавить pos_label параметр в metrics.plot_precision_recall_curve чтобы указать положительный класс, который будет использоваться при вычислении статистики точности и полноты. #17569 by Guillaume Lemaitre.

  • Улучшение Добавить pos_label параметр в metrics.plot_roc_curve чтобы указать положительный класс, используемый при вычислении статистики roc auc. #17651 by Clara Matos.

  • Исправление Исправлена ошибка в metrics.classification_report который вызывал AttributeError при вызове с output_dict=True для значений нулевой длины. #17777 by Shubhanshu Mishra.

  • Исправление Исправлена ошибка в metrics.classification_report который вызывал AttributeError при вызове с output_dict=True для значений нулевой длины. #17777 by Shubhanshu Mishra.

  • Исправление Исправлена ошибка в metrics.jaccard_score который рекомендовал zero_division параметр при вызове без истинных или предсказанных образцов. #17826 by Ричард Декал и Joseph Willard

  • Исправление ошибка в metrics.hinge_loss где ошибка возникает, когда y_true отсутствуют некоторые метки, которые явно указаны в labels параметр. #17935 by Кэри Голтерманн.

  • Исправление Исправляет скореры, которые принимают параметр pos_label и вычисляют их метрики из значений, возвращаемых decision_function или predict_proba. Ранее они возвращали ошибочные значения, когда pos_label не соответствовал classifier.classes_[1]. Это особенно важно при обучении классификаторов непосредственно с целевыми классами, помеченными строками. #18114 by Guillaume Lemaitre.

  • Исправление Исправлена ошибка в metrics.plot_confusion_matrix где ошибка возникает когда y_true содержит метки, которые ранее не встречались классификатору, в то время как labels и display_labels параметры установлены в None. #18405 by Thomas J. Fan и Яков Пчелинцев.

sklearn.model_selection#

sklearn.multiclass#

  • Улучшение multiclass.OneVsOneClassifier теперь принимает входные данные с пропущенными значениями. Следовательно, оценщики, которые могут обрабатывать пропущенные значения (может быть конвейер с этапом импутации), могут использоваться как оценщик для многоклассовых обёрток. #17987 by Venkatachalam N.

  • Исправление Исправление, чтобы разрешить multiclass.OutputCodeClassifier для приема разреженных входных данных в своем fit и predict методы. Проверка валидности входных данных теперь делегирована базовому оценщику. #17233 by Золиса Блеки.

sklearn.multioutput#

  • Улучшение multioutput.MultiOutputClassifier и multioutput.MultiOutputRegressor теперь принимает входные данные с пропущенными значениями. Следовательно, оценщики, которые могут обрабатывать пропущенные значения (может быть конвейер с шагом импутации, HistGradientBoosting оценщики) могут использоваться как оценщик для многоклассовых обёрток. #17987 by Venkatachalam N.

  • Исправление Исправление для принятия кортежей в order параметр в multioutput.ClassifierChain. #18124 by Gus Brocchini и Аманда Д'Суза.

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.svm#

sklearn.tree#

sklearn.utils#

  • Улучшение Добавить check_methods_sample_order_invariance to check_estimator, который проверяет, что методы оценщика инвариантны при применении к одному и тому же набору данных с разным порядком выборок #17598 by Джейсон Нго.

  • Улучшение Добавить поддержку весов в utils.sparse_func.incr_mean_variance_axis. Путем Мария Теленчук и Алекс Грамфор.

  • Исправление Вызвать ValueError с понятным сообщением об ошибке в utils.check_array для разреженных DataFrame со смешанными типами. #17992 by Thomas J. Fan и Алекс Шакед.

  • Исправление Позволяет десериализовать древовидные модели на машине с другой порядком байтов. #17644 by Ци Чжан.

  • Исправление Проверяем, что возникает правильная ошибка, когда axis=1 и размерности не совпадают в utils.sparse_func.incr_mean_variance_axis. Путем Алекс Грамфор.

Разное#

  • Улучшение Вызовы repr теперь работают быстрее, когда print_changed_only=True, особенно с мета-оценщиками. #18508 by Натан К..

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

Благодарим всех, кто внес вклад в поддержку и улучшение проекта с версии 0.23, включая:

Abo7atm, Adam Spannbauer, Adrin Jalali, adrinjalali, Agamemnon Krasoulis, Akshay Deodhar, Albert Villanova del Moral, Alessandro Gentile, Alex Henrie, Alex Itkes, Alex Liang, Alexander Lenail, alexandracraciun, Alexandre Gramfort, alexshacked, Allan D Butler, Amanda Dsouza, amy12xx, Anand Tiwari, Anderson Nelson, Andreas Mueller, Ankit Choraria, Archana Subramaniyan, Arthur Imbert, Ashutosh Hathidara, Ashutosh Kushwaha, Atsushi Nukariya, Aura Munoz, AutoViz и Auto_ViML, Avi Gupta, Avinash Anakal, Ayako YAGI, barankarakus, barberogaston, beatrizsmg, Ben Mainye, Benjamin Bossan, Benjamin Pedigo, Bharat Raghunathan, Bhavika Devnani, Biprateep Dey, bmaisonn, Bo Chang, Boris Villazón-Terrazas, brigi, Brigitta Sipőcz, Bruno Charron, Byron Smith, Cary Goltermann, Cat Chenal, CeeThinwa, chaitanyamogal, Charles Patel, Chiara Marmo, Christian Kastner, Christian Lorentzen, Christoph Deil, Christos Aridas, Clara Matos, clmbst, Coelhudo, crispinlogan, Cristina Mulas, Daniel López, Daniel Mohns, darioka, Darshan N, david-cortes, Declan O’Neill, Deeksha Madan, Elizabeth DuPre, Eric Fiegel, Eric Larson, Erich Schubert, Erin Khoo, Erin R Hoffman, eschibli, Felix Wick, fhaselbeck, Forrest Koch, Francesco Casalegno, Frans Larsson, Gael Varoquaux, Gaurav Desai, Gaurav Sheni, genvalen, Geoffrey Bolmier, George Armstrong, George Kiragu, Gesa Stupperich, Ghislain Antony Vaillant, Gim Seng, Gordon Walsh, Gregory R. Lee, Guillaume Chevalier, Guillaume Lemaitre, Haesun Park, Hannah Bohle, Hao Chun Chang, Harry Scholes, Harsh Soni, Henry, Hirofumi Suzuki, Hitesh Somani, Hoda1394, Hugo Le Moine, hugorichard, indecisiveuser, Isuru Fernando, Ivan Wiryadi, j0rd1smit, Jaehyun Ahn, Jake Tae, James Hoctor, Jan Vesely, Jeevan Anand Anne, JeroenPeterBos, JHayes, Jiaxiang, Jie Zheng, Jigna Panchal, jim0421, Jin Li, Joaquin Vanschoren, Joel Nothman, Jona Sassenhagen, Jonathan, Jorge Gorbe Moya, Joseph Lucas, Joshua Newton, Juan Carlos Alfaro Jiménez, Julien Jerphanion, Justin Huber, Jérémie du Boisberranger, Kartik Chugh, Katarina Slama, kaylani2, Kendrick Cetina, Kenny Huynh, Kevin Markham, Kevin Winata, Kiril Isakov, kishimoto, Koki Nishihara, Krum Arnaudov, Kyle Kosic, Lauren Oldja, Laurenz Reitsam, Lisa Schwetlick, Louis Douge, Louis Guitton, Lucy Liu, Madhura Jayaratne, maikia, Manimaran, Manuel López-Ibáñez, Maren Westermann, Maria Telenczuk, Mariam-ke, Marijn van Vliet, Markus Löning, Martin Scheubrein, Martina G. Vilas, Martina Megasari, Mateusz Górski, mathschy, mathurinm, Matthias Bussonnier, Max Del Giudice, Michael, Milan Straka, Muoki Caleb, N. Haiat, Nadia Tahiri, Ph. D, Naoki Hamada, Neil Botelho, Nicolas Hug, Nils Werner, noelano, Norbert Preining, oj_lappi, Oleh Kozynets, Olivier Grisel, Pankaj Jindal, Pardeep Singh, Parthiv Chigurupati, Patrice Becker, Pete Green, pgithubs, Poorna Kumar, Prabakaran Kumaresshan, Probinette4, pspachtholz, pwalchessen, Qi Zhang, rachel fischoff, Rachit Toshniwal, Rafey Iqbal Rahman, Rahul Jakhar, Ram Rachum, RamyaNP, rauwuckl, Ravi Kiran Boggavarapu, Ray Bell, Reshama Shaikh, Richard Decal, Rishi Advani, Rithvik Rao, Rob Romijnders, roei, Romain Tavenard, Roman Yurchak, Ruby Werman, Ryotaro Tsukada, sadak, Saket Khandelwal, Sam, Sam Ezebunandu, Sam Kimbinyi, Sarah Brown, Saurabh Jain, Sean O. Stalley, Sergio, Shail Shah, Shane Keller, Shao Yang Hong, Shashank Singh, Shooter23, Shubhanshu Mishra, simonamaggio, Soledad Galli, Srimukh Sripada, Stephan Steinfurt, subrat93, Sunitha Selvan, Swier, Sylvain Marié, SylvainLan, t-kusanagi2, Teon L Brooks, Terence Honles, Thijs van den Berg, Thomas J Fan, Thomas J. Fan, Thomas S Benjamin, Thomas9292, Thorben Jensen, tijanajovanovic, Timo Kaufmann, tnwei, Tom Dupré la Tour, Trevor Waite, ufmayer, Umberto Lupo, Venkatachalam N, Vikas Pandey, Vinicius Rios Fuck, Violeta, watchtheblur, Wenbo Zhao, willpeppo, xavier dupré, Xethan, Xue Qianming, xun-tang, yagi-3, Yakov Pchelintsev, Yashika Sharma, Yi-Yan Ge, Yue Wu, Yutaro Ikeda, Zaccharie Ramzi, zoj613, Zhao Feng.