版本 1.2#
有關此版本的主要重點簡述,請參閱 scikit-learn 1.2 的發行重點。
變更日誌圖例
主要功能 之前無法做到的大型功能。
功能 之前無法做到的功能。
效率 現有的功能現在可能不需要那麼多的計算或記憶體。
增強 各種小改進。
修復 之前無法按照文件記載或根據合理預期運作的功能,現在應該可以正常運作。
API 變更 您需要變更程式碼才能在未來達到相同的效果;或者某項功能將在未來移除。
版本 1.2.2#
2023 年 3 月
變更日誌#
sklearn.base
#
修復 當
set_output(transform="pandas")
時,如果base.TransformerMixin
的 轉換 輸出已經是一個 DataFrame,則會保持索引。 #25747 由 Thomas Fan 提供。
sklearn.calibration
#
修復 當使用
base_estimator__
前綴來設定calibration.CalibratedClassifierCV
中使用的估算器參數時,會發出棄用警告。 #25477 由 Tim Head 提供。
sklearn.cluster
#
修復 修復
cluster.BisectingKMeans
中的錯誤,該錯誤會因多次初始化時標籤的排列而導致fit
隨機失敗。 #25563 由 Jérémie du Boisberranger 提供。
sklearn.compose
#
修復 修復
compose.ColumnTransformer
中的錯誤,現在當set_output(transform="pandas")
時,它支援空選取欄位。 #25570 由 Thomas Fan 提供。
sklearn.ensemble
#
修復 當使用
base_estimator__
前綴來設定ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
、ensemble.BaggingClassifier
和ensemble.BaggingRegressor
中使用的估算器參數時,會發出棄用警告。 #25477 由 Tim Head 提供。
sklearn.feature_selection
#
修復 修復
feature_selection.SequentialFeatureSelector
不再接受負tol
的回歸問題。 #25664 由 Jérémie du Boisberranger 提供。
sklearn.inspection
#
修復 在處理無法用
numpy.unique
排序的混合資料類型類別時,在inspection.partial_dependence
中引發更具資訊性的錯誤訊息。當類別為str
且使用np.nan
時存在遺失值,通常會發生此問題。 #25774 由 Guillaume Lemaitre 提供。
sklearn.isotonic
#
修復 修復
isotonic.IsotonicRegression
中的錯誤,其中當全域設定設定為transform_output="pandas"
時,isotonic.IsotonicRegression.predict
會傳回 pandas DataFrame。 #25500 由 Guillaume Lemaitre 提供。
sklearn.preprocessing
#
修復 當存在不常出現的類別時,
preprocessing.OneHotEncoder.drop_idx_
現在會正確參考categories_
屬性中捨棄的類別。 #25589 由 Thomas Fan 提供。修復 當訓練資料中存在遺失值時,
preprocessing.OrdinalEncoder
現在正確支援設定為類別基數的encoded_missing_value
或unknown_value
。 #25704 由 Thomas Fan 提供。
sklearn.tree
#
修復 修復
tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
中的回歸問題,其中當min_sample_split=1
時,1.2 版中不再引發錯誤。 #25744 由 Jérémie du Boisberranger 提供。
sklearn.utils
#
修正 修正了
utils.check_array
中的一個錯誤,現在可以根據 Array API 規範正確執行非有限值的驗證。 #25619 由 Thomas Fan 貢獻。修正
utils.multiclass.type_of_target
可以將 pandas 可空數據類型識別為分類目標。 #25638 由 Thomas Fan 貢獻。
版本 1.2.1#
2023 年 1 月
變更的模型#
以下估計器和函數,當使用相同的數據和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強)或隨機抽樣程序的變更而發生。
修正
decomposition.MiniBatchDictionaryLearning
中的擬合組件可能會有所不同。充分統計的線上更新現在會適當地考慮批次的大小。 #25354 由 Jérémie du Boisberranger 貢獻。修正
preprocessing.OneHotEncoder
的categories_
屬性現在在使用預定義的字串類別時,始終包含一個object
的陣列。編碼為位元組的預定義類別將不再適用於編碼為字串的X
。#25174 由 Tim Head 貢獻。
影響所有模組的變更#
修正 移除內部使用鄰近搜尋方法的估計器的虛假警告。#25129 由 Julien Jerphanion 貢獻。
修正 修正在使用
n_jobs > 1
的估計器中忽略目前設定的錯誤。當sklearn.get_config
訪問的是空的執行緒本地設定而不是在joblib.Parallel
首次呼叫的執行緒中可見的設定時,joblib
的輔助執行緒所調度的任務會觸發此錯誤。#25363 由 Guillaume Lemaitre 貢獻。
變更日誌#
sklearn.base
#
修正 修正在 Python 3.11 中使用時會阻止某些估計器被 pickle 的
BaseEstimator.__getstate__
中的迴歸錯誤。 #25188 由 Benjamin Bossan 貢獻。修正 如果類別本身定義了
transform
,則繼承自base.TransformerMixin
將只會包裝transform
方法。 #25295 由 Thomas Fan 貢獻。
sklearn.datasets
#
修正 修正了在分隔符號後引入前導空格時,
datasets.fetch_openml
中 liac-arff 和 pandas 解析器之間的不一致。ARFF 規範要求忽略前導空格。 #25312 由 Guillaume Lemaitre 貢獻。修正 修正在使用
parser="pandas"
時,datasets.fetch_openml
中單引號和反斜線逸出字元未正確處理的錯誤。 #25511 由 Guillaume Lemaitre 貢獻。
sklearn.decomposition
#
修正 修正了
decomposition.MiniBatchDictionaryLearning
中的一個錯誤,當在不同大小的批次上呼叫partial_fit
時,充分統計的線上更新是不正確的。 #25354 由 Jérémie du Boisberranger 貢獻。修正
decomposition.DictionaryLearning
更好地支援唯讀 NumPy 陣列。特別是,當與座標下降演算法(即當fit_algorithm='cd'
時)一起使用時,它更好地支援記憶體對應的大型數據集。#25172 由 Julien Jerphanion 貢獻。
sklearn.ensemble
#
sklearn.feature_extraction
#
修正 當輸入是字串列表時,
feature_extraction.FeatureHasher
會引發資訊豐富的錯誤。 #25094 由 Thomas Fan 貢獻。
sklearn.linear_model
#
修正 修正了
linear_model.SGDClassifier
和linear_model.SGDRegressor
中的迴歸錯誤,這使得它們在verbose
參數設定為大於 0 的值時無法使用。 #25250 由 Jérémie Du Boisberranger 貢獻。
sklearn.manifold
#
修正 當輸出類型設定為 pandas 時,
manifold.TSNE
現在可以正確運作 #25370 由 Tim Head 貢獻。
sklearn.model_selection
#
修正
model_selection.cross_validate
在多指標評分的情況下,若部分評分器失敗,則未失敗的評分器現在會回傳正確的分數,而不是error_score
值。#23101 由 András Simon 和 Thomas Fan 貢獻。
sklearn.neural_network
#
修正
neural_network.MLPClassifier
和neural_network.MLPRegressor
在使用具有特徵名稱的資料進行擬合時,不再引發警告。#24873 由 Tim Head 貢獻。修正 改進了當
early_stopping=True
且呼叫partial_fit
時,neural_network.MLPClassifier
和neural_network.MLPRegressor
中的錯誤訊息。#25694 由 Thomas Fan 貢獻。
sklearn.preprocessing
#
修正 當
check_inverse=True
時,preprocessing.FunctionTransformer.inverse_transform
正確支援所有數值的 DataFrames。#25274 由 Thomas Fan 貢獻。修正 當
extrapolations="periodic"
時,preprocessing.SplineTransformer.get_feature_names_out
正確回傳特徵名稱。#25296 由 Thomas Fan 貢獻。
sklearn.tree
#
sklearn.utils
#
修正 還原
utils.check_array
對於布林類型 pandas Series 的行為。會保留類型,而不是轉換為float64
。#25147 由 Tim Head 貢獻。API 變更
utils.fixes.delayed
在 1.2.1 版本中已棄用,並將在 1.5 版本中移除。請改為導入utils.parallel.delayed
,並與新引入的utils.parallel.Parallel
一起使用,以確保 scikit-learn 設定能正確傳播到工作程序。#25363 由 Guillaume Lemaitre 貢獻。
版本 1.2.0#
2022 年 12 月
變更的模型#
以下估計器和函數,當使用相同的數據和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強)或隨機抽樣程序的變更而發生。
增強 當使用
'amg'
或'lobpcg'
求解器時,cluster.SpectralClustering
、manifold.SpectralEmbedding
、cluster.spectral_clustering
和manifold.spectral_embedding
的預設eigen_tol
現在為None
。此變更提高了求解器的數值穩定性,但可能會導致不同的模型。增強
linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
可以使用 lbfgs 求解器達到更高的精度,尤其是在tol
設定為極小值時。此外,verbose
現在會正確地傳遞到 L-BFGS-B。#23619 由 Christian Lorentzen 貢獻。增強
metrics.log_loss
的eps
預設值已從1e-15
變更為"auto"
。"auto"
會將eps
設定為np.finfo(y_pred.dtype).eps
。#24354 由 Safiuddin Khaja 和 gsiisg 貢獻。修正 使
decomposition.SparsePCA
中的components_
符號為確定性的。#23935 由 Guillaume Lemaitre 貢獻。修正
decomposition.FastICA
中的components_
符號可能會有所不同。現在使用所有 SVD 求解器時,它是一致且確定的。#22527 由 Meekail Zain 和 Thomas Fan 貢獻。修復
linear_model._sgd_fast._plain_sgd
中提前停止的條件已變更,此函式由linear_model.SGDRegressor
和linear_model.SGDClassifier
使用。舊的條件無法區分訓練集和驗證集,並會過度放大誤差容忍度。此問題已在 #23798 中由 Harsh Agrawal 修復。修復 對於
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
,對應到 NaN 分數的排名將會被設定為最大可能的排名。 #24543 由 Guillaume Lemaitre 貢獻。API 變更
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
的tol
預設值已從1e-3
變更為1e-4
。 #24465 由 Christian Lorentzen 貢獻。
影響所有模組的變更#
主要功能 所有轉換器都已採用
set_output
API。包含轉換器的元估計器,例如pipeline.Pipeline
或compose.ColumnTransformer
也定義了set_output
。詳情請見 SLEP018。 #23734 和 #24699 由 Thomas Fan 貢獻。效率提升 已重構用於密集 float32 資料集上成對距離縮減的底層常式。以下函式和估計器現在在硬體擴展性和加速方面獲得了效能提升:
例如,在筆記型電腦上,
sklearn.neighbors.NearestNeighbors.kneighbors
和sklearn.neighbors.NearestNeighbors.radius_neighbors
的速度分別比以前快了 20 倍和 5 倍。此外,這兩個演算法的實作現在適用於具有許多核心的機器,使其可用於由數百萬個樣本組成的資料集。
#23865 由 Julien Jerphanion 貢獻。
增強 透過利用 NumPy 的 SIMD 優化原語,所有估計器中對 float32 資料的有限性檢查(偵測 NaN 和無限值)現在顯著更有效率。 #23446 由 Meekail Zain 貢獻。
增強 所有估計器中的有限性檢查(偵測 NaN 和無限值)現在透過使用更有效率的首次停止演算法而更快。 #23197 由 Meekail Zain 貢獻。
增強 已針對以下估計器新增或改進了對所有距離度量以及 float32 和 float64 資料集之密集和稀疏資料集配對組合的支援:
#23604 和 #23585 由 Julien Jerphanion、Olivier Grisel 和 Thomas Fan 貢獻,#24556 由 Vincent Maladière 貢獻。
修復 系統性地檢查文件中程式碼範例中使用的資料集 tarball 的 sha256 摘要。 #24617 由 Olivier Grisel 和 Thomas Fan 貢獻。感謝 Sim4n6 的報告。
變更日誌#
sklearn.base
#
增強 引入
base.ClassNamePrefixFeaturesOutMixin
和base.ClassNamePrefixFeaturesOutMixin
混合類別,為常見的轉換器用例定義 get_feature_names_out。 #24688 由 Thomas Fan 貢獻。
sklearn.calibration
#
API 變更 在
calibration.CalibratedClassifierCV
中將base_estimator
重新命名為estimator
,以提高可讀性和一致性。參數base_estimator
已棄用,將在 1.4 版中移除。 #22054 由 Kevin Roice 貢獻。
sklearn.cluster
#
效率提升 使用
algorithm="lloyd"
的cluster.KMeans
現在更快且使用更少的記憶體。 #24264 由 Vincent Maladiere 貢獻。增強
cluster.OPTICS
的predict
和fit_predict
方法現在接受輸入資料的稀疏資料類型。 #14736 由 Hunt Zhan 貢獻、 #20802 由 Brandon Pokorny 貢獻,以及 #22965 由 Meekail Zain 貢獻。增強
cluster.Birch
現在保留numpy.float32
輸入的 dtype。 #22968 由Meekail Zain <micky774>
貢獻。增強功能
cluster.KMeans
和cluster.MiniBatchKMeans
現在接受n_init
的新選項'auto'
,當使用init='k-means++'
時,為了效率,會將隨機初始化的次數更改為 1 次。這開始棄用這兩個類別中n_init
的預設值,並且兩者的預設值將在 1.4 版本中更改為n_init='auto'
。 #23038 由 Meekail Zain 貢獻。增強功能
cluster.SpectralClustering
和cluster.spectral_clustering
現在會將eigen_tol
參數傳遞給所有eigen_solver
的選擇。包含一個新的選項eigen_tol="auto"
,並開始棄用預設值,將在 1.3 版本中從eigen_tol=0
更改為eigen_tol="auto"
。 #23210 由 Meekail Zain 貢獻。修正
cluster.KMeans
現在在預測時支援唯讀屬性。 #24258 由 Thomas Fan 貢獻。API 變更
cluster.AgglomerativeClustering
的affinity
屬性現在已棄用,並將在 v1.4 中重新命名為metric
。 #23470 由 Meekail Zain 貢獻。
sklearn.datasets
#
增強功能 在
datasets.fetch_openml
中引入新的參數parser
。parser="pandas"
允許使用 CPU 和記憶體效率非常高的pandas.read_csv
解析器來載入密集 ARFF 格式的資料集檔案。可以傳遞parser="liac-arff"
來使用舊的 LIAC 解析器。當parser="auto"
時,密集資料集會以 "pandas" 載入,而稀疏資料集則會以 "liac-arff" 載入。目前,預設為parser="liac-arff"
,並將在 1.4 版本中變更為parser="auto"
。 #21938 由 Guillaume Lemaitre 貢獻。增強功能
datasets.dump_svmlight_file
現在透過 Cython 實作加速,提供 2-4 倍的加速。 #23127 由 Meekail Zain 貢獻。增強功能 類似路徑的物件(例如使用 pathlib 建立的物件)現在允許作為
datasets.load_svmlight_file
和datasets.load_svmlight_files
中的路徑。 #19075 由 Carlos Ramos Carreño 貢獻。修正 確保
datasets.fetch_lfw_people
和datasets.fetch_lfw_pairs
會根據slice_
參數在內部裁剪影像。 #24951 由 Guillaume Lemaitre 貢獻。
sklearn.decomposition
#
效率
decomposition.FastICA.fit
在記憶體佔用和執行時間方面都經過了最佳化。 #22268 由 MohamedBsh 貢獻。增強功能
decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
現在實作了inverse_transform
函數。 #23905 由 Guillaume Lemaitre 貢獻。增強功能
decomposition.FastICA
現在允許使用者透過新的whiten_solver
參數選擇如何執行白化,該參數支援svd
和eigh
。whiten_solver
的預設值為svd
,儘管在num_features > num_samples
的情況下,eigh
可能更快且記憶體效率更高。 #11860 由 Pierre Ablin 貢獻,#22527 由 Meekail Zain 和 Thomas Fan 貢獻。增強功能
decomposition.LatentDirichletAllocation
現在會為numpy.float32
輸入保留 dtype。 #24528 由 Takeshi Oura 和 Jérémie du Boisberranger 貢獻。修正 使
decomposition.SparsePCA
中的components_
符號為確定性的。#23935 由 Guillaume Lemaitre 貢獻。API 變更
decomposition.MiniBatchSparsePCA
的n_iter
參數已棄用,並被參數max_iter
、tol
和max_no_improvement
取代,以便與decomposition.MiniBatchDictionaryLearning
一致。n_iter
將在 1.3 版本中移除。 #23726 由 Guillaume Lemaitre 貢獻。API 變更
decomposition.PCA
的n_features_
屬性已被棄用,改用n_features_in_
,並將在 1.4 版本中移除。 #24421 由 Kshitij Mathur 貢獻。
sklearn.discriminant_analysis
#
主要功能
discriminant_analysis.LinearDiscriminantAnalysis
現在針對solver="svd"
支援 Array API。Array API 支援被視為實驗性質,可能會在沒有經過我們通常的滾動棄用週期政策下進行演變。詳情請參閱 Array API 支援 (實驗性)。 #22554 由 Thomas Fan 貢獻。修復 僅在
fit
中驗證參數,而不是在__init__
中驗證discriminant_analysis.QuadraticDiscriminantAnalysis
。 #24218 由 Stefanie Molin 貢獻。
sklearn.ensemble
#
主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
現在透過建構函式的引數interaction_cst
支援交互約束。 #21020 由 Christian Lorentzen 貢獻。使用交互約束也能加快擬合速度。 #24856 由 Christian Lorentzen 貢獻。功能 為
ensemble.HistGradientBoostingClassifier
新增class_weight
。 #22014 由 Thomas Fan 貢獻。效率 透過避免資料複製,改善
ensemble.IsolationForest
的執行時間效能。 #23252 由 Zhehao Liu 貢獻。增強
ensemble.StackingClassifier
現在接受任何類型的基礎估計器。 #24538 由 Guillem G Subies 貢獻。增強 使得可以將
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的categorical_features
參數作為特徵名稱傳遞。 #24889 由 Olivier Grisel 貢獻。增強
ensemble.StackingClassifier
現在支援多標籤指示器目標 #24146 由 Nicolas Peretti, Nestor Navarro, Nati Tomattis 和 Vincent Maladiere 貢獻。增強
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingClassifier
現在接受其monotonic_cst
參數,可以傳遞為字典形式,而不是之前支援的類陣列形式。此類字典以特徵名稱作為鍵,以-1
、0
、1
作為值,來指定每個特徵的單調性約束。 #24855 由 Olivier Grisel 貢獻。增強
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的交互約束現在可以指定為字串,適用於兩種常見情況:「no_interactions」和「pairwise」交互。 #24849 由 Tim Head 貢獻。修復 修復了當以非常小的樣本權重擬合時,
ensemble.AdaBoostClassifier
在特徵重要性輸出 NaN 的問題。 #20415 由 Zhehao Liu 貢獻。修復 當預測編碼為負值的類別時,
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
不再出錯,而是將其視為「缺失類別」的成員。 #24283 由 Thomas Fan 貢獻。修復
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
,當verbose>=1
時,會印出關於計算直方圖和尋找最佳分割的詳細時間資訊。之前遺漏的根節點所花費的時間現在已包含在列印的資訊中。 #24894 由 Christian Lorentzen 貢獻。API 變更 在以下類別中,將建構函式參數
base_estimator
重新命名為estimator
:ensemble.BaggingClassifier
、ensemble.BaggingRegressor
、ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
。base_estimator
在 1.2 版本中已被棄用,並將在 1.4 版本中移除。 #23819 由 Adrian Trujillo 和 Edoardo Abati 貢獻。API 變更 在以下類別中,將已擬合屬性
base_estimator_
重新命名為estimator_
:ensemble.BaggingClassifier
、ensemble.BaggingRegressor
、ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
、ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
、ensemble.ExtraTreesRegressor
、ensemble.RandomTreesEmbedding
、ensemble.IsolationForest
。base_estimator_
在 1.2 版中已棄用,並將在 1.4 版中移除。 #23819 由 Adrian Trujillo 和 Edoardo Abati 提供。
sklearn.feature_selection
#
修復 修復
feature_selection.mutual_info_regression
和feature_selection.mutual_info_classif
中的錯誤,其中X
中的連續特徵應獨立縮放到單位變異數,無論目標y
是連續的還是離散的。#24747 由 Guillaume Lemaitre 提供
sklearn.gaussian_process
#
修復 修復 PyPy(以及其他可能非 CPython 的直譯器)中,當
nu=0.5
時,gaussian_process.kernels.Matern
的梯度計算。#24245 由 Loïc Estève 提供。修復
gaussian_process.GaussianProcessRegressor
的fit
方法,在使用自訂核心且其diag
方法會傳回部分輸入 X 的情況下,將不會修改輸入 X。#24405 由 Omar Salman 提供。
sklearn.impute
#
增強 在
impute.SimpleImputer
、impute.KNNImputer
和impute.IterativeImputer
中新增了keep_empty_features
參數,可防止在轉換時移除僅包含遺失值的特徵。#16695 由 Vitor Santa Rosa 提供。
sklearn.inspection
#
主要功能 擴展了
inspection.partial_dependence
和inspection.PartialDependenceDisplay
,以處理類別特徵。#18298 由 Madhura Jayaratne 和 Guillaume Lemaitre 提供。修復 如果輸入資料不是 2 維的,
inspection.DecisionBoundaryDisplay
現在會引發錯誤。#25077 由 Arturo Amor 提供。
sklearn.kernel_approximation
#
增強
kernel_approximation.RBFSampler
現在會保留numpy.float32
輸入的 dtype。#24317 由Tim Head <betatim>
提供。增強
kernel_approximation.SkewedChi2Sampler
現在會保留numpy.float32
輸入的 dtype。#24350 由 Rahil Parikh 提供。增強
kernel_approximation.RBFSampler
現在接受參數gamma
的'scale'
選項。#24755 由 Gleb Levitski 提供。
sklearn.linear_model
#
增強
linear_model.LogisticRegression
、linear_model.LogisticRegressionCV
、linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
獲得了新的解算器solver="newton-cholesky"
。這是一個二階(牛頓)最佳化常式,它使用海森矩陣的 Cholesky 分解。當n_samples >> n_features
時,已觀察到"newton-cholesky"
解算器比"lbfgs"
解算器在具有某些罕見類別層級的單熱編碼類別變數問題上,收斂速度更快且達到更高精度的解決方案。#24637 和 #24767 由 Christian Lorentzen 提供。增強
linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
可以使用 lbfgs 求解器達到更高的精度,尤其是在tol
設定為極小值時。此外,verbose
現在會正確地傳遞到 L-BFGS-B。#23619 由 Christian Lorentzen 貢獻。修復 當所有驗證樣本都具有零樣本權重時,
linear_model.SGDClassifier
和linear_model.SGDRegressor
將會引發錯誤。#23275 由Zhehao Liu <MaxwellLZH>
提供。修正
linear_model.SGDOneClassSVM
不再於建構函式中執行參數驗證。所有的驗證現在都在fit()
和partial_fit()
中處理。#24433 由 Yogendrasingh、Arisa Y. 和 Tim Head 提供。修正 修正當在
linear_model.SGDRegressor
和linear_model.SGDClassifier
中啟用提前停止時的平均損失計算。同時也更新了提前停止的條件。#23798 由 Harsh Agrawal 提供。API 變更 在 1.4 版本中,
linear_model.QuantileRegressor
中solver
參數的預設值將從"interior-point"
變更為"highs"
。#23637 由 Guillaume Lemaitre 提供。API 變更
linear_model.LogisticRegression
中penalty
參數的字串選項"none"
已被棄用,並將在 1.4 版本中移除。請改用None
。#23877 由 Zhehao Liu 提供。API 變更
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
的tol
預設值已從1e-3
變更為1e-4
。 #24465 由 Christian Lorentzen 貢獻。
sklearn.manifold
#
功能 在
manifold.MDS
中新增使用正規化應力的選項。設定新的normalize
參數為True
即可啟用。#10168 由 Łukasz Borchmann 提供, #12285 由 Matthias Miltenberger 提供, #13042 由 Matthieu Parizy 提供, #18094 由 Roth E Conrad 提供,以及 #22562 由 Meekail Zain 提供。強化 將
eigen_tol
參數新增至manifold.SpectralEmbedding
。manifold.spectral_embedding
和manifold.SpectralEmbedding
現在都會將eigen_tol
傳播到eigen_solver
的所有選項。包含新的選項eigen_tol="auto"
,並開始棄用,將預設值從eigen_tol=0
變更為 1.3 版本中的eigen_tol="auto"
。#23210 由 Meekail Zain 提供。強化
manifold.Isomap
現在會為np.float32
輸入保留 dtype。#24714 由 Rahil Parikh 提供。API 變更 在
manifold.MDS
和manifold.smacof
中,為normalized_stress
參數新增"auto"
選項。請注意,normalized_stress
僅對非度量 MDS 有效,因此當metric=False
時,"auto"
選項會啟用normalized_stress
,而當metric=True
時則會停用。在 1.4 版本中,"auto"
將成為normalized_stress
的預設值。#23834 由 Meekail Zain 提供。
sklearn.metrics
#
功能
metrics.ConfusionMatrixDisplay.from_estimator
、metrics.ConfusionMatrixDisplay.from_predictions
和metrics.ConfusionMatrixDisplay.plot
接受一個text_kw
參數,該參數會傳遞給 matplotlib 的text
函式。#24051 由 Thomas Fan 提供。功能 新增
metrics.class_likelihood_ratios
,用於計算從二元分類問題的混淆矩陣中得出的正向和負向可能性比率。#22518 由 Arturo Amor 提供。功能 新增
metrics.PredictionErrorDisplay
以繪製殘差 vs. 預測值和實際值 vs. 預測值,以便定性評估迴歸器的行為。可以使用類別方法metrics.PredictionErrorDisplay.from_estimator
和metrics.PredictionErrorDisplay.from_predictions
建立顯示。#18020 由 Guillaume Lemaitre 提供。功能
metrics.roc_auc_score
現在支援單對多類別案例 (multi_class="ovr"
) 的微平均 (average="micro"
)。#24338 由 Arturo Amor 提供。增強 在
metrics.log_loss
的eps
中新增一個"auto"
選項。此選項將根據y_pred
的資料型態自動設定eps
的值。此外,eps
的預設值從1e-15
變更為新的"auto"
選項。#24354 由 Safiuddin Khaja 和 gsiisg 貢獻。修正 允許
csr_matrix
作為metrics.label_ranking_average_precision_score
指標的參數y_true
的輸入。#23442 由 Sean Atukorala 貢獻修正 當
y_true
值包含負值時,metrics.ndcg_score
現在會觸發警告。使用者仍然可以使用負值,但結果可能不會介於 0 和 1 之間。從 v1.4 開始,為y_true
傳入負值將會引發錯誤。#22710 由 Conroy Trinh 貢獻,以及 #23461 由 Meekail Zain 貢獻。修正 在邊界 (0 或 1) 上的預測,使用
eps=0
的metrics.log_loss
現在會回傳正確的 0 或np.inf
值,而不是nan
。它也接受整數輸入。#24365 由 Christian Lorentzen 貢獻。API 變更
metrics.pairwise.manhattan_distances
的參數sum_over_features
已被棄用,將在 1.4 版本中移除。#24630 由 Rushil Desai 貢獻。
sklearn.model_selection
#
功能 新增了類別
model_selection.LearningCurveDisplay
,它允許輕鬆繪製由函式model_selection.learning_curve
取得的學習曲線。#24084 由 Guillaume Lemaitre 貢獻。修正 對於所有
SearchCV
類別和 scipy >= 1.10,對應於 nan 分數的排名會正確設定為最大可能的排名,而不是np.iinfo(np.int32).min
。#24141 由 Loïc Estève 貢獻。修正 在
model_selection.HalvingGridSearchCV
和model_selection.HalvingRandomSearchCV
中,具有 NaN 分數的參數組合現在共享最低的排名。#24539 由 Tim Head 貢獻。修復 對於
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
,對應到 NaN 分數的排名將會被設定為最大可能的排名。 #24543 由 Guillaume Lemaitre 貢獻。
sklearn.multioutput
#
功能 為類別:
multioutput.ClassifierChain
和multioutput.RegressorChain
新增了布林值的verbose
旗標。#23977 由 Eric Fiegel, Chiara Marmo, Lucy Liu, 和 Guillaume Lemaitre 貢獻。
sklearn.naive_bayes
#
功能 為所有樸素貝氏分類器新增了方法
predict_joint_log_proba
。#23683 由 Andrey Melnik 貢獻。增強 為
naive_bayes.BernoulliNB
、naive_bayes.ComplementNB
、naive_bayes.CategoricalNB
和naive_bayes.MultinomialNB
新增了新參數force_alpha
,允許使用者將參數 alpha 設定為非常小的數字,大於或等於 0,而先前會自動變更為1e-10
。#16747 由 @arka204 貢獻、#18805 由 @hongshaoyang 貢獻,以及 #22269 由 Meekail Zain 貢獻。
sklearn.neighbors
#
功能 新增了新函式
neighbors.sort_graph_by_row_values
,用於對 CSR 稀疏圖進行排序,使得每一行都以遞增的值儲存。這有助於在使用各種估算器中的預先計算稀疏距離矩陣時提高效率,並避免EfficiencyWarning
。#23139 由 Tom Dupre la Tour 貢獻。效率
neighbors.NearestCentroid
更快且需要較少的記憶體,因為它更好地利用 CPU 的快取來計算預測。#24645 由 Olivier Grisel 貢獻。增強
neighbors.KernelDensity
的頻寬參數現在接受使用 Scott 和 Silverman 估計方法的定義。#10468 由 Ruben 貢獻,以及 #22993 由 Jovan Stojanovic 貢獻。增強
neighbors.NeighborsBase
現在接受 Minkowski 半度量(即當 \(0 < p < 1\) 時,對於metric="minkowski"
)用於algorithm="auto"
或algorithm="brute"
。#24750 由 Rudresh Veerkhare 貢獻修復
neighbors.NearestCentroid
現在會在 fit 階段拋出具資訊性的錯誤訊息,而不是在 predict 階段才拋出低階錯誤訊息。#23874 由 Juan Gomez 貢獻。修復 為
neighbors.KNeighborsTransformer
和neighbors.RadiusNeighborsTransformer
預設設定n_jobs=None
(而非1
)。#24075 由 Valentin Laurent 貢獻。增強
neighbors.LocalOutlierFactor
現在會為numpy.float32
輸入保留 dtype。#22665 由 Julien Jerphanion 貢獻。
sklearn.neural_network
#
修復
neural_network.MLPClassifier
和neural_network.MLPRegressor
總是會公開參數best_loss_
、validation_scores_
和best_validation_score_
。best_loss_
在early_stopping=True
時會設為None
,而validation_scores_
和best_validation_score_
在early_stopping=False
時會設為None
。#24683 由 Guillaume Lemaitre 貢獻。
sklearn.pipeline
#
增強 當
pipeline.FeatureUnion
中的其中一個轉換器為"passthrough"
時,現在可以使用pipeline.FeatureUnion.get_feature_names_out
。#24058 由 Diederik Perdok 貢獻。增強
pipeline.FeatureUnion
類別現在具有named_transformers
屬性,可用於透過名稱存取轉換器。#20331 由 Christopher Flynn 貢獻。
sklearn.preprocessing
#
增強 無論
validate
參數為何,preprocessing.FunctionTransformer
都會嘗試設定n_features_in_
和feature_names_in_
。#23993 由 Thomas Fan 貢獻。修復
preprocessing.LabelEncoder
會在transform
中正確編碼 NaN。#22629 由 Thomas Fan 貢獻。API 變更
preprocessing.OneHotEncoder
的sparse
參數現在已棄用,並將在 1.4 版本中移除。請改用sparse_output
。#24412 由 Rushil Desai 貢獻。
sklearn.svm
#
API 變更
svm.NuSVR
、svm.SVR
、svm.OneClassSVM
的class_weight_
屬性現在已棄用。#22898 由 Meekail Zain 貢獻。
sklearn.tree
#
增強
tree.plot_tree
、tree.export_graphviz
現在使用小寫x[i]
來表示特徵i
。#23480 由 Thomas Fan 貢獻。
sklearn.utils
#
功能 新增一個模組公開開發工具,以探索 scikit-learn 中的估計器 (即
utils.discovery.all_estimators
)、顯示器 (即utils.discovery.all_displays
) 和函式 (即utils.discovery.all_functions
)。#21469 由 Guillaume Lemaitre 貢獻。增強
utils.extmath.randomized_svd
現在接受一個引數lapack_svd_driver
,用於指定隨機 SVD 演算法內部確定性 SVD 使用的 lapack 驅動程式。#20617 由 Srinath Kailasa 貢獻。增強
utils.validation.column_or_1d
現在接受一個dtype
參數來指定y
的 dtype。#22629 由 Thomas Fan 貢獻。增強
utils.extmath.cartesian
現在接受具有不同dtype
的陣列,並將輸出轉換為最寬鬆的dtype
。#25067 由 Guillaume Lemaitre 貢獻。修復
utils.multiclass.type_of_target
現在會正確處理稀疏矩陣。#14862 由 Léonard Binet 貢獻。修復 當估計器類別是
get_params
中的值時,HTML 表示法不再出錯。#24512 由 Thomas Fan 貢獻。修正
utils.estimator_checks.check_estimator
現在會正確考量requires_positive_X
標籤。#24667,由 Thomas Fan 貢獻。修正
utils.check_array
現在支援包含pd.NA
的 Pandas Series,會拋出更好的錯誤訊息或回傳相容的ndarray
。#25080,由 Thomas Fan 貢獻。API 變更
utils.extmath.density
的額外關鍵字參數已被棄用,將在 1.4 版中移除。#24523,由 Mia Bajic 貢獻。
程式碼和文件貢獻者
感謝自 1.1 版以來為專案的維護和改進做出貢獻的所有人,包括
2357juan, 3lLobo, Adam J. Stewart, Adam Kania, Adam Li, Aditya Anulekh, Admir Demiraj, adoublet, Adrin Jalali, Ahmedbgh, Aiko, Akshita Prasanth, Ala-Na, Alessandro Miola, Alex, Alexandr, Alexandre Perez-Lebel, Alex Buzenet, Ali H. El-Kassas, aman kumar, Amit Bera, András Simon, Andreas Grivas, Andreas Mueller, Andrew Wang, angela-maennel, Aniket Shirsat, Anthony22-dev, Antony Lee, anupam, Apostolos Tsetoglou, Aravindh R, Artur Hermano, Arturo Amor, as-90, ashah002, Ashwin Mathur, avm19, Azaria Gebremichael, b0rxington, Badr MOUFAD, Bardiya Ak, Bartłomiej Gońda, BdeGraaff, Benjamin Bossan, Benjamin Carter, berkecanrizai, Bernd Fritzke, Bhoomika, Biswaroop Mitra, Brandon TH Chen, Brett Cannon, Bsh, cache-missing, carlo, Carlos Ramos Carreño, ceh, chalulu, Changyao Chen, Charles Zablit, Chiara Marmo, Christian Lorentzen, Christian Ritter, Christian Veenhuis, christianwaldmann, Christine P. Chai, Claudio Salvatore Arcidiacono, Clément Verrier, crispinlogan, Da-Lan, DanGonite57, Daniela Fernandes, DanielGaerber, darioka, Darren Nguyen, davidblnc, david-cortes, David Gilbertson, David Poznik, Dayne, Dea María Léon, Denis, Dev Khant, Dhanshree Arora, Diadochokinetic, diederikwp, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, drewhogg, Duarte OC, Dwight Lindquist, Eden Brekke, Edern, Edoardo Abati, Eleanore Denies, EliaSchiavon, Emir, ErmolaevPA, Fabrizio Damicelli, fcharras, Felipe Siola, Flynn, francesco-tuveri, Franck Charras, ftorres16, Gael Varoquaux, Geevarghese George, genvalen, GeorgiaMayDay, Gianr Lazz, Gleb Levitski, Glòria Macià Muñoz, Guillaume Lemaitre, Guillem García Subies, Guitared, gunesbayir, Haesun Park, Hansin Ahuja, Hao Chun Chang, Harsh Agrawal, harshit5674, hasan-yaman, henrymooresc, Henry Sorsky, Hristo Vrigazov, htsedebenham, humahn, i-aki-y, Ian Thompson, Ido M, Iglesys, Iliya Zhechev, Irene, ivanllt, Ivan Sedykh, Jack McIvor, jakirkham, JanFidor, Jason G, Jérémie du Boisberranger, Jiten Sidhpura, jkarolczak, João David, JohnathanPi, John Koumentis, John P, John Pangas, johnthagen, Jordan Fleming, Joshua Choo Yun Keat, Jovan Stojanovic, Juan Carlos Alfaro Jiménez, juanfe88, Juan Felipe Arias, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kanishk Sachdev, Kanissh, Kaushik Amar Das, Kendall, Kenneth Prabakaran, Kento Nozawa, kernc, Kevin Roice, Kian Eliasi, Kilian Kluge, Kilian Lieret, Kirandevraj, Kraig, krishna kumar, krishna vamsi, Kshitij Kapadni, Kshitij Mathur, Lauren Burke, Léonard Binet, lingyi1110, Lisa Casino, Logan Thomas, Loic Esteve, Luciano Mantovani, Lucy Liu, Maascha, Madhura Jayaratne, madinak, Maksym, Malte S. Kurz, Mansi Agrawal, Marco Edward Gorelli, Marco Wurps, Maren Westermann, Maria Telenczuk, Mario Kostelac, martin-kokos, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, mauroantonioserrano, Max Halford, Maxi Marufo, maximeSaur, Maxim Smolskiy, Maxwell, m. bou, Meekail Zain, Mehgarg, mehmetcanakbay, Mia Bajić, Michael Flaks, Michael Hornstein, Michel de Ruiter, Michelle Paradis, Mikhail Iljin, Misa Ogura, Moritz Wilksch, mrastgoo, Naipawat Poolsawat, Naoise Holohan, Nass, Nathan Jacobi, Nawazish Alam, Nguyễn Văn Diễn, Nicola Fanelli, Nihal Thukarama Rao, Nikita Jare, nima10khodaveisi, Nima Sarajpoor, nitinramvelraj, NNLNR, npache, Nwanna-Joseph, Nymark Kho, o-holman, Olivier Grisel, Olle Lukowski, Omar Hassoun, Omar Salman, osman tamer, ouss1508, Oyindamola Olatunji, PAB, Pandata, partev, Paulo Sergio Soares, Petar Mlinarić, Peter Jansson, Peter Steinbach, Philipp Jung, Piet Brömmel, Pooja M, Pooja Subramaniam, priyam kakati, puhuk, Rachel Freeland, Rachit Keerti Das, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Ravi Makhija, Rehan Guha, Reshama Shaikh, Richard Klima, Rob Crockett, Robert Hommes, Robert Juergens, Robin Lenz, Rocco Meli, Roman4oo, Ross Barnowski, Rowan Mankoo, Rudresh Veerkhare, Rushil Desai, Sabri Monaf Sabri, Safikh, Safiuddin Khaja, Salahuddin, Sam Adam Day, Sandra Yojana Meneses, Sandro Ephrem, Sangam, SangamSwadik, SANJAI_3, SarahRemus, Sashka Warner, SavkoMax, Scott Gigante, Scott Gustafson, Sean Atukorala, sec65, SELEE, seljaks, Shady el Gewily, Shane, shellyfung, Shinsuke Mori, Shiva chauhan, Shoaib Khan, Shogo Hida, Shrankhla Srivastava, Shuangchi He, Simon, sonnivs, Sortofamudkip, Srinath Kailasa, Stanislav (Stanley) Modrak, Stefanie Molin, stellalin7, Stéphane Collot, Steven Van Vaerenbergh, Steve Schmerler, Sven Stehle, Tabea Kossen, TheDevPanda, the-syd-sre, Thijs van Weezel, Thomas Bonald, Thomas Germer, Thomas J. Fan, Ti-Ion, Tim Head, Timofei Kornev, toastedyeast, Tobias Pitters, Tom Dupré la Tour, tomiock, Tom Mathews, Tom McTiernan, tspeng, Tyler Egashira, Valentin Laurent, Varun Jain, Vera Komeyer, Vicente Reyes-Puerta, Vinayak Mehta, Vincent M, Vishal, Vyom Pathak, wattai, wchathura, WEN Hao, William M, x110, Xiao Yuan, Xunius, yanhong-zhao-ef, Yusuf Raji, Z Adil Khwaja, zeeshan lone