版本 0.22#

有關此版本主要亮點的簡短描述,請參閱scikit-learn 0.22 的發行重點

變更日誌圖例

  • 主要功能 之前無法做到的重大功能。

  • 功能 之前無法做到的功能。

  • 效率 現有功能現在可能不需要那麼多的計算或記憶體。

  • 增強 各種小的改進。

  • 修正 之前無法按文件記錄或按合理預期運作的功能,現在應該可以運作。

  • API 變更 您將需要變更您的程式碼,才能在未來達到相同的效果;或者某個功能將在未來被移除。

版本 0.22.2.post1#

2020 年 3 月 3 日

0.22.2.post1 版本包含針對原始碼發行版的封裝修正,但套件的內容與 0.22.2 版本(不含 .post1 字尾)的 wheel 內容相同。兩者都包含以下變更。

變更日誌#

sklearn.impute#

sklearn.metrics#

sklearn.neighbors#

版本 0.22.1#

2020 年 1 月 2 日

這是一個錯誤修正版本,主要解決 0.22.0 版本中的一些封裝問題。它還包含一些小的文件改進和一些錯誤修正。

變更日誌#

sklearn.cluster#

sklearn.inspection#

sklearn.metrics#

sklearn.model_selection#

sklearn.naive_bayes#

  • 修正 移除 naive_bayes.BaseNB 中方法 _check_Xabstractmethod 裝飾器,此裝飾器可能會破壞繼承此已棄用的公開基礎類別的下游專案。#15996Brigitta Sipőcz 貢獻。

sklearn.preprocessing#

sklearn.semi_supervised#

sklearn.utils#

  • 修正 utils.check_array 現在正確地將具有布林值欄位的 pandas DataFrame 轉換為浮點數。#15797Thomas Fan 貢獻。

  • 修正 utils.validation.check_is_fitted 接受一個明確的 attributes 引數,以檢查特定屬性作為已擬合估算器的明確標記。當未提供明確的 attributes 時,只有以底線結尾且不以雙底線開頭的屬性才被用作「已擬合」標記。all_or_any 引數也不再被棄用。此變更旨在恢復此工具在 0.21 版中的某些向後相容性。#15947Thomas Fan 貢獻。

版本 0.22.0#

2019 年 12 月 3 日

網站更新#

我們的網站 已改版,並賦予全新的外觀。#14849Thomas Fan 貢獻。

公開 API 的明確定義#

Scikit-learn 具有公開 API 和私有 API。

我們盡力不破壞公開 API,並且只引入不需要任何使用者操作的向後相容性變更。但是,在不可能的情況下,對公開 API 的任何變更都必須經過兩個次要版本的棄用週期。私有 API 沒有公開文件,並且不受任何棄用週期約束,因此使用者不應依賴其穩定性。

如果函數或物件在 API 參考 中有文件記錄,並且可以使用不帶前導底線的導入路徑導入,則該函數或物件是公開的。例如,sklearn.pipeline.make_pipeline 是公開的,而 sklearn.pipeline._name_estimators 是私有的。sklearn.ensemble._gb.BaseEnsemble 也是私有的,因為整個 _gb 模組是私有的。

在 0.22 版之前,某些工具實際上是公開的(沒有前導底線),但它們本來應該是私有的。在 0.22 版中,這些工具已正確地設為私有的,並且公開 API 空間已清理。此外,從大多數子模組導入現在已被棄用:例如,您應該使用 from sklearn.cluster import Birch 而不是 from sklearn.cluster.birch import Birch (實際上,birch.py 已移至 _birch.py)。

注意

公開 API 中的所有工具都應記錄在 API 參考 中。如果您找到一個不在 API 參考中的公開工具(沒有前導底線),則表示該工具應該是私有的或是有文件記錄。請開啟一個 issue 告訴我們!

這項工作已在 issue 9250issue 12927 中追蹤。

棄用:從現在開始使用 FutureWarning#

在棄用某項功能時,以前版本的 scikit-learn 會引發 DeprecationWarning。由於 Python 預設不會顯示 DeprecationWarnings,因此 scikit-learn 需要採用自訂警告篩選器來始終顯示警告。該篩選器有時會干擾使用者的自訂警告篩選器。

從 0.22 版開始,scikit-learn 將為棄用顯示 FutureWarnings如 Python 文件建議FutureWarnings 預設由 Python 始終顯示,因此已移除自訂篩選器,且 scikit-learn 不再妨礙使用者篩選器。#15080Nicolas Hug 貢獻。

變更的模型#

以下估算器和函數在使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是因建模邏輯(錯誤修正或增強功能)或隨機抽樣程序中的變更所致。

詳細資訊列在下方的變更日誌中。

(雖然我們嘗試透過提供這些資訊來更好地告知使用者,但我們無法保證此清單完整。)

變更日誌#

sklearn.base#

  • API 變更 從 0.24 版本開始,對於在估計器建構函式中但未作為執行個體上的屬性儲存的參數,base.BaseEstimator.get_params 將會引發 AttributeError 而不是傳回 None。 #14464Joel Nothman 完成。

sklearn.calibration#

sklearn.cluster#

sklearn.compose#

sklearn.cross_decomposition#

sklearn.datasets#

sklearn.decomposition#

sklearn.dummy#

sklearn.ensemble#

sklearn.feature_extraction#

sklearn.feature_selection#

sklearn.gaussian_process#

sklearn.impute#

sklearn.inspection#

sklearn.kernel_approximation#

sklearn.linear_model#

sklearn.manifold#

sklearn.metrics#

sklearn.model_selection#

sklearn.multioutput#

sklearn.naive_bayes#

sklearn.neighbors#

sklearn.neural_network#

sklearn.pipeline#

sklearn.preprocessing#

sklearn.model_selection#

sklearn.svm#

  • 增強功能 svm.SVCsvm.NuSVC 現在接受 break_ties 參數。如果 decision_function_shape='ovr' 且目標類別的數量 > 2,則此參數會讓 predict 根據 decision_function 的信賴值打破平局。 #12557Adrin Jalali 貢獻。

  • 增強功能kernel='precomputed' 且在非平方資料上進行擬合時,SVM 估計器現在會拋出更具體的錯誤。 #14336Gregory Dexter 貢獻。

  • 修正svm.SVCsvm.SVRsvm.NuSVRsvm.OneClassSVM 的 fit() 方法接收到參數 sample_weight 的負值或零值時,會產生無效的模型。此行為僅在某些邊界情況下發生。現在,在這些情況下,fit() 將會因為例外狀況而失敗。#14286Alex Shacked 貢獻。

  • 修正 svm.SVRsvm.OneClassSVMn_support_ 屬性之前未初始化,大小為 2。現在其大小為 1,並具有正確的值。#15099Nicolas Hug 貢獻。

  • 修正 修正了 BaseLibSVM._sparse_fit 中的一個錯誤,當 n_SV=0 時會引發 ZeroDivisionError。#14894Danna Naser 貢獻。

  • 修正 liblinear 求解器現在支援 sample_weight#15038Guillaume Lemaitre 貢獻。

sklearn.tree#

sklearn.utils#

  • 功能 check_estimator 現在可以透過設定 generate_only=True 來產生檢查。先前,執行 check_estimator 將在第一個檢查失敗時停止。使用 generate_only=True,所有檢查可以獨立執行並報告失敗的檢查。請在 建立自己的估計器 中閱讀更多資訊。#14381Thomas Fan 貢獻。

  • 功能 新增了一個 pytest 特定的裝飾器 parametrize_with_checks,用於參數化一組估計器的估計器檢查。#14381Thomas Fan 貢獻。

  • 功能 新增一個隨機變數 utils.fixes.loguniform,實現了對數均勻隨機變數(例如,用於 RandomizedSearchCV)。例如,對於 loguniform(1, 100),結果 110100 的可能性都相等。請參閱 #11232,由 Scott SievertNathaniel Saul 貢獻,以及 SciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>

  • 增強 utils.safe_indexing(現已棄用)接受 axis 參數,以跨行和列對類陣列(array-like)進行索引。列索引可以在 NumPy 陣列、SciPy 稀疏矩陣和 Pandas DataFrame 上完成。還進行了額外的重構。#14035#14475Guillaume Lemaitre 貢獻。

  • 增強 utils.extmath.safe_sparse_dot 可以在 3D+ ndarray 和稀疏矩陣之間運作。#14538Jérémie du Boisberranger 貢獻。

  • 修正 utils.check_array 現在會引發錯誤,而不是將 NaN 轉換為整數。#14872Roman Yurchak 貢獻。

  • 修正 utils.check_array 現在可以正確偵測 pandas 資料框中的數值 dtype,修正了一個將 float32 不必要地向上轉換為 float64 的錯誤。#15094Andreas Müller 貢獻。

  • API 變更 以下工具已被棄用,現在為私有工具:

    • choose_check_classifiers_labels

    • enforce_estimator_tags_y

    • mocking.MockDataFrame

    • mocking.CheckingClassifier

    • optimize.newton_cg

    • random.random_choice_csc

    • utils.choose_check_classifiers_labels

    • utils.enforce_estimator_tags_y

    • utils.optimize.newton_cg

    • utils.random.random_choice_csc

    • utils.safe_indexing

    • utils.mocking

    • utils.fast_dict

    • utils.seq_dataset

    • utils.weight_vector

    • utils.fixes.parallel_helper (已移除)

    • 除了 all_estimators 現在位於 utils 中之外,其餘的 utils.testing 皆已移除。

sklearn.isotonic#

其他#

  • 修正 從 SciPy 移植 lobpcg,其中實作了一些錯誤修正,但僅適用於 1.3+ 版本。#13609#14971 by Guillaume Lemaitre

  • API 變更 Scikit-learn 現在會將任何實作鴨子陣列的輸入資料結構轉換為 numpy 陣列(使用 __array__),以確保行為一致,而不是依賴 __array_function__ (請參閱 NEP 18)。#14702 by Andreas Müller

  • API 變更 將手動檢查替換為 check_is_fitted。現在使用未擬合的估算器時所拋出的錯誤更加統一。#13013 by Agamemnon Krasoulis

估算器檢查的變更#

這些變更主要影響程式庫開發人員。

  • 現在預期估算器在 fit 之前呼叫 predicttransform 時會引發 NotFittedError;之前可接受 AttributeErrorValueError#13013 by Agamemnon Krasoulis

  • 估算器檢查現在支援僅限二元的分類器。此類分類器需要具有 binary_only=True 估算器標籤。#13875 by Trevor Stephens

  • 預期估算器會將輸入資料 (Xysample_weights) 轉換為 numpy.ndarray,並且永遠不會在傳遞的原始資料類型上呼叫 __array_function__ (請參閱 NEP 18)。#14702 by Andreas Müller

  • requires_positive_X 估算器標籤 (適用於需要 X 為非負值的模型) 現在由 utils.estimator_checks.check_estimator 使用,以確保如果 X 包含一些負數項目,則會引發正確的錯誤訊息。#14680 by Alex Gramfort

  • 新增檢查以確保成對估算器會在非正方形資料上引發錯誤 #14336 by Gregory Dexter

  • 新增兩個常見的多輸出估算器測試 utils.estimator_checks.check_classifier_multioutpututils.estimator_checks.check_regressor_multioutput#13392 by Rok Mihevc

  • 修正check_transformer_data_not_an_array 新增至遺失的檢查中

  • 修正 估算器標籤解析現在遵循正常的 MRO。它們過去只能覆寫一次。#14884 by Andreas Müller

程式碼和文件貢獻者

感謝自 0.21 版以來為專案的維護和改進做出貢獻的每個人,包括

Aaron Alphonsus、Abbie Popa、Abdur-Rahmaan Janhangeer、abenbihi、Abhinav Sagar、Abhishek Jana、Abraham K. Lagat、Adam J. Stewart、Aditya Vyas、Adrin Jalali、Agamemnon Krasoulis、Alec Peters、Alessandro Surace、Alexandre de Siqueira、Alexandre Gramfort、alexgoryainov、Alex Henrie、Alex Itkes、alexshacked、Allen Akinkunle、Anaël Beaugnon、Anders Kaseorg、Andrea Maldonado、Andrea Navarrete、Andreas Mueller、Andreas Schuderer、Andrew Nystrom、Angela Ambroz、Anisha Keshavan、Ankit Jha、Antonio Gutierrez、Anuja Kelkar、Archana Alva、arnaudstiegler、arpanchowdhry、ashimb9、Ayomide Bamidele、Baran Buluttekin、barrycg、Bharat Raghunathan、Bill Mill、Biswadip Mandal、blackd0t、Brian G. Barkley、Brian Wignall、Bryan Yang、c56pony、camilaagw、cartman_nabana、catajara、Cat Chenal、Cathy、cgsavard、Charles Vesteghem、Chiara Marmo、Chris Gregory、Christian Lorentzen、Christos Aridas、Dakota Grusak、Daniel Grady、Daniel Perry、Danna Naser、DatenBergwerk、David Dormagen、deeplook、Dillon Niederhut、Dong-hee Na、Dougal J. Sutherland、DrGFreeman、Dylan Cashman、edvardlindelof、Eric Larson、Eric Ndirangu、Eunseop Jeong、Fanny、federicopisanu、Felix Divo、flaviomorelli、FranciDona、Franco M. Luque、Frank Hoang、Frederic Haase、g0g0gadget、Gabriel Altay、Gabriel do Vale Rios、Gael Varoquaux、ganevgv、gdex1、getgaurav2、Gideon Sonoiya、Gordon Chen、gpapadok、Greg Mogavero、Grzegorz Szpak、Guillaume Lemaitre、Guillem García Subies、H4dr1en、hadshirt、Hailey Nguyen、Hanmin Qin、Hannah Bruce Macdonald、Harsh Mahajan、Harsh Soni、Honglu Zhang、Hossein Pourbozorg、Ian Sanders、Ingrid Spielman、J-A16、jaehong park、Jaime Ferrando Huertas、James Hill、James Myatt、Jay、jeremiedbb、Jérémie du Boisberranger、jeromedockes、Jesper Dramsch、Joan Massich、Joanna Zhang、Joel Nothman、Johann Faouzi、Jonathan Rahn、Jon Cusick、Jose Ortiz、Kanika Sabharwal、Katarina Slama、kellycarmody、Kennedy Kang’ethe、Kensuke Arai、Kesshi Jordan、Kevad、Kevin Loftis、Kevin Winata、Kevin Yu-Sheng Li、Kirill Dolmatov、Kirthi Shankar Sivamani、krishna katyal、Lakshmi Krishnan、Lakshya KD、LalliAcqua、lbfin、Leland McInnes、Léonard Binet、Loic Esteve、loopyme、lostcoaster、Louis Huynh、lrjball、Luca Ionescu、Lutz Roeder、MaggieChege、Maithreyi Venkatesh、Maltimore、Maocx、Marc Torrellas、Marie Douriez、Markus、Markus Frey、Martina G. Vilas、Martin Oywa、Martin Thoma、Masashi SHIBATA、Maxwell Aladago、mbillingr、m-clare、Meghann Agarwal、m.fab、Micah Smith、miguelbarao、Miguel Cabrera、Mina Naghshhnejad、Ming Li、motmoti、mschaffenroth、mthorrell、Natasha Borders、nezar-a、Nicolas Hug、Nidhin Pattaniyil、Nikita Titov、Nishan Singh Mann、Nitya Mandyam、norvan、notmatthancock、novaya、nxorable、Oleg Stikhin、Oleksandr Pavlyk、Olivier Grisel、Omar Saleem、Owen Flanagan、panpiort8、Paolo、Paolo Toccaceli、Paresh Mathur、Paula、Peng Yu、Peter Marko、pierretallotte、poorna-kumar、pspachtholz、qdeffense、Rajat Garg、Raphaël Bournhonesque、Ray、Ray Bell、Rebekah Kim、Reza Gharibi、Richard Payne、Richard W、rlms、Robert Juergens、Rok Mihevc、Roman Feldbauer、Roman Yurchak、R Sanjabi、RuchitaGarde、Ruth Waithera、Sackey、Sam Dixon、Samesh Lakhotia、Samuel Taylor、Sarra Habchi、Scott Gigante、Scott Sievert、Scott White、Sebastian Pölsterl、Sergey Feldman、SeWook Oh、she-dares、Shreya V、Shubham Mehta、Shuzhe Xiao、SimonCW、smarie、smujiga、Sönke Behrends、Soumirai、Sourav Singh、stefan-matcovici、steinfurt、Stéphane Couvreur、Stephan Tulkens、Stephen Cowley、Stephen Tierney、SylvainLan、th0rwas、theoptips、theotheo、Thierno Ibrahima DIOP、Thomas Edwards、Thomas J Fan、Thomas Moreau、Thomas Schmitt、Tilen Kusterle、Tim Bicker、Timsaur、Tim Staley、Tirth Patel、Tola A、Tom Augspurger、Tom Dupré la Tour、topisan、Trevor Stephens、ttang131、Urvang Patel、Vathsala Achar、veerlosar、Venkatachalam N、Victor Luzgin、Vincent Jeanselme、Vincent Lostanlen、Vladimir Korolev、vnherdeiro、Wenbo Zhao、Wendy Hu、willdarnell、William de Vazelhes、wolframalpha、xavier dupré、xcjason、x-martian、xsat、xun-tang、Yinglr、yokasre、Yu-Hang “Maxin” Tang、Yulia Zamriy、Zhao Feng