Версия 1.1#

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

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

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

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

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

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

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

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

Версия 1.1.3#

Октябрь 2022

Этот выпуск с исправлением ошибок включает только исправления для совместимости с последним релизом SciPy >= 1.9.2. К значительным изменениям относятся:

  • Исправление Включить msvcp140.dll в колесах scikit-learn, так как он был удалён в последних колесах SciPy. #24631 by Кьяра Мармо.

  • Улучшение Создать wheels для Python 3.11. #24446 by Кьяра Мармо.

Другие исправления ошибок будут доступны в следующем выпуске 1.2, который выйдет в ближайшие недели.

Обратите внимание, что поддержка 32-битного Python в Windows была прекращена в этом выпуске. Это связано с тем, что SciPy 1.9.2 также прекратил поддержку этой платформы. Пользователям Windows рекомендуется установить 64-битную версию Python.

Версия 1.1.2#

Август 2022

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

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

  • Исправление manifold.TSNE теперь вызывает ValueError при обучении с perplexity>=n_samples для обеспечения математической корректности алгоритма. #10805 by Mathias Andersen и #23471 by Meekail Zain.

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

  • Исправление Представление по умолчанию в HTML показано для мета-оценщиков с недопустимыми параметрами. #24015 by Томас Фан.

  • Исправление Добавлена поддержка F-смежных массивов для оценщиков и функций, чей бэкенд был изменён в версии 1.1. #23990 by Julien Jerphanion.

  • Исправление Теперь доступны колеса для MacOS 10.9 и выше. #23833 by Томас Фан.

sklearn.base#

  • Исправление The get_params метод base.BaseEstimator класс теперь поддерживает оценщики с type-type параметры, которые имеют get_params метод. #24017 by Генри Сорски.

sklearn.cluster#

sklearn.feature_selection#

sklearn.impute#

sklearn.linear_model#

  • Исправление Использовать допуски, учитывающие тип данных, для проверки матриц Грама (переданных пользователями или предвычисленных). #22059 by Malte S. Kurz.

  • Исправление Исправлена ошибка в linear_model.LogisticRegression с solver="newton-cg", fit_intercept=True, и один признак. #23608 by Tom Dupre la Tour.

sklearn.manifold#

  • Исправление manifold.TSNE теперь вызывает ValueError при обучении с perplexity>=n_samples для обеспечения математической корректности алгоритма. #10805 by Mathias Andersen и #23471 by Meekail Zain.

sklearn.metrics#

sklearn.preprocessing#

sklearn.tree#

Версия 1.1.1#

Май 2022

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

sklearn.datasets#

sklearn.decomposition#

sklearn.feature_selection#

sklearn.metrics#

  • Исправление Исправления metrics.precision_recall_curve для вычисления точности-полноты при 100% полноте. Кривая точности-полноты теперь отображает последнюю точку, соответствующую классификатору, который всегда предсказывает положительный класс: полнота=100% и точность=баланс классов. #23214 by Стефан Колло и Max Baak.

sklearn.preprocessing#

  • Исправление preprocessing.PolynomialFeatures с degree равным 0 вызовет ошибку, когда include_bias установлен в False и выводит единый постоянный массив, когда include_bias установлено в True. #23370 by Zhehao Liu.

sklearn.tree#

sklearn.utils#

Версия 1.1.0#

Май 2022

Минимальные зависимости#

Версия 1.1.0 scikit-learn требует python 3.8+, numpy 1.17.3+ и scipy 1.3.2+. Опциональная минимальная зависимость - matplotlib 3.1.2+.

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

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

  • Эффективность cluster.KMeans теперь по умолчанию algorithm="lloyd" вместо algorithm="auto", что было эквивалентно algorithm="elkan". Алгоритм Ллойда и алгоритм Элкана сходятся к одному и тому же решению, с точностью до ошибок округления, но в целом алгоритм Ллойда использует гораздо меньше памяти и часто быстрее.

  • Эффективность Обучение tree.DecisionTreeClassifier, tree.DecisionTreeRegressor, ensemble.RandomForestClassifier, ensemble.RandomForestRegressor, ensemble.GradientBoostingClassifier, и ensemble.GradientBoostingRegressor в среднем на 15% быстрее, чем в предыдущих версиях, благодаря новому алгоритму сортировки для нахождения наилучшего разделения. Модели могут отличаться из-за другого подхода к обработке разделений со связанными значениями критерия: как старый, так и новый алгоритмы сортировки являются неустойчивыми алгоритмами сортировки. #22868 by Томас Фан.

  • Исправление Инициализация собственных векторов для cluster.SpectralClustering и manifold.SpectralEmbedding теперь сэмплирует из гауссовского распределения при использовании 'amg' или 'lobpcg' решатель. Это изменение улучшает численную устойчивость решателя, но может привести к другой модели.

  • Исправление feature_selection.f_regression и feature_selection.r_regression теперь будет возвращать конечную оценку по умолчанию вместо np.nan и np.inf для некоторых крайних случаев. Вы можете использовать force_finite=False если вы действительно хотите получить не конечные значения и сохранить старое поведение.

  • Исправление DataFrames библиотеки Panda со всеми нестроковыми столбцами, такими как MultiIndex, больше не предупреждают при передаче в Estimator. Estimator продолжат игнорировать имена столбцов в DataFrames с нестроковыми столбцами. Для feature_names_in_ чтобы быть определенными, столбцы должны состоять только из строк. #22410 by Томас Фан.

  • Исправление preprocessing.KBinsDiscretizer изменена обработка границ бинов немного, что может привести к другому кодированию с теми же данными.

  • Исправление calibration.calibration_curve изменена обработка границ бинов, что может привести к другой выходной кривой при тех же данных.

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

  • Исправление feature_selection.SelectFromModel.fit и feature_selection.SelectFromModel.partial_fit теперь можно вызывать с prefit=True. estimators_ будет глубокой копией estimator когда prefit=True. #23271 by Guillaume Lemaitre.

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

sklearn.calibration#

sklearn.cluster#

  • Основная функция cluster.BisectingKMeans введение алгоритма Bisecting K-Means #20031 by Михал Кравчик, Tom Dupre la Tour и Жереми дю Буаберранже.

  • Улучшение cluster.SpectralClustering и cluster.spectral_clustering теперь включают новый 'cluster_qr' метод, который кластеризует образцы в пространстве вложений как альтернативу существующему 'kmeans' и 'discrete' методы. См. cluster.spectral_clustering для получения дополнительной информации. #21148 by Andrew Knyazev.

  • Улучшение Добавляет get_feature_names_out to cluster.Birch, cluster.FeatureAgglomeration, cluster.KMeans, cluster.MiniBatchKMeans. #22255 by Томас Фан.

  • Улучшение cluster.SpectralClustering теперь вызывает согласованные сообщения об ошибках при передаче недопустимых значений для n_clusters, n_init, gamma, n_neighbors, eigen_tol или degree. #21881 by Хьюго Васард.

  • Улучшение cluster.AffinityPropagation теперь возвращает центры кластеров и метки, если они существуют, даже если модель не полностью сошлась. При возврате этих потенциально вырожденных центров кластеров и меток появляется новое предупреждающее сообщение. Если центры кластеров не были построены, то центры кластеров остаются пустым списком, а метки устанавливаются в -1 и исходное предупреждающее сообщение отображается. #22217 by Meekail Zain.

  • Эффективность В cluster.KMeans, значение по умолчанию algorithm теперь "lloyd" который является полным классическим алгоритмом в стиле EM. Оба "auto" и "full" устарели и будут удалены в версии 1.3. Теперь они являются псевдонимами для "lloyd". Предыдущим значением по умолчанию было "auto", который полагался на алгоритм Элкана. Алгоритм Ллойда использует меньше памяти, чем алгоритм Элкана, он быстрее на многих наборах данных, и его результаты идентичны, отсюда и изменение. #21735 by Орельен Жерон.

  • Исправление cluster.KMeans’s init параметр теперь правильно поддерживает ввод в виде массива и строковые скаляры NumPy. #22154 by Томас Фан.

sklearn.compose#

sklearn.covariance#

sklearn.cross_decomposition#

sklearn.datasets#

  • Функция datasets.load_files теперь принимает список игнорирования и список разрешения на основе расширений файлов. #19747 by Тони Аталла и #22498 by Meekail Zain.

  • Улучшение datasets.make_swiss_roll теперь поддерживает необязательный аргумент hole; при установке в True возвращает набор данных swiss-hole. #21482 by Sebastian Pujalte.

  • Улучшение datasets.make_blobs больше не копирует данные в процессе генерации, поэтому использует меньше памяти. #22412 by Zhehao Liu.

  • Улучшение datasets.load_diabetes теперь принимает параметр scaled, чтобы позволить загрузку немасштабированных данных. Масштабированная версия этого набора данных теперь вычисляется из немасштабированных данных и может давать немного другие результаты, чем в предыдущей версии (в пределах абсолютной погрешности 1e-4). #16605 by Мэнди Гу.

  • Улучшение datasets.fetch_openml теперь имеет два необязательных аргумента n_retries и delay. По умолчанию, datasets.fetch_openml повторит попытку 3 раза в случае сбоя сети с задержкой между каждой попыткой. #21901 by Rileran.

  • Исправление datasets.fetch_covtype теперь безопасен для параллельного выполнения: данные загружаются во временный каталог перед перемещением в каталог данных. #23113 by Илион Бейст.

  • Изменение API datasets.make_sparse_coded_signal теперь принимает параметр data_transposed для явного указания формы матрицы X. Поведение по умолчанию True заключается в возврате транспонированной матрицы X соответствующий (n_features, n_samples) форма. Значение по умолчанию изменится на False в версии 1.3. #21425 by Gabriel Stefanini Vicente.

sklearn.decomposition#

sklearn.discriminant_analysis#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

  • Функция Добавлен автоматический режим в feature_selection.SequentialFeatureSelector. Если аргумент n_features_to_select является 'auto', выбирайте признаки, пока улучшение оценки не превысит аргумент tol. Значение по умолчанию для n_features_to_select изменено с None to 'warn' в 1.1 и станет 'auto' в 1.3. None и 'warn' будет удалено в версии 1.3. #20145 by murata-yu.

  • Функция Добавлена возможность передавать вызываемые объекты в max_features оценок. feature_selection.SelectFromModel. Также введен новый атрибут max_features_ который выводится из max_features и данные во время fit. Если max_features является целым числом, тогда max_features_ = max_features. Если max_features является вызываемым объектом, то max_features_ = max_features(X). #22356 by Meekail Zain.

  • Улучшение feature_selection.GenericUnivariateSelect сохраняет тип float32. #18482 by Тьерри Гамейро и Даниэль Харса и #22370 by Meekail Zain.

  • Улучшение Добавить параметр force_finite to feature_selection.f_regression и feature_selection.r_regression. Этот параметр позволяет принудительно сделать выход конечным в случае, когда признак или целевая переменная постоянны или когда признак и целевая переменная идеально коррелированы (только для F-статистики). #17819 by Juan Carlos Alfaro Jiménez.

  • Эффективность Улучшена производительность времени выполнения feature_selection.chi2 с булевыми массивами. #22235 by Томас Фан.

  • Эффективность Сниженное использование памяти feature_selection.chi2. #21837 by Louis Wagner.

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.isotonic#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.mixture#

sklearn.model_selection#

  • Улучшение теперь можно передавать scoring="matthews_corrcoef" ко всем инструментам выбора модели с scoring . Из-за его реализации в #22203 by Оливье Гризель.

  • Улучшение вызвать ошибку при перекрестной проверке, когда подгонки для всех разделов не удались. Аналогично вызвать ошибку при поиске по сетке, когда подгонки для всех моделей и всех разделов не удались. #21026 by Loïc Estève.

  • Исправление model_selection.GridSearchCV, model_selection.HalvingGridSearchCV теперь проверяет входные параметры в fit вместо __init__. #21880 by Mrinal Tyagi.

  • Исправление model_selection.learning_curve теперь поддерживает partial_fit с регрессорами. #22982 by Томас Фан.

sklearn.multiclass#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.random_projection#

sklearn.svm#

sklearn.tree#

sklearn.utils#

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

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

2357juan, Abhishek Gupta, adamgonzo, Adam Li, adijohar, Aditya Kumawat, Aditya Raghuwanshi, Aditya Singh, Adrian Trujillo Duron, Adrin Jalali, ahmadjubair33, AJ Druck, aj-white, Alan Peixinho, Alberto Mario Ceballos-Arroyo, Alek Lefebvre, Alex, Alexandr, Alexandre Gramfort, alexanmv, almeidayoel, Amanda Dsouza, Aman Sharma, Amar pratap singh, Amit, amrcode, András Simon, Andreas Grivas, Andreas Mueller, Andrew Knyazev, Andriy, Angus L’Herrou, Ankit Sharma, Anne Ducout, Arisa, Arth, arthurmello, Arturo Amor, ArturoAmor, Atharva Patil, aufarkari, Aurélien Geron, avm19, Ayan Bag, baam, Bardiya Ak, Behrouz B, Ben3940, Benjamin Bossan, Bharat Raghunathan, Bijil Subhash, bmreiniger, Brandon Truth, Brenden Kadota, Brian Sun, cdrig, Chalmer Lowe, Chiara Marmo, Chitteti Srinath Reddy, Chloe-Agathe Azencott, Christian Lorentzen, Christian Ritter, christopherlim98, Christoph T. Weidemann, Christos Aridas, Claudio Salvatore Arcidiacono, combscCode, Daniela Fernandes, darioka, Darren Nguyen, Dave Eargle, David Gilbertson, David Poznik, Dea María Léon, Dennis Osei, DessyVV, Dev514, Dimitri Papadopoulos Orfanos, Diwakar Gupta, Dr. Felix M. Riese, drskd, Emiko Sano, Emmanouil Gionanidis, EricEllwanger, Erich Schubert, Eric Larson, Eric Ndirangu, ErmolaevPA, Estefania Barreto-Ojeda, eyast, Fatima GASMI, Federico Luna, Felix Glushchenkov, fkaren27, Fortune Uwha, FPGAwesome, francoisgoupil, Frans Larsson, ftorres16, Gabor Berei, Gabor Kertesz, Gabriel Stefanini Vicente, Gabriel S Vicente, Gael Varoquaux, GAURAV CHOUDHARY, Gauthier I, genvalen, Geoffrey-Paris, Giancarlo Pablo, glennfrutiz, gpapadok, Guillaume Lemaitre, Guillermo Tomás Fernández Martín, Gustavo Oliveira, Haidar Almubarak, Hannah Bohle, Hansin Ahuja, Haoyin Xu, Haya, Helder Geovane Gomes de Lima, henrymooresc, Hideaki Imamura, Himanshu Kumar, Hind-M, hmasdev, hvassard, i-aki-y, iasoon, Inclusive Coding Bot, Ingela, iofall, Ishan Kumar, Jack Liu, Jake Cowton, jalexand3r, J Alexander, Jauhar, Jaya Surya Kommireddy, Jay Stanley, Jeff Hale, je-kr, JElfner, Jenny Vo, Jérémie du Boisberranger, Jihane, Jirka Borovec, Joel Nothman, Jon Haitz Legarreta Gorroño, Jordan Silke, Jorge Ciprián, Jorge Loayza, Joseph Chazalon, Joseph Schwartz-Messing, Jovan Stojanovic, JSchuerz, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, katotten, Kaushik Roy Chowdhury, Ken4git, Kenneth Prabakaran, kernc, Kevin Doucet, KimAYoung, Koushik Joshi, Kranthi Sedamaki, krishna kumar, krumetoft, lesnee, Lisa Casino, Logan Thomas, Loic Esteve, Louis Wagner, LucieClair, Lucy Liu, Luiz Eduardo Amaral, Magali, MaggieChege, Mai, mandjevant, Mandy Gu, Manimaran, MarcoM, Marco Wurps, Maren Westermann, Maria Boerner, MarieS-WiMLDS, Martel Corentin, martin-kokos, mathurinm, Matías, matjansen, Matteo Francia, Maxwell, Meekail Zain, Megabyte, Mehrdad Moradizadeh, melemo2, Michael I Chen, michalkrawczyk, Micky774, milana2, millawell, Ming-Yang Ho, Mitzi, miwojc, Mizuki, mlant, Mohamed Haseeb, Mohit Sharma, Moonkyung94, mpoemsl, MrinalTyagi, Mr. Leu, msabatier, murata-yu, N, Nadirhan Şahin, Naipawat Poolsawat, NartayXD, nastegiano, nathansquan, nat-salt, Nicki Skafte Detlefsen, Nicolas Hug, Niket Jain, Nikhil Suresh, Nikita Titov, Nikolay Kondratyev, Ohad Michel, Oleksandr Husak, Olivier Grisel, partev, Patrick Ferreira, Paul, pelennor, PierreAttard, Piet Brömmel, Pieter Gijsbers, Pinky, poloso, Pramod Anantharam, puhuk, Purna Chandra Mansingh, QuadV, Rahil Parikh, Randall Boyes, randomgeek78, Raz Hoshia, Reshama Shaikh, Ricardo Ferreira, Richard Taylor, Rileran, Rishabh, Robin Thibaut, Rocco Meli, Roman Feldbauer, Roman Yurchak, Ross Barnowski, rsnegrin, Sachin Yadav, sakinaOuisrani, Sam Adam Day, Sanjay Marreddi, Sebastian Pujalte, SEELE, SELEE, Seyedsaman (Sam) Emami, ShanDeng123, Shao Yang Hong, sharmadharmpal, shaymerNaturalint, Shuangchi He, Shubhraneel Pal, siavrez, slishak, Smile, spikebh, sply88, Srinath Kailasa, Stéphane Collot, Sultan Orazbayev, Sumit Saha, Sven Eschlbeck, Sven Stehle, Swapnil Jha, Sylvain Marié, Takeshi Oura, Tamires Santana, Tenavi, teunpe, Theis Ferré Hjortkjær, Thiruvenkadam, Thomas J. Fan, t-jakubek, toastedyeast, Tom Dupré la Tour, Tom McTiernan, TONY GEORGE, Tyler Martin, Tyler Reddy, Udit Gupta, Ugo Marchand, Varun Agrawal, Venkatachalam N, Vera Komeyer, victoirelouis, Vikas Vishwakarma, Vikrant khedkar, Vladimir Chernyy, Vladimir Kim, WeijiaDu, Xiao Yuan, Yar Khine Phyo, Ying Xiong, yiyangq, Yosshi999, Yuki Koyama, Zach Deane-Mayer, Zeel B Patel, zempleni, zhenfisher, 赵丰 (Zhao Feng)