版本 1.3#
關於此版本主要重點的簡短描述,請參考 scikit-learn 1.3 的發行重點。
變更日誌的圖例
主要功能 之前無法做到的重大功能。
功能 之前無法做到的功能。
效率 現有的功能現在可能不需要那麼多的計算或記憶體。
增強 各種小的改進。
修正 之前沒有按照文件描述運作(或符合合理預期)的功能,現在應該可以正常運作了。
API 變更 您將需要更改您的程式碼,才能在未來達到相同的效果;或者某項功能將在未來移除。
版本 1.3.2#
2023 年 10 月
變更日誌#
sklearn.datasets
#
修正 所有資料集擷取器現在都接受
data_home
作為任何實作os.PathLike
介面的物件,例如pathlib.Path
。#27468 由 Yao Xiao 提供。
sklearn.decomposition
#
修正 修正
decomposition.KernelPCA
中的錯誤,方法是強制內部preprocessing.KernelCenterer
的輸出為預設陣列。當使用 arpack 求解器時,它會預期一個具有dtype
屬性的陣列。#27583 由 Guillaume Lemaitre 提供。
sklearn.metrics
#
修正 修正了使用
zero_division=np.nan
的指標(例如precision_score
)在平行迴圈(例如cross_val_score
)中產生的錯誤,在子程序中np.nan
的單例將會不同。#27573 由 Guillaume Lemaitre 提供。
sklearn.tree
#
修正 不要透過決策樹 pickle 檔案中未初始化的記憶體洩漏資料,並使這些檔案的生成具有確定性。#27580 由 Loïc Estève 提供。
版本 1.3.1#
2023 年 9 月
已變更的模型#
當使用相同的資料和參數擬合時,下列估算器和函式可能會產生與先前版本不同的模型。這通常是因為建模邏輯(錯誤修正或增強)或隨機取樣程序中的變更而發生。
修正 具有
solver='sparse_cg'
的 Ridge 模型在使用 scipy>=1.12 時,可能會因為 scipy 求解器中的底層變更而產生稍微不同的結果(有關更多詳細資訊,請參閱 scipy#18488)#26814 由 Loïc Estève 提供
影響所有模組的變更#
修正
set_output
API 可以正確地處理列表輸入。#27044 由 Thomas Fan 提供。
變更日誌#
sklearn.calibration
#
修正
calibration.CalibratedClassifierCV
現在可以處理產生大量預測分數的模型。之前它在數值上是不穩定的。#26913 由 Omar Salman 提供。
sklearn.cluster
#
修正
cluster.BisectingKMeans
在預測資料時,如果資料的縮放比例與用於擬合模型的資料不同,可能會崩潰。#27167 由 Olivier Grisel 提供。修正
cluster.BisectingKMeans
現在可以處理只有單一特徵的資料。#27243 由 Jérémie du Boisberranger 提供。
sklearn.cross_decomposition
#
修正 如果以一維
y
擬合,cross_decomposition.PLSRegression
現在會自動展平predict
的輸出。#26602 由 Yao Xiao 提供。
sklearn.ensemble
#
修正 修正了
ensemble.AdaBoostClassifier
中當algorithm="SAMME"
時的一個錯誤,其中每個弱學習器的決策函數應該是對稱的(即,對於一個樣本,分數的總和應該加總為零)。#26521 由 Guillaume Lemaitre 貢獻。
sklearn.feature_selection
#
修正
feature_selection.mutual_info_regression
現在當X
為整數 dtype 時,能正確計算結果。#26748 由 Yao Xiao 貢獻。
sklearn.impute
#
修正 當
add_indicator
設定為True
且在fit
期間觀察到遺失值時,impute.KNNImputer
現在會在transform
中正確地加入遺失值指標欄位。#26600 由 Shreesha Kumar Bhat 貢獻。
sklearn.metrics
#
修正 與
metrics.get_scorer
一起使用的評分器,現在能正確處理多標籤指示矩陣。#27002 由 Guillaume Lemaitre 貢獻。
sklearn.mixture
#
修正 從使用者提供的
precisions_init
初始化mixture.GaussianMixture
,當covariance_type
為full
或tied
時,其初始化不正確,現已修正。#26416 由 Yang Tao 貢獻。
sklearn.neighbors
#
修正
neighbors.KNeighborsClassifier.predict
不再對pandas.DataFrames
輸入引發例外。#26772 由 Jérémie du Boisberranger 貢獻。修正 重新引入
sklearn.neighbors.BallTree.valid_metrics
和sklearn.neighbors.KDTree.valid_metrics
作為公開的類別屬性。#26754 由 Julien Jerphanion 貢獻。修正 當
param_distributions
參數的輸入是一個字典列表時,sklearn.model_selection.HalvingRandomSearchCV
不再引發錯誤。#26893 由 Stefanie Senger 貢獻。修正 當
metric="minkowski"
且度量參數p
在0 < p < 1
的範圍內時,基於鄰近的估計器現在可以正確運作,無論X
的dtype
為何。#26760 由 Shreesha Kumar Bhat 貢獻。
sklearn.preprocessing
#
修正
preprocessing.LabelEncoder
正確接受y
作為關鍵字引數。#26940 由 Thomas Fan 貢獻。修正 當
sparse_output=True
且輸出設定為 pandas 時,preprocessing.OneHotEncoder
會顯示更具資訊性的錯誤訊息。#26931 由 Thomas Fan 貢獻。
sklearn.tree
#
修正
tree.plot_tree
現在會如文件所述,接受class_names=True
。#26903 由 Thomas Roehr 貢獻修正
tree.plot_tree
的feature_names
參數現在接受任何種類的類陣列(array-like),而不僅僅是列表。#27292 由 Rahil Parikh 貢獻。
版本 1.3.0#
2023 年 6 月
變更的模型#
當使用相同的資料和參數擬合時,下列估算器和函式可能會產生與先前版本不同的模型。這通常是因為建模邏輯(錯誤修正或增強)或隨機取樣程序中的變更而發生。
增強
multiclass.OutputCodeClassifier.predict
現在使用更有效率的成對距離縮減。因此,平手決策策略會有所不同,進而可能導致預測的標籤有所不同。#25196 由 Guillaume Lemaitre 貢獻。增強 當
transform_algorithm
與fit_algorithm
不同,且迭代次數較小時,decomposition.DictionaryLearning
的fit_transform
方法會更有效率,但可能產生與先前版本不同的結果。#24871 由 Omar Salman 貢獻。增強
sample_weight
參數現在將用於cluster.KMeans
、cluster.BisectingKMeans
和cluster.MiniBatchKMeans
的質心初始化中。由於從相同的隨機種子產生的數字將會不同,此變更會破壞回溯相容性。#25752 由 Gleb Levitski、Jérémie du Boisberranger、Guillaume Lemaitre 貢獻。修正 在
decomposition.NMF
和decomposition.MiniBatchNMF
的fit
和transform
步驟中,更一致地處理W
和H
矩陣中的小數值,這可能會產生與先前版本不同的結果。 #25438 由 Yotam Avidar-Constantini 提供。修正 如果
gamma
為None
,decomposition.KernelPCA
可能會透過inverse_transform
產生不同的結果。現在,它將正確地選擇為擬合數據的1/n_features
,而之前可能會錯誤地選擇為傳遞給inverse_transform
的數據的1/n_features
。提供了一個新的屬性gamma_
,用於揭示每次呼叫 kernel 時所使用的gamma
的實際值。 #26337 由 Yao Xiao 提供。
變更的顯示方式#
增強
model_selection.LearningCurveDisplay
預設會同時顯示訓練和測試曲線。您可以設定score_type="test"
以保留過去的行為。 #25120 由 Guillaume Lemaitre 提供。修正
model_selection.ValidationCurveDisplay
現在接受將列表傳遞給param_range
參數。 #27311 由 Arturo Amor 提供。
影響所有模組的變更#
增強 如果實例尚未擬合,下列類別的
get_feature_names_out
方法現在會引發NotFittedError
。這確保了所有具有get_feature_names_out
方法的估算器中的錯誤是一致的。NotFittedError
會顯示一則訊息,要求使用適當的引數來擬合實例。#25294, #25308, #25291, #25367, #25402, 由 John Pangas、Rahil Parikh 和 Alex Buzenet 提供。
增強 為一對由稀疏 CSR 矩陣和密集 NumPy 組成的資料集,新增了一個多執行緒的 Cython 常式,用於計算平方歐幾里得距離(有時後接融合縮減運算)。
這可以提高以下函數和估算器的效能
當將稀疏 CSR 矩陣傳遞給依賴密集 NumPy 表示來儲存其擬合參數的估算器的
predict
或transform
方法時,此效能提升的一個典型範例就會發生(反之亦然)。例如,對於常見的筆記型電腦,現在
sklearn.neighbors.NearestNeighbors.kneighbors
在這種情況下速度提高了 2 倍。#25044 由 Julien Jerphanion 提供。
增強 所有內部依賴 OpenMP 多執行緒(透過 Cython)的估算器,現在預設使用等於實體(而非邏輯)核心數的執行緒數。過去,我們觀察到,在 SMT 主機上使用與邏輯核心一樣多的執行緒,有時可能會導致嚴重的效能問題,具體取決於演算法和資料的形狀。請注意,仍然可以如 平行處理 中所述,手動調整 OpenMP 使用的執行緒數。
實驗性/開發中#
主要功能 此版本包含與 中繼資料路由 相關的基礎方法。此功能僅透過
enable_metadata_routing
功能旗標提供,可以使用sklearn.set_config
和sklearn.config_context
來啟用。目前,此功能主要對第三方開發人員有用,以便為中繼資料路由準備其程式碼庫,我們強烈建議他們也將其隱藏在相同的功能旗標之後,而不是預設啟用。 #24027 由 Adrin Jalali、Benjamin Bossan 和 Omar Salman 提供。
變更日誌#
sklearn
#
功能 為函數
sklearn.set_config
和上下文管理器sklearn.config_context
新增了一個新的選項skip_parameter_validation
,允許跳過對傳遞給估算器和公用函數的參數的驗證。這對於加速程式碼很有用,但應謹慎使用,因為它可能會導致意外行為或在設定無效參數時引發模糊的錯誤訊息。 #25815 由 Jérémie du Boisberranger 提供。
sklearn.base
#
新功能 現在可以使用
__sklearn_clone__
協定來覆寫base.clone
的預設行為。#24568 由 Thomas Fan 貢獻。修復 如果
transform
傳回 namedtuple,base.TransformerMixin
現在會保留 namedtuple 的類別。#26121 由 Thomas Fan 貢獻。
sklearn.calibration
#
修復
calibration.CalibratedClassifierCV
現在不會強制對fit_params
進行樣本對齊。#25805 由 Adrin Jalali 貢獻。
sklearn.cluster
#
主要新功能 新增
cluster.HDBSCAN
,一種現代階層式密度分群演算法。類似於cluster.OPTICS
,它可以被視為cluster.DBSCAN
的泛化,它允許階層式而不是平面的分群,但它在方法上與cluster.OPTICS
不同。此演算法對其超參數值非常穩健,可以在各種數據上使用,而無需進行太多調整(如果有的話)。此實作是改編自 scikit-learn-contrib/hdbscan 中 HDBSCAN 的原始實作,由 Leland McInnes 等人貢獻。
#26385 由 Meekail Zain 貢獻
增強
sample_weight
參數現在將用於cluster.KMeans
、cluster.BisectingKMeans
和cluster.MiniBatchKMeans
的質心初始化中。由於從相同的隨機種子產生的數字將會不同,此變更會破壞回溯相容性。#25752 由 Gleb Levitski、Jérémie du Boisberranger、Guillaume Lemaitre 貢獻。修復
cluster.KMeans
、cluster.MiniBatchKMeans
和cluster.k_means
現在可以正確處理n_init="auto"
和init
為類陣列的組合,在這種情況下運行一次初始化。#26657 由 Binesh Bannerjee 貢獻。API 變更
cluster.KMeans.predict
和cluster.MiniBatchKMeans.predict
中predict
的sample_weight
參數現已棄用,並將在 v1.5 中移除。#25251 由 Gleb Levitski 貢獻。API 變更
cluster.FeatureAgglomeration.inverse_transform
中的Xred
引數已重新命名為Xt
,並將在 v1.5 中移除。#26503 由 Adrin Jalali 貢獻。
sklearn.compose
#
修復 當
ColumnTransformer
的個別轉換器輸出彼此不一致的索引的 pandas 資料框架,並且輸出配置為 pandas 時,compose.ColumnTransformer
會引發資訊豐富的錯誤。#26286 由 Thomas Fan 貢獻。修復 當呼叫
set_output
時,compose.ColumnTransformer
會正確設定剩餘部分的輸出。#26323 由 Thomas Fan 貢獻。
sklearn.covariance
#
修復 允許
covariance.GraphicalLasso
中的alpha=0
與covariance.graphical_lasso
保持一致。#26033 由 Genesis Valencia 貢獻。修復 當輸入不適當時,
covariance.empirical_covariance
現在會提供資訊豐富的錯誤訊息。#26108 由 Quentin Barthélemy 貢獻。API 變更 由於該參數無效,因此在 1.3 中棄用
covariance.graphical_lasso
中的cov_init
。它將在 1.5 中移除。#26033 由 Genesis Valencia 貢獻。API 變更 在
covariance.GraphicalLasso
和covariance.GraphicalLassoCV
中新增costs_
擬合屬性。#26033 由 Genesis Valencia 貢獻。API 變更 在
covariance.GraphicalLasso
中新增covariance
參數。#26033 由 Genesis Valencia 貢獻。API 變更 在
covariance.GraphicalLasso
、covariance.graphical_lasso
和covariance.GraphicalLassoCV
中新增eps
參數。#26033 由 Genesis Valencia 貢獻。
sklearn.datasets
#
增強 允許使用
read_csv_kwargs
參數覆寫用於開啟 ARFF 檔案的參數。此參數位於使用 pandas 解析器時的datasets.fetch_openml
中。#26433 由 Guillaume Lemaitre 貢獻。修復 當
as_frame=True
且parser="liac-arff"
時,datasets.fetch_openml
會回傳改善的資料類型。#26386 由 Thomas Fan 貢獻。修復 根據 ARFF 規格,當使用 pandas 解析器開啟透過
datasets.fetch_openml
提取的 ARFF 檔案時,只有標記"?"
會被視為缺失值。read_csv_kwargs
參數允許覆寫此行為。#26551 由 Guillaume Lemaitre 貢獻。修復
datasets.fetch_openml
將會一致地使用np.nan
作為缺失值標記,無論是使用"pandas"
還是"liac-arff"
解析器。#26579 由 Guillaume Lemaitre 貢獻。API 變更
datasets.make_sparse_coded_signal
的data_transposed
參數已被棄用,並將在 v1.5 版本中移除。#25784 由 @Jérémie du Boisberranger 貢獻。
sklearn.decomposition
#
效率提升
decomposition.MiniBatchDictionaryLearning
和decomposition.MiniBatchSparsePCA
現在透過避免重複驗證,在小批量大小下運行速度更快。#25490 由 Jérémie du Boisberranger 貢獻。增強
decomposition.DictionaryLearning
現在接受callback
參數,以與函式decomposition.dict_learning
保持一致。#24871 由 Omar Salman 貢獻。修正 在
decomposition.NMF
和decomposition.MiniBatchNMF
的fit
和transform
步驟中,更一致地處理W
和H
矩陣中的小數值,這可能會產生與先前版本不同的結果。 #25438 由 Yotam Avidar-Constantini 提供。API 變更
decomposition.NMF.inverse_transform
和decomposition.MiniBatchNMF.inverse_transform
中的W
參數已重新命名為Xt
,並將在 v1.5 版本中移除。#26503 由 Adrin Jalali 貢獻。
sklearn.discriminant_analysis
#
增強
discriminant_analysis.LinearDiscriminantAnalysis
現在支援 PyTorch。有關更多詳細資訊,請參閱陣列 API 支援 (實驗性)。#25956 由 Thomas Fan 貢獻。
sklearn.ensemble
#
功能
ensemble.HistGradientBoostingRegressor
現在透過loss="gamma"
支援 Gamma 偏差損失。使用 Gamma 偏差作為損失函數對於建模偏斜分佈的、嚴格為正值的目標非常有用。#22409 由 Christian Lorentzen 貢獻。功能 透過將可呼叫物件傳遞給
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
,來計算自訂的袋外分數。#25177 由 Tim Head 貢獻。功能
ensemble.GradientBoostingClassifier
現在透過oob_scores_
或oob_score_
屬性公開袋外分數。#24882 由 Ashwin Mathur 貢獻。效率
ensemble.IsolationForest
的預測時間現在更快了(通常快 8 倍以上)。在內部,估算器現在會在fit
時預先計算每個樹的決策路徑長度。因此,無法載入使用 scikit-learn 1.2 訓練的估算器,並讓它使用 scikit-learn 1.3 進行預測:必須使用 scikit-learn 1.3 重新訓練。 #25186 由 Felipe Breve Siola 貢獻。效率
ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
在使用warm_start=True
時,現在只有在後續的fit
呼叫中有更多n_estimators
時才會重新計算袋外分數。 #26318 由 Joshua Choo Yun Keat 貢獻。增強
ensemble.BaggingClassifier
和ensemble.BaggingRegressor
公開了底層估算器的allow_nan
標籤。 #25506 由 Thomas Fan 貢獻。修正
ensemble.RandomForestClassifier.fit
在max_samples
為浮點數且round(n_samples * max_samples) < 1
時,會設定max_samples = 1
。 #25601 由 Jan Fidor 貢獻。修正
ensemble.IsolationForest.fit
在對 pandas 資料框架呼叫且contamination
不為"auto"
時,不再發出缺少特徵名稱的警告。 #25931 由 Yao Xiao 貢獻。修正
ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
一致地將類別特徵的負值視為遺失值,遵循 LightGBM 和 pandas 的慣例。 #25629 由 Thomas Fan 貢獻。修正 修正在
ensemble.AdaBoostClassifier
和ensemble.AdaBoostRegressor
中棄用base_estimator
的問題,該問題是在 #23819 中引入的。 #26242 由 Marko Toplak 貢獻。
sklearn.exceptions
#
功能 新增了
exceptions.InconsistentVersionWarning
,當使用與估算器 pickle 化的 scikit-learn 版本不一致的 scikit-learn 版本 unpickle 估算器時,會發出此警告。 #25297 由 Thomas Fan 貢獻。
sklearn.feature_extraction
#
API 變更
feature_extraction.image.PatchExtractor
現在遵循 scikit-learn 的轉換器 API。此類別定義為無狀態轉換器,表示在呼叫transform
之前不需要呼叫fit
。參數驗證僅在fit
時發生。 #24230 由 Guillaume Lemaitre 貢獻。
sklearn.feature_selection
#
增強
sklearn.feature_selection
中的所有選擇器在轉換時都會保留 DataFrame 的 dtype。 #25102 由 Thomas Fan 貢獻。修正
feature_selection.SequentialFeatureSelector
的cv
參數現在支援產生器。 #25973 由Yao Xiao <Charlie-XIAO>
貢獻。
sklearn.impute
#
增強 在
impute.IterativeImputer
中新增了參數fill_value
。 #25232 由 Thijs van Weezel 貢獻。修正
impute.IterativeImputer
現在在set_config(transform_output="pandas")
時,會正確保留 Pandas Index。 #26454 由 Thomas Fan 貢獻。
sklearn.inspection
#
增強 在
inspection.partial_dependence
和inspection.PartialDependenceDisplay.from_estimator
中新增了對sample_weight
的支援。這允許在對正在進行檢查的網格的每個值進行聚合時進行加權平均。僅當method
設定為brute
時,此選項才可用。 #25209 和 #26644 由 Carlo Lemos 貢獻。API 變更
inspection.partial_dependence
會傳回一個utils.Bunch
,其中包含新的鍵:grid_values
。values
鍵已棄用,改用grid_values
,且values
鍵將在 1.5 中移除。 #21809 和 #25732 由 Thomas Fan 貢獻。
sklearn.kernel_approximation
#
修正
kernel_approximation.AdditiveChi2Sampler
現在是無狀態的。sample_interval_
屬性已棄用,將在 1.5 中移除。 #25190 由 Vincent Maladière 貢獻。
sklearn.linear_model
#
效率提升 當
sample_weight=None
時,避免數據縮放,並避免linear_model.LinearRegression
中不必要的數據複製和意外的密集到稀疏數據轉換。 #26207 由 Olivier Grisel 貢獻。功能增強
linear_model.SGDClassifier
、linear_model.SGDRegressor
和linear_model.SGDOneClassSVM
現在保留numpy.float32
的數據類型。 #25587 由 Omar Salman 貢獻。功能增強
n_iter_
屬性已包含在linear_model.ARDRegression
中,以顯示達到停止條件所需的實際迭代次數。 #25697 由 John Pangas 貢獻。問題修復 使用更穩健的標準來檢測
linear_model.LogisticRegression
在線性可分問題上使用penalty="l1"
和solver="liblinear"
的收斂性。 #25214 由 Tom Dupre la Tour 貢獻。問題修復 修復了當在
linear_model.LogisticRegression
上使用solver="newton-cholesky"
和max_iter=0
呼叫fit
時發生的崩潰,該崩潰未能檢查模型在首次參數更新之前的狀態。 #26653 由 Olivier Grisel 貢獻。API 變更 在
linear_model.BayesianRidge
和linear_model.ARDRegression
中,棄用n_iter
而改用max_iter
。n_iter
將在 scikit-learn 1.5 中移除。此變更使這些估算器與其他估算器保持一致。 #25697 由 John Pangas 貢獻。
sklearn.manifold
#
問題修復 當使用
set_config(transform_output="pandas")
時,manifold.Isomap
現在可以正確保留 Pandas Index。 #26454 由 Thomas Fan 貢獻。
sklearn.metrics
#
新功能 為多個分類指標新增
zero_division=np.nan
:metrics.precision_score
、metrics.recall_score
、metrics.f1_score
、metrics.fbeta_score
、metrics.precision_recall_fscore_support
、metrics.classification_report
。當zero_division=np.nan
且發生除以零的情況時,該指標將會是未定義,並從平均值中排除。當不使用於平均值時,回傳的值為np.nan
。#25531 由 Marc Torrellas Socastro 貢獻。新功能
metrics.average_precision_score
現在支援多類別情況。 #17388 由 Geoffrey Bolmier 貢獻,以及 #24769 由 Ashwin Mathur 貢獻。效率提升 當唯一標籤數量很大時,
metrics.adjusted_mutual_info_score
中預期互資訊的計算速度更快,並且整體記憶體使用量減少。 #25713 由 Kshitij Mathur、Guillaume Lemaitre、Omar Salman 和 Jérémie du Boisberranger 貢獻。功能增強
metrics.silhouette_samples
現在接受樣本之間成對距離的稀疏矩陣,或特徵陣列。 #18723 由 Sahil Gupta 貢獻,以及 #24677 由 Ashwin Mathur 貢獻。功能增強 在
metrics.precision_recall_curve
、metrics.PrecisionRecallDisplay.from_estimator
、metrics.PrecisionRecallDisplay.from_predictions
中新增了一個新的參數drop_intermediate
,該參數會捨棄一些次佳的閾值以建立更輕量的精確度-召回率曲線。 #24668 由 @dberenbaum 貢獻。功能增強
metrics.RocCurveDisplay.from_estimator
和metrics.RocCurveDisplay.from_predictions
現在接受兩個新的關鍵字plot_chance_level
和chance_level_kw
,以繪製基準機會水平。此線條會顯示在chance_level_
屬性中。 #25987 由 Yao Xiao 貢獻。功能增強
metrics.PrecisionRecallDisplay.from_estimator
和metrics.PrecisionRecallDisplay.from_predictions
現在接受兩個新的關鍵字plot_chance_level
和chance_level_kw
,以繪製基準機會水平。此線條會顯示在chance_level_
屬性中。 #26019 由 Yao Xiao 貢獻。問題修復
metrics.pairwise.manhattan_distances
現在支援唯讀的稀疏數據集。 #25432 由 Julien Jerphanion 貢獻。問題修復 修復了
metrics.classification_report
,使空輸入將會回傳np.nan
。先前,「macro avg」和weighted avg
會分別回傳例如f1-score=np.nan
和f1-score=0.0
,導致不一致。現在,它們都會回傳np.nan
。 #25531 由 Marc Torrellas Socastro 貢獻。修正
metrics.ndcg_score
現在對於長度為 1 的輸入會給出有意義的錯誤訊息。#25672 由 Lene Preuss 和 Wei-Chun Chu 貢獻。修正 如果參數
y_pred
的值未正規化,metrics.log_loss
會發出警告,而不是在指標中實際正規化它們。從 1.5 版本開始,這將會引發錯誤。#25299 由 @Omar Salman <OmarManzoor 貢獻。修正 在
metrics.roc_curve
中,使用閾值np.inf
取代任意的max(y_score) + 1
。此閾值與 ROC 曲線點tpr=0
和fpr=0
相關聯。#26194 由 Guillaume Lemaitre 貢獻。修正 當使用 SciPy>=1.9 時,已移除
'matching'
指標,以與不再支援'matching'
的scipy.spatial.distance
保持一致。#26264 由 Barata T. Onggo 貢獻。API 變更
metrics.log_loss
的eps
參數已被棄用,並將在 1.5 版本中移除。#25299 由 Omar Salman 貢獻。
sklearn.gaussian_process
#
修正
gaussian_process.GaussianProcessRegressor
有一個新的參數n_targets
,用於決定從先驗分佈取樣時的輸出數量。#23099 由 Zhehao Liu 貢獻。
sklearn.mixture
#
效率提升 如果使用者提供了權重、均值和精度,
mixture.GaussianMixture
現在效率更高,並將繞過不必要的初始化。#26021 由 Jiawei Zhang 貢獻。
sklearn.model_selection
#
主要功能 新增了類別
model_selection.ValidationCurveDisplay
,可以輕鬆繪製由函數model_selection.validation_curve
取得的驗證曲線。#25120 由 Guillaume Lemaitre 貢獻。API 變更 類別
model_selection.LearningCurveDisplay
中的參數log_scale
已在 1.3 版本中棄用,並將在 1.5 版本中移除。預設的比例可以通過直接在ax
物件上設定來覆蓋,否則將根據資料點的間距自動設定。#25120 由 Guillaume Lemaitre 貢獻。增強功能
model_selection.cross_validate
接受一個新的參數return_indices
,以返回每個 cv 分割的訓練-測試索引。#25659 由 Guillaume Lemaitre 貢獻。
sklearn.multioutput
#
修正 在呼叫
fit
之前,對multioutput.MultiOutputRegressor.partial_fit
和multioutput.MultiOutputClassifier.partial_fit
使用getattr
現在會正確地引發AttributeError
。#26333 由 Adrin Jalali 貢獻。
sklearn.naive_bayes
#
修正 當提供的
sample_weight
將問題簡化為fit
中的單一類別時,naive_bayes.GaussianNB
不再引發ZeroDivisionError
。#24140 由 Jonathan Ohayon 和 Chiara Marmo 貢獻。
sklearn.neighbors
#
增強功能 當
n_neighbors
很大且algorithm="brute"
使用非歐幾里得度量時,neighbors.KNeighborsClassifier.predict
和neighbors.KNeighborsClassifier.predict_proba
的效能已得到改善。#24076 由 Meekail Zain, Julien Jerphanion 貢獻。修正 移除
neighbors.BallTree
中對KulsinskiDistance
的支援。這種相異性不是度量,BallTree 無法支援它。#25417 由 Guillaume Lemaitre 貢獻。API 變更 在
neighbors.NearestNeighbors
中,對euclidean
和manhattan
以外的度量以及可調用物件的支援已被棄用,並將在 1.5 版本中移除。#24083 由 Valentin Laurent 貢獻。
sklearn.neural_network
#
修正
neural_network.MLPRegressor
和neural_network.MLPClassifier
在warm_start=True
時會回報正確的n_iter_
。它對應於當前呼叫fit
時執行的迭代次數,而不是自估算器初始化以來執行的總迭代次數。 #25443 由 Marvin Krawutschke 貢獻。
sklearn.pipeline
#
新功能
pipeline.FeatureUnion
現在可以使用索引表示法 (例如feature_union["scalar"]
) 通過名稱存取轉換器。 #25093 由 Thomas Fan 貢獻。新功能
pipeline.FeatureUnion
現在可以存取feature_names_in_
屬性,如果.fit
期間看到的X
值具有columns
屬性且所有列都是字串。 例如,當X
是pandas.DataFrame
時。 #25220 由 Ian Thompson 貢獻。修正 如果管線的最後一步不支援
fit_transform
,pipeline.Pipeline.fit_transform
現在會引發AttributeError
錯誤。 #26325 由 Adrin Jalali 貢獻。
sklearn.preprocessing
#
主要新功能 引入
preprocessing.TargetEncoder
,這是一種基於類別值的目標平均數進行條件編碼的類別編碼方式。 #25334 由 Thomas Fan 貢獻。新功能
preprocessing.OrdinalEncoder
現在支援將不常見的類別分組到單一特徵中。通過指定如何使用min_frequency
或max_categories
選擇不常見的類別來啟用不常見的類別分組。 #25677 由 Thomas Fan 貢獻。增強功能
preprocessing.PolynomialFeatures
現在在處理稀疏csr
矩陣時會預先計算展開項的數量,以優化indices
和indptr
的dtype
選擇。當元素足夠少時,它現在可以輸出具有np.int32
indices/indptr
元件的csr
矩陣,並且對於足夠大的矩陣會自動使用np.int64
。 #20524 由 niuk-a 貢獻,以及 #23731 由 Meekail Zain 貢獻。增強功能
preprocessing.SplineTransformer
新增了一個名為sparse_output
的參數,適用於 SciPy 1.8 及更高版本。 如果sparse_output=True
,preprocessing.SplineTransformer
會返回稀疏 CSR 矩陣。 #24145 由 Christian Lorentzen 貢獻。增強功能 向
preprocessing.OneHotEncoder
新增了feature_name_combiner
參數。 這指定了一個自訂的可呼叫對象,以建立要由preprocessing.OneHotEncoder.get_feature_names_out
返回的特徵名稱。 可呼叫對象將輸入參數(input_feature, category)
組合為字串。 #22506 由 Mario Kostelac 貢獻。增強功能 在
preprocessing.KBinsDiscretizer
中新增了對sample_weight
的支援。 這允許指定每個樣本的sample_weight
參數,以便在擬合時使用。 此選項僅在strategy
設定為quantile
和kmeans
時可用。 #24935 由 Seladus, Guillaume Lemaitre, 和 Dea María Léon 貢獻, #25257 由 Gleb Levitski 貢獻。增強功能 現在,無論使用何種策略,都可以透過
subsample
參數在preprocessing.KBinsDiscretizer
中使用子取樣。 #26424 由 Jérémie du Boisberranger 貢獻。修正 當
set_config(transform_output="pandas")
時,preprocessing.PowerTransformer
現在可以正確保留 Pandas 索引。 #26454 由 Thomas Fan 貢獻。修正 當對具有常數
np.nan
列的資料使用method="box-cox"
時,preprocessing.PowerTransformer
現在會正確引發錯誤。 #26400 由 Yao Xiao 貢獻。修正 具有
method="yeo-johnson"
的preprocessing.PowerTransformer
現在會保持常數特徵不變,而不是使用適合參數lambdas_
的任意值進行轉換。 #26566 由 Jérémie du Boisberranger 貢獻。API 變更
preprocessing.KBinsDiscretizer
的subsample
參數預設值將在 1.5 版本中,當strategy="kmeans"
或strategy="uniform"
時,從None
變更為200_000
。#26424 由 Jérémie du Boisberranger 貢獻。
sklearn.svm
#
API 變更
dual
參數現在接受svm.LinearSVC
和svm.LinearSVR
的auto
選項。#26093 由 Gleb Levitski 貢獻。
sklearn.tree
#
主要功能
tree.DecisionTreeRegressor
和tree.DecisionTreeClassifier
在分類時當splitter='best'
且準則為gini
、entropy
或log_loss
,或者在迴歸時當準則為squared_error
、friedman_mse
或poisson
時,支援遺失值。#23595, #26376 由 Thomas Fan 貢獻。增強功能 為
tree.export_text
新增class_names
參數。這允許以遞增的數字順序為每個目標類別指定參數class_names
。#25387 由 William M 和 crispinlogan 貢獻。修復
tree.export_graphviz
和tree.export_text
現在接受feature_names
和class_names
作為類陣列 (array-like) 而非列表。#26289 由 Yao Xiao 貢獻。
sklearn.utils
#
修復 修復
utils.check_array
以正確轉換 pandas 擴充陣列。#25813 和 #26106 由 Thomas Fan 貢獻。修復
utils.check_array
現在支援具有擴充陣列和物件 dtype 的 pandas DataFrames,方法是傳回具有物件 dtype 的 ndarray。#25814 由 Thomas Fan 貢獻。API 變更 已引入
utils.estimator_checks.check_transformers_unfitted_stateless
,以確保無狀態的轉換器在未事先呼叫fit
或fit_transform
的情況下進行transform
時,不會引發NotFittedError
。#25190 由 Vincent Maladière 貢獻。API 變更 當實例化一個繼承自已棄用基底類別(即由
utils.deprecated
裝飾)且覆寫__init__
方法的類別時,現在會引發FutureWarning
。#25733 由 Brigitta Sipőcz 和 Jérémie du Boisberranger 貢獻。
sklearn.semi_supervised
#
增強功能
semi_supervised.LabelSpreading.fit
和semi_supervised.LabelPropagation.fit
現在接受稀疏度量。#19664 由 Kaushik Amar Das 貢獻。
雜項#
增強功能 取代過時的例外
EnvironmentError
、IOError
和WindowsError
。#26466 由 Dimitri Papadopoulos ORfanos 貢獻。
程式碼和文件貢獻者
感謝自 1.2 版以來為該專案的維護和改進做出貢獻的所有人,包括
2357juan、Abhishek Singh Kushwah、Adam Handke、Adam Kania、Adam Li、adienes、Admir Demiraj、adoublet、Adrin Jalali、A.H.Mansouri、Ahmedbgh、Ala-Na、Alex Buzenet、AlexL、Ali H. El-Kassas、amay、András Simon、André Pedersen、Andrew Wang、Ankur Singh、annegnx、Ansam Zedan、Anthony22-dev、Artur Hermano、Arturo Amor、as-90、ashah002、Ashish Dutt、Ashwin Mathur、AymericBasset、Azaria Gebremichael、Barata Tripramudya Onggo、Benedek Harsanyi、Benjamin Bossan、Bharat Raghunathan、Binesh Bannerjee、Boris Feld、Brendan Lu、Brevin Kunde、cache-missing、Camille Troillard、Carla J、carlo、Carlo Lemos、c-git、Changyao Chen、Chiara Marmo、Christian Lorentzen、Christian Veenhuis、Christine P. Chai、crispinlogan、Da-Lan、DanGonite57、Dave Berenbaum、davidblnc、david-cortes、Dayne、Dea María Léon、Denis、Dimitri Papadopoulos Orfanos、Dimitris Litsidis、Dmitry Nesterov、Dominic Fox、Dominik Prodinger、Edern、Ekaterina Butyugina、Elabonga Atuo、Emir、farhan khan、Felipe Siola、futurewarning、Gael Varoquaux、genvalen、Gleb Levitski、Guillaume Lemaitre、gunesbayir、Haesun Park、hujiahong726、i-aki-y、Ian Thompson、Ido M、Ily、Irene、Jack McIvor、jakirkham、James Dean、JanFidor、Jarrod Millman、JB Mountford、Jérémie du Boisberranger、Jessicakk0711、Jiawei Zhang、Joey Ortiz、JohnathanPi、John Pangas、Joshua Choo Yun Keat、Joshua Hedlund、JuliaSchoepp、Julien Jerphanion、jygerardy、ka00ri、Kaushik Amar Das、Kento Nozawa、Kian Eliasi、Kilian Kluge、Lene Preuss、Linus、Logan Thomas、Loic Esteve、Louis Fouquet、Lucy Liu、Madhura Jayaratne、Marc Torrellas Socastro、Maren Westermann、Mario Kostelac、Mark Harfouche、Marko Toplak、Marvin Krawutschke、Masanori Kanazu、mathurinm、Matt Haberland、Max Halford、maximeSaur、Maxwell Liu、m. bou、mdarii、Meekail Zain、Mikhail Iljin、murezzda、Nawazish Alam、Nicola Fanelli、Nightwalkx、Nikolay Petrov、Nishu Choudhary、NNLNR、npache、Olivier Grisel、Omar Salman、ouss1508、PAB、Pandata、partev、Peter Piontek、Phil、pnucci、Pooja M、Pooja Subramaniam、precondition、Quentin Barthélemy、Rafal Wojdyla、Raghuveer Bhat、Rahil Parikh、Ralf Gommers、ram vikram singh、Rushil Desai、Sadra Barikbin、SANJAI_3、Sashka Warner、Scott Gigante、Scott Gustafson、searchforpassion、Seoeun Hong、Shady el Gewily、Shiva chauhan、Shogo Hida、Shreesha Kumar Bhat、sonnivs、Sortofamudkip、Stanislav (Stanley) Modrak、Stefanie Senger、Steven Van Vaerenbergh、Tabea Kossen、Théophile Baranger、Thijs van Weezel、Thomas A Caswell、Thomas Germer、Thomas J. Fan、Tim Head、Tim P、Tom Dupré la Tour、tomiock、tspeng、Valentin Laurent、Veghit、VIGNESH D、Vijeth Moudgalya、Vinayak Mehta、Vincent M、Vincent-violet、Vyom Pathak、William M、windiana42、Xiao Yuan、Yao Xiao、Yaroslav Halchenko、Yotam Avidar-Constantini、Yuchen Zhou、Yusuf Raji、zeeshan lone