版本 1.4#
如需簡短描述此版本的主要重點,請參閱scikit-learn 1.4 的版本重點。
變更日誌圖例
主要功能 過去無法做到的一些重大功能。
功能 過去無法做到的一些功能。
效率 現有的功能現在可能不需要那麼多的運算或記憶體。
增強 各種小的改進。
修正 過去無法如文件所述或符合合理預期的功能,現在應該可以正常運作。
API 變更 您需要變更程式碼才能在未來產生相同的效果;或者某項功能將在未來移除。
版本 1.4.2#
2024 年 4 月
此版本僅支援 numpy 2。
版本 1.4.1#
2024 年 2 月
變更的模型#
API 變更
tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
中的tree_.value
屬性已從樣本數的加權絕對計數變更為樣本總數的加權分數。#27639,由 Samuel Ronsin 提供。
中繼資料路由#
修正 修正當
ColumnTransformer
在另一個元估計器中使用時的路由問題。#28188,由 Adrin Jalali 提供。修正 當未將中繼資料傳遞至包含不支援中繼資料路由的子估計器的元估計器時,不會引發錯誤。#28256,由 Adrin Jalali 提供。
修正 修正
multioutput.MultiOutputRegressor
和multioutput.MultiOutputClassifier
,使其在啟用中繼資料路由時,可與不使用任何中繼資料的估計器搭配使用。#28240,由 Adrin Jalali 提供。
DataFrame 支援#
增強 修正 直接驗證 Pandas 和 Polars DataFrame,而不使用鴨子類型檢查。#28195,由 Thomas Fan 提供。
影響許多模組的變更#
效率 修正 部分還原 #28191,以避免依賴稀疏矩陣進行歐幾里得成對計算的估計器出現效能衰退。受影響的估計器如下
#28235,由 Julien Jerphanion 提供。
修正 修正當使用設定為
pandas
或polars
的transform
的set_output
時,所有 scikit-learn 轉換器中的錯誤。此錯誤可能會導致回傳的 DataFrame 的欄名稱錯誤。#28262,由 Guillaume Lemaitre 提供。修正 當使用者嘗試使用
StackingClassifier
、StackingClassifier
、StackingClassifier
、SelectFromModel
、RFE
、SelfTrainingClassifier
、OneVsOneClassifier
、OutputCodeClassifier
或OneVsRestClassifier
中,其子估計器未實作的方法時,現在會在回溯中重新引發AttributeError
。#28167,由 Stefanie Senger 提供。
變更日誌#
sklearn.calibration
#
修正
calibration.CalibratedClassifierCV
支援來自內部估計器的 float32 輸出的 predict_proba。#28247,由 Thomas Fan 提供。
sklearn.cluster
#
修正
cluster.AffinityPropagation
現在會避免為相同的點指派多個不同的叢集。#28121,由 Pietro Peterlongo 和 Yao Xiao 提供。修正 當叢集數量大於非重複樣本數量時,避免
cluster.KMeans
中出現無限迴圈。#28165,由 Jérémie du Boisberranger 提供。
sklearn.compose
#
修正 當
verbose_feature_names_out=True
且轉換器內部多次使用相同的欄時,compose.ColumnTransformer
現在會轉換為 Polars DataFrame。先前,它會因為重複的欄名稱而引發錯誤。#28262,由 Guillaume Lemaitre 提供。
sklearn.ensemble
#
修復 修正在
pandas
DataFrame
上擬合HistGradientBoostingClassifier
和HistGradientBoostingRegressor
時,使用擴展 dtype(例如pd.Int64Dtype
)的問題。 #28385 由 Loïc Estève 貢獻。修復 修正在 DataFrame 格式中,當目標為多標籤或多類別多輸出時,
ensemble.VotingClassifier
引發的錯誤訊息。 #27702 由 Guillaume Lemaitre 貢獻。
sklearn.impute
#
修復:如果
fill_value
無法使用casting='same_kind'
轉換為輸入值 dtype,則impute.SimpleImputer
現在會在.fit
和.transform
中引發錯誤。 #28365 由 Leo Grinsztajn 貢獻。
sklearn.inspection
#
修復
inspection.permutation_importance
現在可以正確處理sample_weight
以及子採樣(即max_features
< 1.0)。 #28184 由 Michael Mayer 貢獻。
sklearn.linear_model
#
修復
linear_model.ARDRegression
現在可以處理predict(X, return_std=True)
的 pandas 輸入類型。 #28377 由 Eddie Bergman 貢獻。
sklearn.preprocessing
#
修復 使
preprocessing.FunctionTransformer
更寬容,並在以下情況下使用get_feature_names_out
覆蓋輸出欄位名稱:(i)輸入和輸出欄位名稱保持不變(使用 NumPyufunc
時會發生);(ii)輸入欄位名稱為數字;(iii)輸出將設定為 Pandas 或 Polars 資料框架。 #28241 由 Guillaume Lemaitre 貢獻。修復 當使用
transform="polars"
呼叫set_output
且func
未返回 Polars 資料框架或未指定feature_names_out
時,preprocessing.FunctionTransformer
現在也會發出警告。 #28263 由 Guillaume Lemaitre 貢獻。修復 當
target_type="continuous"
且輸入為唯讀時,preprocessing.TargetEncoder
不再失敗。特別是,它現在可以與啟用 pandas copy-on-write 模式一起使用。 #28233 由 John Hopfensperger 貢獻。
sklearn.tree
#
修復
tree.DecisionTreeClassifier
和tree.DecisionTreeRegressor
正在正確處理遺失值。當資料中不存在遺失值時,內部標準未初始化,導致可能錯誤的標準值。 #28295 由 Guillaume Lemaitre 貢獻,以及 #28327 由 Adam Li 貢獻。
sklearn.utils
#
增強 修復
utils.metaestimators.available_if
現在會將check
函式的錯誤重新引發為AttributeError
的原因。 #28198 由 Thomas Fan 貢獻。修復 當
X
是 Python 列表且axis=1
時,utils._safe_indexing
現在會引發ValueError
,如 docstring 中所述。 #28222 由 Guillaume Lemaitre 貢獻。
版本 1.4.0#
2024 年 1 月
變更的模型#
以下估計器和函式,當使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強功能)或隨機抽樣程序的變更所致。
效率
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
現在對於求解器"lbfgs"
和"newton-cg"
具有更好的收斂性。這兩個求解器現在可以根據指定的tol
達到更高的係數精度。此外,lbfgs 可以更好地利用tol
,即更快停止或達到更高的精度。注意:lbfgs 是預設的求解器,因此此變更可能會影響許多模型。此變更也意味著,使用此新版本的 scikit-learn,您的模型的coef_
和intercept_
結果係數將會因這兩個求解器而變更(當再次在相同資料上擬合時)。變更量取決於指定的tol
,對於較小的值,您將獲得更精確的結果。 #26721 由 Christian Lorentzen 貢獻。修復 修復了在使用 Cython 損失函式的估計器中在 PyPy 中觀察到的記憶體洩漏。 #27670 由 Guillaume Lemaitre 貢獻。
影響所有模組的變更#
主要功能 轉換器現在支援使用
set_output(transform="polars")
輸出 polars。 #27315 由 Thomas Fan 貢獻。增強 所有估計器現在都可以識別採用 DataFrame Interchange Protocol 的任何資料框架中的欄位名稱。透過
np.asarray(df)
返回正確表示的資料框架預期將與我們的估計器和函式一起使用。 #26464 由 Thomas Fan 貢獻。增強 估算器的 HTML 表示現在包含文件連結,並以顏色編碼來表示估算器是否已擬合(未擬合的估算器為橘色,已擬合的估算器為藍色)。#26616 由 Riccardo Cappuzzo, Ines Ibnukhsein, Gael Varoquaux, Joel Nothman 和 Lilian Boulard 共同貢獻。
修正 修正了大多數估算器和函數中的一個錯誤,該錯誤會導致將參數設定為大的整數時產生
TypeError
。#26648 由 Naoise Holohan 貢獻。
中繼資料路由#
以下模型現在在其一個或多個方法中支援中繼資料路由。有關更多詳細資訊,請參閱中繼資料路由使用者指南。
功能
LarsCV
和LassoLarsCV
現在在其fit
方法中支援中繼資料路由,並將中繼資料路由到 CV 分割器。#27538 由 Omar Salman 貢獻。功能
multiclass.OneVsRestClassifier
、multiclass.OneVsOneClassifier
和multiclass.OutputCodeClassifier
現在在其fit
和partial_fit
中支援中繼資料路由,並將中繼資料路由到基礎估算器的fit
和partial_fit
。#27308 由 Stefanie Senger 貢獻。功能
pipeline.Pipeline
現在根據中繼資料路由使用者指南支援中繼資料路由。#26789 由 Adrin Jalali 貢獻。功能
cross_validate
、cross_val_score
和cross_val_predict
現在支援中繼資料路由。中繼資料將路由到估算器的fit
、評分器和 CV 分割器的split
。中繼資料透過新的params
參數接受。fit_params
已被棄用,並將在 1.6 版中移除。當啟用中繼資料路由時,groups
參數也不再作為單獨的參數接受,應透過params
參數傳遞。#26896 由 Adrin Jalali 貢獻。功能
GridSearchCV
、RandomizedSearchCV
、HalvingGridSearchCV
和HalvingRandomSearchCV
現在在其fit
和score
中支援中繼資料路由,並將中繼資料路由到基礎估算器的fit
、CV 分割器和評分器。#27058 由 Adrin Jalali 貢獻。功能
ColumnTransformer
現在根據中繼資料路由使用者指南支援中繼資料路由。#27005 由 Adrin Jalali 貢獻。功能
linear_model.LogisticRegressionCV
現在支援中繼資料路由。linear_model.LogisticRegressionCV.fit
現在接受傳遞給基礎分割器和評分器的**params
。linear_model.LogisticRegressionCV.score
現在接受傳遞給基礎評分器的**score_params
。#26525 由 Omar Salman 貢獻。功能
feature_selection.SelectFromModel
現在在fit
和partial_fit
中支援中繼資料路由。#27490 由 Stefanie Senger 貢獻。功能
linear_model.OrthogonalMatchingPursuitCV
現在支援中繼資料路由。它的fit
現在接受傳遞給基礎分割器的**fit_params
。#27500 由 Stefanie Senger 貢獻。功能
ElasticNetCV
、LassoCV
、MultiTaskElasticNetCV
和MultiTaskLassoCV
現在支援中繼資料路由,並將中繼資料路由到 CV 分割器。#27478 由 Omar Salman 貢獻。修正 所有尚未實作中繼資料路由的元估算器現在在
get_metadata_routing
上,以及在啟用中繼資料路由並將任何中繼資料傳遞給它們時,在fit
上引發NotImplementedError
。#27389 由 Adrin Jalali 貢獻。
支援 SciPy 稀疏陣列#
現在有幾個估算器支援 SciPy 稀疏陣列。以下函數和類別受到影響
函數
cluster.compute_optics_graph
在 #27104 中由 Maren Westermann 貢獻,以及在 #27250 中由 Yao Xiao 貢獻;decomposition.non_negative_factorization
在 #27100 中由 Isaac Virshup 貢獻;在 #27239 中,由 Yaroslav Korobko 貢獻的
feature_selection.f_regression
;在 #27239 中,由 Yaroslav Korobko 貢獻的
feature_selection.r_regression
;在 #27250 中,由 Yao Xiao 貢獻的
manifold.trustworthiness
;在 #27240 中,由 Yao Xiao 貢獻的
manifold.spectral_embedding
;在 #27250 中,由 Yao Xiao 貢獻的
metrics.pairwise_distances
;在 #27250 中,由 Yao Xiao 貢獻的
metrics.pairwise_distances_chunked
;在 #27250 中,由 Yao Xiao 貢獻的
metrics.pairwise.pairwise_kernels
;在 #27274 中,由 Yao Xiao 貢獻的
utils.multiclass.type_of_target
。
類別
在 #27250 中,由 Yao Xiao 貢獻的
cluster.HDBSCAN
;在 #27179 中,由 Nurseit Kamchyev 貢獻的
cluster.KMeans
;在 #27179 中,由 Nurseit Kamchyev 貢獻的
cluster.MiniBatchKMeans
;在 #27104 中,由 Maren Westermann 貢獻,以及在 #27250 中,由 Yao Xiao 貢獻的
cluster.OPTICS
;在 #27161 中,由 Bharat Raghunathan 貢獻的
cluster.SpectralClustering
;在 #27100 中,由 Isaac Virshup 貢獻的
decomposition.MiniBatchNMF
;在 #27100 中,由 Isaac Virshup 貢獻的
decomposition.NMF
;在 #27219 中,由 Yao Xiao 貢獻的
feature_extraction.text.TfidfTransformer
;在 #27250 中,由 Yao Xiao 貢獻的
manifold.Isomap
;在 #27240 中,由 Yao Xiao 貢獻的
manifold.SpectralEmbedding
;在 #27250 中,由 Yao Xiao 貢獻的
manifold.TSNE
;在 #27277 中,由 Yao Xiao 貢獻的
impute.SimpleImputer
;在 #27277 中,由 Yao Xiao 貢獻的
impute.IterativeImputer
;在 #27277 中,由 Yao Xiao 貢獻的
impute.KNNImputer
;在 #27301 中,由 Lohit SundaramahaLingam 貢獻的
kernel_approximation.PolynomialCountSketch
;在 #27252 中,由 Yao Xiao 貢獻的
neural_network.BernoulliRBM
;在 #27166 中,由 Mohit Joshi 貢獻的
preprocessing.PolynomialFeatures
;在 #27314 中,由 Stefanie Senger 貢獻的
random_projection.GaussianRandomProjection
;在 #27314 中,由 Stefanie Senger 貢獻的
random_projection.SparseRandomProjection
。
陣列 API 的支援#
一些估算器和函式支援 陣列 API。此類變更允許將估算器和函式與其他程式庫(如 JAX、CuPy 和 PyTorch)一起使用。因此,這啟用了一些 GPU 加速運算。
有關更多詳細資訊,請參閱 陣列 API 支援 (實驗性)。
函數
在 #27137 中,由 Edoardo Abati 貢獻的
sklearn.metrics.accuracy_score
和sklearn.metrics.zero_one_loss
;在 #26855 中,由 Tim Head 貢獻的
sklearn.model_selection.train_test_split
;在 #27601 中,由 Yaroslav Korobko 貢獻的
is_multilabel
。
類別
在 #26315、#27098 和 #27431 中,由 Mateusz Sokół、Olivier Grisel 和 Edoardo Abati 貢獻,用於
full
和randomized
解算器 (使用 QR 冪迭代) 的decomposition.PCA
;在 #27556 中,由 Edoardo Abati 貢獻的
preprocessing.KernelCenterer
;preprocessing.MaxAbsScaler
在 #27110 中,由 Edoardo Abati 貢獻;preprocessing.MinMaxScaler
在 #26243 中,由 Tim Head 貢獻;preprocessing.Normalizer
在 #27558 中,由 Edoardo Abati 貢獻。
私有損失函數模組#
修復 二項式對數損失的梯度計算現在對於絕對值非常大的輸入(原始預測)在數值上更穩定。 之前,它可能會導致
np.nan
。 從此變更中獲益的模型包括ensemble.GradientBoostingClassifier
、ensemble.HistGradientBoostingClassifier
和linear_model.LogisticRegression
。#28048 由 Christian Lorentzen 貢獻。
變更日誌#
sklearn.base
#
增強
base.ClusterMixin.fit_predict
和base.OutlierMixin.fit_predict
現在接受**kwargs
,這些參數會傳遞給估計器的fit
方法。#26506 由 Adrin Jalali 貢獻。增強 如果
transform
/predict
使用元數據,但在繼承它們的類別中沒有定義自訂的fit_transform
/fit_predict
,base.TransformerMixin.fit_transform
和base.OutlierMixin.fit_predict
現在會發出警告。#26831 由 Adrin Jalali 貢獻。增強
base.clone
現在支援以dict
作為輸入並建立副本。#26786 由 Adrin Jalali 貢獻。API 變更
process_routing
現在具有不同的簽名。前兩個(物件和方法)僅限於位置參數,所有元數據都作為關鍵字參數傳遞。#26909 由 Adrin Jalali 貢獻。
sklearn.calibration
#
增強
calibration.CalibratedClassifierCV
的sigmoid
方法的內部目標和梯度已被私有損失模組取代。#27185 由 Omar Salman 貢獻。
sklearn.cluster
#
修復
cluster.SpectralClustering
建構函式中的degree
參數現在接受實數值,而不僅僅是整數值,與sklearn.metrics.pairwise.polynomial_kernel
的degree
參數一致。#27668 由 Nolan McMahon 貢獻。修復 修復了
cluster.OPTICS
中的錯誤,其中基於前任的群集更正未使用正確的索引。這會導致結果不一致,具體取決於資料的順序。#26459 由 Haoying Zhang 和 Guillaume Lemaitre 貢獻。修復 改進了在
cluster.HDBSCAN
的fit
方法中檢查連通元件數量時的錯誤訊息。#27678 由 Ganesh Tata 貢獻。修復 在
cluster.DBSCAN
的fit
方法中建立預先計算的稀疏矩陣的副本,以避免就地修改稀疏矩陣。#27651 由 Ganesh Tata 貢獻。修復 當
metric="precomputed"
且要求透過參數store_centers
儲存中心時,會引發正確的ValueError
。#27898 由 Guillaume Lemaitre 貢獻。API 變更
kdtree
和balltree
值現在已棄用,並針對cluster.HDBSCAN
的algorithm
參數重新命名為kd_tree
和ball_tree
,以確保命名慣例的一致性。kdtree
和balltree
值將在 1.6 版中移除。#26744 由 Shreesha Kumar Bhat 貢獻。API 變更
cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
中的選項metric=None
在 1.4 版中已棄用,並將在 1.6 版中移除。請改用預設值。#27828 由 Guillaume Lemaitre 貢獻。
sklearn.compose
#
主要功能 通過 DataFrame Interchange Protocol,為
compose.ColumnTransformer
新增 polars 輸入支援。 polars 支援的最低版本為0.19.12
。#26683 由 Thomas Fan 貢獻。修復
cluster.spectral_clustering
和cluster.SpectralClustering
現在會引發明確的錯誤訊息,指出不支援稀疏矩陣和具有np.int64
索引的陣列。#27240 由 Yao Xiao 貢獻。API 變更 使用 pandas 擴展 dtype 且在
ColumnTransformer
中包含pd.NA
的輸出,現在會產生FutureWarning
,並且在 1.6 版本中會導致ValueError
,除非輸出容器已透過set_output(transform="pandas")
設定為 “pandas”。在此之前,此類輸出會產生包含pd.NA
且 dtype 為object
的 numpy 陣列,這些陣列無法轉換為 numpy 浮點數,並且在傳遞給其他 scikit-learn 估算器時會導致錯誤。 #27734 由 Jérôme Dockès 貢獻。
sklearn.covariance
#
增強 允許
covariance.shrunk_covariance
透過處理 nd 陣列一次處理多個共變異數矩陣。 #25275 由 Quentin Barthélemy 貢獻。API 變更 修正
ColumnTransformer
現在會在已擬合的transformers_
屬性中,以對應的FunctionTransformer
取代"passthrough"
。 #27204 由 Adrin Jalali 貢獻。
sklearn.datasets
#
增強
datasets.make_sparse_spd_matrix
現在使用更節省記憶體的稀疏佈局。它還接受一個新的關鍵字sparse_format
,允許指定稀疏矩陣的輸出格式。預設情況下,sparse_format=None
,這會像以前一樣返回一個密集的 numpy ndarray。 #27438 由 Yao Xiao 貢獻。修正 當
X
是唯讀時(例如,numpy.memmap
實例),datasets.dump_svmlight_file
現在不會引發ValueError
。 #28111 由 Yao Xiao 貢獻。API 變更
datasets.make_sparse_spd_matrix
已棄用關鍵字參數dim
,改用n_dim
。dim
將在 1.6 版本中移除。 #27718 由 Adam Li 貢獻。
sklearn.decomposition
#
功能
decomposition.PCA
現在在使用arpack
解算器時,支援scipy.sparse.sparray
和scipy.sparse.spmatrix
輸入。當在諸如datasets.fetch_20newsgroups_vectorized
的稀疏資料上使用時,這可以使速度提高 100 倍(單執行緒)並降低 70 倍的記憶體使用量。基於 Alexander Tarashansky 在 scanpy 中的實作。 #18689 由 Isaac Virshup 和 Andrey Portnoy 貢獻。增強 在
decomposition.non_negative_factorization
、decomposition.NMF
和decomposition.MiniBatchNMF
的n_components
參數中新增了一個 “auto” 選項,以便在使用自訂初始化時自動從 W 或 H 形狀推斷元件數量。此參數的預設值將在 1.6 版本中從None
變更為auto
。 #26634 由 Alexandre Landeau 和 Alexandre Vigny 貢獻。修正
decomposition.dict_learning_online
不再忽略參數max_iter
。 #27834 由 Guillaume Lemaitre 貢獻。修正
decomposition.KernelPCA
建構函式中的degree
參數現在接受實數值,而不僅僅是整數值,這與sklearn.metrics.pairwise.polynomial_kernel
的degree
參數一致。 #27668 由 Nolan McMahon 貢獻。API 變更
decomposition.MiniBatchDictionaryLearning
、decomposition.MiniBatchSparsePCA
和decomposition.dict_learning_online
中的選項max_iter=None
已棄用,將在 1.6 版本中移除。請改用預設值。 #27834 由 Guillaume Lemaitre 貢獻。
sklearn.ensemble
#
主要功能 當準則為分類的
gini
、entropy
或log_loss
,或回歸的squared_error
、friedman_mse
或poisson
時,ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
支援遺失值。 #26391 由 Thomas Fan 貢獻。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
支援categorical_features="from_dtype"
,這會將具有 Pandas 或 Polars Categorical dtype 的欄位視為演算法中的類別。categorical_features="from_dtype"
將在 v1.6 版本中成為預設值。類別特徵不再需要使用數字編碼。當類別特徵為數字時,最大值不再需要小於max_bins
;只有(唯一)類別的數量必須小於max_bins
。 #26411 由 Thomas Fan 貢獻 和 #27835 由 Jérôme Dockès 貢獻。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
新增了參數max_features
,以指定在每次分割中考慮的隨機選擇特徵的比例。 #27139 由 Christian Lorentzen 貢獻。功能
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
現在支援單調約束,當特徵應該對目標產生正面/負面影響時非常有用。不支援訓練資料中的遺失值和多輸出目標。 #13649 由 Samuel Ronsin 貢獻,由 Patrick O’Reilly 發起。效率
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
現在透過在減法技巧中將父節點的直方圖重複使用為子節點的直方圖,速度稍微加快。實際上,減少了需要分配和釋放的記憶體。 #27865 由 Christian Lorentzen 貢獻。效率
ensemble.GradientBoostingClassifier
透過私有損失函數模組,對於二元和多類別問題的速度更快。 #26278 和 #28095 由 Christian Lorentzen 貢獻。效率 提高了當在稀疏資料上訓練時,
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
的執行時間和記憶體使用量。 #26957 由 Thomas Fan 貢獻。效率 當
scoring
是metrics.get_scorer_names
中列出的預定義指標,並且啟用提前停止時,ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的速度更快。 #26163 由 Thomas Fan 貢獻。增強功能 所有森林方法(包括
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
)都新增了一個擬合屬性estimators_samples_
,允許檢索每個樹狀估算器使用的訓練樣本索引。 #26736 由 Adam Li 貢獻。修正 修正了當輸入是稀疏矩陣且
contamination
設定為浮點數值時的ensemble.IsolationForest
問題。 #27645 由 Guillaume Lemaitre 貢獻。修正 當請求 OOB 分數且多輸出模型的目標都四捨五入為整數時,
ensemble.RandomForestRegressor
和ensemble.ExtraTreesRegressor
中會引發ValueError
。它被識別為多類別問題。 #27817 由 Daniele Ongari 貢獻。修正 變更估算器標籤以確認
ensemble.VotingClassifier
、ensemble.VotingRegressor
、ensemble.StackingClassifier
、ensemble.StackingRegressor
如果所有estimators
都支援遺失值,則支援遺失值。 #27710 由 Guillaume Lemaitre 貢獻。修正 支援載入當 pickle 是在具有不同位元的平台上產生時,
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的 pickle。一個典型的例子是在 64 位元機器上訓練和 pickle 模型,並在 32 位元機器上載入模型以進行預測。 #28074 由 Christian Lorentzen 和 Loïc Estève 貢獻。API 變更 在
ensemble.AdaBoostClassifier
中,algorithm
參數SAMME.R
已被棄用,並將在 1.6 版本中移除。 #26830 由 Stefanie Senger 貢獻。
sklearn.feature_extraction
#
sklearn.feature_selection
#
增強
feature_selection.SelectKBest
、feature_selection.SelectPercentile
和feature_selection.GenericUnivariateSelect
現在支援無監督的特徵選擇,透過提供一個接收X
和y=None
的score_func
函數來實現。#27721 由 Guillaume Lemaitre 貢獻。增強 當
k
大於特徵數量時,使用mode='k_best'
的feature_selection.SelectKBest
和feature_selection.GenericUnivariateSelect
現在會顯示警告。#27841 由 Thomas Fan 貢獻。修正
feature_selection.RFE
和feature_selection.RFECV
在輸入驗證期間不再檢查 nan 值。#21807 由 Thomas Fan 貢獻。
sklearn.inspection
#
增強
inspection.DecisionBoundaryDisplay
現在接受參數class_of_interest
,以便在使用response_method="predict_proba"
或response_method="decision_function"
繪製響應時選擇感興趣的類別。它允許繪製二元和多類分類器的決策邊界。#27291 由 Guillaume Lemaitre 貢獻。修正
inspection.DecisionBoundaryDisplay.from_estimator
和inspection.PartialDependenceDisplay.from_estimator
現在為子類別回傳正確的類型。#27675 由 John Cant 貢獻。API 變更 當估算器未實作請求的響應方法時,
inspection.DecisionBoundaryDisplay
會引發AttributeError
而非ValueError
。#27291 由 Guillaume Lemaitre 貢獻。
sklearn.kernel_ridge
#
修正
kernel_ridge.KernelRidge
建構函式中的degree
參數現在接受實數值,而不僅僅是整數值,以符合sklearn.metrics.pairwise.polynomial_kernel
的degree
參數。#27668 由 Nolan McMahon 貢獻。
sklearn.linear_model
#
效率
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
現在對於求解器"lbfgs"
和"newton-cg"
具有更好的收斂性。這兩種求解器現在都可以根據指定的tol
值,達到更高的係數精度。此外,lbfgs 可以更好地利用tol
,即更早停止或達到更高的精度。這是透過更好地縮放目標函數來實現的,也就是使用每個樣本損失的平均值而不是每個樣本損失的總和。#26721 由 Christian Lorentzen 貢獻。效率 對於某些資料和參數設定,使用求解器
"newton-cg"
的linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
現在可以顯著更快。這是透過針對可忽略的損失改進,考慮梯度資訊的更好的線性搜尋收斂檢查來實現的。#26721 由 Christian Lorentzen 貢獻。效率
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
中的求解器"newton-cg"
使用的記憶體略少。效果與係數數量 (n_features * n_classes
) 成正比。#27417 由 Christian Lorentzen 貢獻。修正 確保在
float32
資料上擬合時,linear_model.ARDRegression
和linear_model.BayesianRidge
的sigma_
屬性始終具有float32
dtype,即使使用 NumPy 2 的類型提升規則也是如此。#27899 由 Olivier Grisel 貢獻。API 變更
linear_model.SGDClassifier
和linear_model.SGDOneClassSVM
的屬性loss_function_
已被棄用,並將在 1.6 版本中移除。 #27979 由 Christian Lorentzen 提供。
sklearn.metrics
#
效率提升 現在透過
metrics.DistanceMetric
計算 CSR x CSR、Dense x CSR 和 CSR x Dense 資料集的成對距離,速度提升 1.5 倍。 #26765 由 Meekail Zain 提供。效率提升 現在透過
metrics.DistanceMetric
計算 CSR x CSR、Dense x CSR 和 CSR x Dense 的距離,記憶體使用量減少約 50%,並以與提供的資料相同的 dtype 輸出距離。 #27006 由 Meekail Zain 提供。增強功能 改善使用
metrics.PrecisionRecallDisplay
和metrics.RocCurveDisplay
類別所取得的圖表渲染效果。 x 和 y 軸的範圍設定為 [0, 1],且兩軸的縱橫比設定為 1,以取得正方形圖表。 #26366 由 Mojdeh Rastgoo 提供。增強功能 新增
neg_root_mean_squared_log_error_scorer
作為評分器。 #26734 由 Alejandro Martin Gil 提供。增強功能 現在,當在
y_true
和y_pred
中僅找到一個標籤時,metrics.confusion_matrix
會發出警告。 #27650 由 Lucy Liu 提供。修正 當
X
以float64
陣列形式提供,而X_norm_squared
以float32
陣列形式提供時,使用metrics.pairwise.euclidean_distances
計算成對距離不再引發例外狀況。 #27624 由 Jérôme Dockès 提供。修正
f1_score
現在透過使用不依賴精確度和召回率值的公式,在處理發生除以零的各種情況時,提供正確的值。 #27577 由 Omar Salman 和 Guillaume Lemaitre 提供。修正 當在要求非閾值決策函數(來自
decision_function
或predict_proba
)的評分器上使用迴歸器時,metrics.make_scorer
現在會引發錯誤。此類評分器專用於分類。 #26840 由 Guillaume Lemaitre 提供。修正
metrics.DetCurveDisplay.from_predictions
、metrics.PrecisionRecallDisplay.from_predictions
、metrics.PredictionErrorDisplay.from_predictions
和metrics.RocCurveDisplay.from_predictions
現在會為子類別傳回正確的類型。 #27675 由 John Cant 提供。API 變更 已棄用
metrics.make_scorer
中的needs_threshold
和needs_proba
。這些參數將在 1.6 版本中移除。請改用接受"predict"
、"predict_proba"
或"decision_function"
或此類值清單的response_method
。needs_proba=True
等同於response_method="predict_proba"
,而needs_threshold=True
等同於response_method=("decision_function", "predict_proba")
。 #26840 由 Guillaume Lemaitre 提供。API 變更
metrics.mean_squared_error
和metrics.mean_squared_log_error
的squared
參數已棄用,並將在 1.6 版本中移除。請改用新的函式metrics.root_mean_squared_error
和metrics.root_mean_squared_log_error
。 #26734 由 Alejandro Martin Gil 提供。
sklearn.model_selection
#
增強功能 當每個交叉驗證折疊都失敗時,
model_selection.learning_curve
會發出警告。 #26299 由 Rahil Parikh 提供。修正
model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.HalvingGridSearchCV
現在不會在參數網格中變更給定的物件(如果它是估算器)。 #26786 由 Adrin Jalali 提供。
sklearn.multioutput
#
增強功能 將
predict_log_proba
方法新增至multioutput.ClassifierChain
。 #27720 由 Guillaume Lemaitre 提供。
sklearn.neighbors
#
效率提升
sklearn.neighbors.KNeighborsRegressor.predict
和sklearn.neighbors.KNeighborsClassifier.predict_proba
現在有效率地支援密集和稀疏資料集的配對。 #27018 由 Julien Jerphanion 貢獻。效率提升 當
radius
很大,且algorithm="brute"
使用非歐幾里得度量時,neighbors.RadiusNeighborsClassifier.predict
和neighbors.RadiusNeighborsClassifier.predict_proba
的效能已獲得改善。 #26828 由 Omar Salman 貢獻。修正 改善當使用
n_samples=n_neighbors
呼叫neighbors.LocalOutlierFactor
時的錯誤訊息。 #23317 由 Bharat Raghunathan 貢獻。修正 當某些樣本的所有鄰居權重為零時,
neighbors.KNeighborsClassifier.predict
和neighbors.KNeighborsClassifier.predict_proba
現在會引發錯誤。當weights
是使用者定義的函式時,可能會發生這種情況。 #26410 由 Yao Xiao 貢獻。API 變更
neighbors.KNeighborsRegressor
現在可透過metric
關鍵字參數直接接受metrics.DistanceMetric
物件,允許使用加速的第三方metrics.DistanceMetric
物件。 #26267 由 Meekail Zain 貢獻。
sklearn.preprocessing
#
效率提升
preprocessing.OrdinalEncoder
避免重複計算遺失的索引以提高效率。 #27017 由 Xuefeng Xu 貢獻。效率提升 改善
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
在檢查nan
時的效率。 #27760 由 Xuefeng Xu 貢獻。增強功能 當
func
返回 pandas 資料框且輸出配置為 pandas 時,改善preprocessing.FunctionTransformer
中的警告。 #26944 由 Thomas Fan 貢獻。增強功能
preprocessing.TargetEncoder
現在支援target_type
'multiclass'。 #26674 由 Lucy Liu 貢獻。修正 當
nan
是類別且不是使用者提供的類別中的最後一個時,preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
會引發例外。 #27309 由 Xuefeng Xu 貢獻。修正 如果使用者提供的類別包含重複項,則
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
會引發例外。 #27328 由 Xuefeng Xu 貢獻。修正 如果
get_feature_names_out
的輸出與輸出的容器的欄名稱不一致(如果已定義),則preprocessing.FunctionTransformer
在transform
時會引發錯誤。 #27801 由 Guillaume Lemaitre 貢獻。修正 在呼叫
transform
時,如果未呼叫fit
,則在preprocessing.OrdinalEncoder
中引發NotFittedError
,因為categories
始終需要檢查。 #27821 由 Guillaume Lemaitre 貢獻。
sklearn.tree
#
新功能
tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
現在支援單調約束,當特徵預期對目標產生正面/負面影響時非常有用。不支援訓練資料中的缺失值和多輸出目標。#13649 由 Samuel Ronsin 實作,由 Patrick O’Reilly 發起。
sklearn.utils
#
增強
sklearn.utils.estimator_html_repr
會根據瀏覽器的prefers-color-scheme
動態調整圖表顏色,進而改善對深色模式環境的適應性。#26862 由 Andrew Goh Yisheng、Thomas Fan、Adrin Jalali 實作。增強
MetadataRequest
和MetadataRouter
現在有一個consumes
方法,可用於檢查是否會消耗給定的一組參數。#26831 由 Adrin Jalali 實作。增強 當從 DIA 陣列轉換時,如果非零條目的數量足夠小,則使
sklearn.utils.check_array
嘗試輸出int32
索引的 CSR 和 COO 陣列。這可確保在 Cython 中實作且不接受int64
索引的稀疏資料結構的估算器,現在始終如一地接受 SciPy 稀疏矩陣和陣列的相同稀疏輸入格式。#27372 由 Guillaume Lemaitre 實作。修復
sklearn.utils.check_array
應接受來自稀疏 SciPy 模組的矩陣和陣列。如果copy=True
,先前的實作會因呼叫特定的 NumPynp.may_share_memory
而失敗,而該函數不適用於 SciPy 稀疏陣列,且不會為 SciPy 稀疏矩陣傳回正確的結果。#27336 由 Guillaume Lemaitre 實作。修復
check_estimators_pickle
與readonly_memmap=True
現在依賴 joblib 本身的功能,在載入序列化的估算器時配置對齊的記憶體對應陣列,而不是呼叫在 OpenBLAS 錯誤偵測到 CPU 架構時會崩潰的專用私有函數。#27614 由 Olivier Grisel 實作。修復 當傳遞稀疏矩陣但
accept_sparse
為False
時,check_array
中的錯誤訊息現在建議使用.toarray()
,而不是X.toarray()
。#27757 由 Lucy Liu 實作。修復 修復當輸入為 Series 而不是 DataFrame 時,函數
check_array
輸出正確錯誤訊息的問題。#28090 由 Stan Furrer 和 Yao Xiao 實作。API 變更
sklearn.extmath.log_logistic
已棄用,並將在 1.6 版中移除。請改用-np.logaddexp(0, -x)
。#27544 由 Christian Lorentzen 實作。
程式碼和文件貢獻者
感謝自 1.3 版以來為專案的維護和改進做出貢獻的每個人,包括
101AlexMartin、Abhishek Singh Kushwah、Adam Li、Adarsh Wase、Adrin Jalali、Advik Sinha、Alex、Alexander Al-Feghali、Alexis IMBERT、AlexL、Alex Molas、Anam Fatima、Andrew Goh、andyscanzio、Aniket Patil、Artem Kislovskiy、Arturo Amor、ashah002、avm19、Ben Holmes、Ben Mares、Benoit Chevallier-Mames、Bharat Raghunathan、Binesh Bannerjee、Brendan Lu、Brevin Kunde、Camille Troillard、Carlo Lemos、Chad Parmet、Christian Clauss、Christian Lorentzen、Christian Veenhuis、Christos Aridas、Cindy Liang、Claudio Salvatore Arcidiacono、Connor Boyle、cynthias13w、DaminK、Daniele Ongari、Daniel Schmitz、Daniel Tinoco、David Brochart、Deborah L. Haar、DevanshKyada27、Dimitri Papadopoulos Orfanos、Dmitry Nesterov、DUONG、Edoardo Abati、Eitan Hemed、Elabonga Atuo、Elisabeth Günther、Emma Carballal、Emmanuel Ferdman、epimorphic、Erwan Le Floch、Fabian Egli、Filip Karlo Došilović、Florian Idelberger、Franck Charras、Gael Varoquaux、Ganesh Tata、Gleb Levitski、Guillaume Lemaitre、Haoying Zhang、Harmanan Kohli、Ily、ioangatop、IsaacTrost、Isaac Virshup、Iwona Zdzieblo、Jakub Kaczmarzyk、James McDermott、Jarrod Millman、JB Mountford、Jérémie du Boisberranger、Jérôme Dockès、Jiawei Zhang、Joel Nothman、John Cant、John Hopfensperger、Jona Sassenhagen、Jon Nordby、Julien Jerphanion、Kennedy Waweru、kevin moore、Kian Eliasi、Kishan Ved、Konstantinos Pitas、Koustav Ghosh、Kushan Sharma、ldwy4、Linus、Lohit SundaramahaLingam、Loic Esteve、Lorenz、Louis Fouquet、Lucy Liu、Luis Silvestrin、Lukáš Folwarczný、Lukas Geiger、Malte Londschien、Marcus Fraaß、Marek Hanuš、Maren Westermann、Mark Elliot、Martin Larralde、Mateusz Sokół、mathurinm、mecopur、Meekail Zain、Michael Higgins、Miki Watanabe、Milton Gomez、MN193、Mohammed Hamdy、Mohit Joshi、mrastgoo、Naman Dhingra、Naoise Holohan、Narendra Singh dangi、Noa Malem-Shinitski、Nolan、Nurseit Kamchyev、Oleksii Kachaiev、Olivier Grisel、Omar Salman、partev、Peter Hull、Peter Steinbach、Pierre de Fréminville、Pooja Subramaniam、Puneeth K、qmarcou、Quentin Barthélemy、Rahil Parikh、Rahul Mahajan、Raj Pulapakura、Raphael、Ricardo Peres、Riccardo Cappuzzo、Roman Lutz、Salim Dohri、Samuel O. Ronsin、Sandip Dutta、Sayed Qaiser Ali、scaja、scikit-learn-bot、Sebastian Berg、Shreesha Kumar Bhat、Shubhal Gupta、Søren Fuglede Jørgensen、Stefanie Senger、Tamara、Tanjina Afroj、THARAK HEGDE、thebabush、Thomas J. Fan、Thomas Roehr、Tialo、Tim Head、tongyu、Venkatachalam N、Vijeth Moudgalya、Vincent M、Vivek Reddy P、Vladimir Fokow、Xiao Yuan、Xuefeng Xu、Yang Tao、Yao Xiao、Yuchen Zhou、Yuusuke Hiramatsu