版本 0.23#
關於此版本主要重點的簡短描述,請參考 scikit-learn 0.23 的發佈重點。
變更日誌的圖例
主要功能 之前無法做到的大功能。
功能 之前無法做到的事情。
效率 現有功能現在可能不需要那麼多的計算或記憶體。
增強 各種小幅改進。
修正 以前無法如文件所述運作(或根據合理期望)的某些內容現在應該可以運作。
API 變更 您需要變更程式碼才能在未來產生相同的效果;或某個功能將在未來被移除。
版本 0.23.2#
已變更的模型#
以下估計器和函數,當使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯的變更(錯誤修正或增強功能)或隨機取樣程序中的變更所導致。
修正
inertia_
屬性,適用於cluster.KMeans
和cluster.MiniBatchKMeans
。
詳細資訊列於下方的變更日誌中。
(雖然我們正嘗試透過提供此資訊來更好地告知使用者,但我們無法保證此清單完整。)
變更日誌#
sklearn.cluster
#
修正 修正了
cluster.KMeans
中的一個錯誤,其中當tol=0
時,捨入錯誤可能會阻止宣告收斂。 #17959 由 Jérémie du Boisberranger 提供。修正 修正了
cluster.KMeans
和cluster.MiniBatchKMeans
中的一個錯誤,其中報告的慣性被樣本權重錯誤地加權。 #17848 由 Jérémie du Boisberranger 提供。修正 修正了
cluster.MeanShift
中bin_seeding=True
的一個錯誤。當估計的頻寬為 0 時,行為等同於bin_seeding=False
。 #17742 由 Jeremie du Boisberranger 提供。修正 修正了
cluster.AffinityPropagation
中的一個錯誤,當陣列 dtype 為 float32 時,會產生不正確的叢集。 #17995 由 Thomaz Santana 和 Amanda Dsouza 提供。
sklearn.decomposition
#
修正 修正了
decomposition.MiniBatchDictionaryLearning.partial_fit
中的一個錯誤,此錯誤應僅透過在迷你批次上迭代一次來更新字典。 #17433 由 Chiara Marmo 提供。修正 避免在 Windows 中,
decomposition.IncrementalPCA.partial_fit
中,對於大型的batch_size
和n_samples
值出現溢位。 #17985 由 Alan Butler 和 Amanda Dsouza 提供。
sklearn.ensemble
#
修正 修正了
ensemble.MultinomialDeviance
中的一個錯誤,其中 logloss 的平均值被錯誤地計算為 logloss 的總和。 #17694 由 Markus Rempfler 和 Tsutomu Kusanagi 提供。修正 修正了
ensemble.StackingClassifier
和ensemble.StackingRegressor
與未定義n_features_in_
的估計器的相容性。 #17357 由 Thomas Fan 提供。
sklearn.feature_extraction
#
修正 修正了
feature_extraction.text.CountVectorizer
中的一個錯誤,當設定max_features
且特徵具有相同計數時,樣本順序不變性會被破壞。 #18016 由 Thomas Fan、Roman Yurchak 和 Joel Nothman 提供。
sklearn.linear_model
#
修正
linear_model.lars_path
在X_copy=True
和Gram='auto'
時不會覆寫X
。 #17914 由 Thomas Fan 提供。
sklearn.manifold
#
修正 修正了一個錯誤,如果
metric='seuclidean'
且X
不是np.float64
類型,metrics.pairwise_distances
會引發錯誤。 #15730 由 Forrest Koch 提供。
sklearn.metrics
#
修正 修正了
metrics.mean_squared_error
中的一個錯誤,其中多個 RMSE 值的平均值被錯誤地計算為多個 MSE 值的平均值的根。 #17309 由 Swier Heeres 提供。
sklearn.pipeline
#
修正 當
transformer_list
中包含None
時,pipeline.FeatureUnion
會引發棄用警告。 #17360 由 Thomas Fan 提供。
sklearn.utils
#
修正 修正
utils.estimator_checks.check_estimator
,使其所有測試案例都支援binary_only
估計器標籤。#17812 由 Bruno Charron 提供。
版本 0.23.1#
2020 年 5 月 18 日
變更日誌#
sklearn.cluster
#
效率提升
cluster.KMeans
在處理非常小的資料集時效率已提升。特別是它不再會產生閒置執行緒。#17210 和 #17235 由 Jeremie du Boisberranger 提供。修正 修正了
cluster.KMeans
中使用者提供的樣本權重會被就地修改的錯誤。#17204 由 Jeremie du Boisberranger 提供。
其他#
修正 修正了在建構函式中使用
**kwargs
參數的第三方估計器的repr
中的錯誤,當changed_only
為 True 時,現在這是預設值。#17205 由 Nicolas Hug 提供。
版本 0.23.0#
2020 年 5 月 12 日
強制使用僅限關鍵字引數#
為了促進程式庫的清晰且不含糊的使用方式,大多數建構函式和函數參數現在都應該以關鍵字引數的方式傳遞(即使用 param=value
語法),而不是位置引數。為了方便轉換,如果僅限關鍵字的參數以位置引數的方式使用,則會引發 FutureWarning
。在版本 1.0(重新命名為 0.25)中,這些參數將嚴格為僅限關鍵字的參數,並且會引發 TypeError
。#15005 由 Joel Nothman、Adrin Jalali、Thomas Fan 和 Nicolas Hug 提供。請參閱 SLEP009 以取得更多詳細資訊。
變更的模型#
以下估計器和函數,當使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯的變更(錯誤修正或增強功能)或隨機取樣程序中的變更所導致。
修正
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
。修正
cluster.KMeans
,使用algorithm="elkan"
和algorithm="full"
。修正
compose.ColumnTransformer.get_feature_names
修正
decomposition.PCA
,使用n_components='mle'
增強
decomposition.NMF
和decomposition.non_negative_factorization
,使用 float32 dtype 輸入。API 變更
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
修正
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
中的estimator_samples_
修正
ensemble.StackingClassifier
和ensemble.StackingRegressor
,使用sample_weight
修正 使用
sample_weight
的linear_model.RANSACRegressor
。修正
metrics.mean_squared_error
,使用squared
和multioutput='raw_values'
。修正
metrics.mutual_info_score
,處理負分。修正
metrics.confusion_matrix
,處理零長度的y_true
和y_pred
修正 針對
preprocessing.StandardScaler
使用partial_fit
和稀疏輸入的問題。修正 針對
preprocessing.Normalizer
使用 norm='max' 的問題。修正 任何使用
svm.libsvm
或svm.liblinear
解算器的模型,包括svm.LinearSVC
、svm.LinearSVR
、svm.NuSVC
、svm.NuSVR
、svm.OneClassSVM
、svm.SVC
、svm.SVR
、linear_model.LogisticRegression
。修正
tree.DecisionTreeClassifier
、tree.ExtraTreeClassifier
和ensemble.GradientBoostingClassifier
,以及tree.DecisionTreeRegressor
、tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
的predict
方法,以及在predict
、decision_path
和predict_proba
中使用唯讀 float32 輸入的問題。
詳細資訊列於下方的變更日誌中。
(雖然我們正嘗試透過提供此資訊來更好地告知使用者,但我們無法保證此清單完整。)
更新日誌#
sklearn.cluster
#
效率提升
cluster.Birch
的 predict 方法實作透過使用分塊方案計算距離矩陣來避免高記憶體佔用。 #16149 由 Jeremie du Boisberranger 和 Alex Shacked 貢獻。效率提升 主要功能
cluster.KMeans
的關鍵部分有更優化的實作。平行處理現在是對資料而不是對初始值進行,從而實現更好的可擴展性。 #11950 由 Jeremie du Boisberranger 貢獻。增強功能 當
solver = "elkan"
時,cluster.KMeans
現在支援稀疏資料。 #11950 由 Jeremie du Boisberranger 貢獻。增強功能
cluster.AgglomerativeClustering
對單連結群集有更快且更節省記憶體的實作。 #11514 由 Leland McInnes 貢獻。修正 使用
algorithm="elkan"
的cluster.KMeans
現在會像預設的algorithm="full"
一樣在tol=0
時收斂。 #16075 由 Erich Schubert 貢獻。修正 修正了
cluster.Birch
中的錯誤,其中n_clusters
參數不能為np.int64
類型。 #16484 由 Jeremie du Boisberranger 貢獻。修正 當距離矩陣不是正方形且
affinity=precomputed
時,cluster.AgglomerativeClustering
新增特定錯誤。 #16257 由 Simona Maggio 貢獻。API 變更
cluster.KMeans
、cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的n_jobs
參數已被棄用。它們現在使用基於 OpenMP 的平行處理。有關如何控制執行緒數量的更多詳細資訊,請參閱我們的 平行處理 說明。 #11950 由 Jeremie du Boisberranger 貢獻。API 變更
cluster.KMeans
的precompute_distances
參數已被棄用。它沒有任何作用。 #11950 由 Jeremie du Boisberranger 貢獻。API 變更
random_state
參數已新增至cluster.AffinityPropagation
。 #16801 由 @rcwoolston 和 Chiara Marmo 貢獻。
sklearn.compose
#
效率提升 當使用資料框且使用字串指定轉換器的資料子集時,
compose.ColumnTransformer
現在更快。 #16431 由 Thomas Fan 貢獻。增強功能
compose.ColumnTransformer
的get_feature_names
方法現在支援'passthrough'
欄位,其特徵名稱為資料框的欄位名稱,或欄位索引i
的'xi'
。 #14048 由 Lewis Ball 貢獻。修正 當其中一個轉換器步驟應用於空欄位列表時,
compose.ColumnTransformer
的get_feature_names
方法現在會傳回正確的結果。 #15963 由 Roman Yurchak 貢獻。修正
compose.ColumnTransformer.fit
在選取 DataFrame 中不唯一的欄位名稱時會發生錯誤。 #16431 由 Thomas Fan 貢獻。
sklearn.datasets
#
效率提升
datasets.fetch_openml
減少了記憶體使用量,因為它不再將完整的資料集文字串流儲存在記憶體中。 #16084 由 Joel Nothman 貢獻。新功能
datasets.fetch_california_housing
現在透過設定as_frame=True
,支援使用 pandas 的異質資料。 #15950 由 Stephanie Andrews 和 Reshama Shaikh 貢獻。新功能 內嵌資料集載入器
datasets.load_breast_cancer
、datasets.load_diabetes
、datasets.load_digits
、datasets.load_iris
、datasets.load_linnerud
和datasets.load_wine
現在透過設定as_frame=True
,支援載入為 pandasDataFrame
。 #15980 由 @wconnell 和 Reshama Shaikh 貢獻。增強 在
datasets.make_blobs
中新增了return_centers
參數,可用於返回每個叢集的中心點。 #15709 由 @shivamgargsya 和 Venkatachalam N 貢獻。增強 函式
datasets.make_circles
和datasets.make_moons
現在接受兩個元素的元組。 #15707 由 Maciej J Mikulski 貢獻。修正
datasets.make_multilabel_classification
現在針對引數n_classes < 1
或length < 1
產生ValueError
。 #16006 由 Rushabh Vasani 貢獻。API 變更 為了避免在常見情況下,處理器附加到根記錄器時,訊息被重複記錄,並為了遵循 Python 記錄文件針對函式庫應將記錄訊息處理留給使用者和應用程式碼的建議,從
sklearn.logger
中移除了StreamHandler
。 #16451 由 Christoph Deil 貢獻。
sklearn.decomposition
#
增強
decomposition.NMF
和decomposition.non_negative_factorization
現在保留 float32 資料類型。 #16280 由 Jeremie du Boisberranger 貢獻。增強
decomposition.TruncatedSVD.transform
現在在給定的稀疏csc
矩陣上速度更快。 #16837 由 @wornbb 貢獻。修正 使用浮點數
n_components
參數的decomposition.PCA
,將會專門選擇解釋變異數大於n_components
的成分。 #15669 由 Krishna Chaitanya 貢獻。修正 使用
n_components='mle'
的decomposition.PCA
現在可以正確處理小的特徵值,並且不會推斷 0 為正確的成分數量。 #16224 由 Lisa Schwetlick、Gelavizh Ahmadi 和 Marija Vlajic Wheeler 貢獻,以及 #16841 由 Nicolas Hug 貢獻。修正
decomposition.KernelPCA
方法inverse_transform
現在將正確的反向轉換套用至轉換後的資料。 #16655 由 Lewis Ball 貢獻。修正 修正了導致
decomposition.KernelPCA
在fit
期間有時會引發invalid value encountered in multiply
的錯誤。 #16718 由 Gui Miotto 貢獻。新功能 為
decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
新增了n_components_
屬性。 #16981 由 Mateusz Górski 貢獻。
sklearn.ensemble
#
主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
現在支援 sample_weight。 #14696 由 Adrin Jalali 和 Nicolas Hug 貢獻。新功能 在
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中,提前停止訓練 (early stopping) 現在由新的early_stopping
參數決定,而不是n_iter_no_change
。預設值為 'auto',如果訓練集中至少有 10,000 個樣本,則啟用提前停止訓練。 #14516 由 Johann Faouzi 貢獻。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
現在支援單調約束 (monotonic constraints),當特徵預期對目標產生正向/負向影響時非常有用。 #15582 由 Nicolas Hug 貢獻。API 變更 為以下類別新增了布林值
verbose
標誌:ensemble.VotingClassifier
和ensemble.VotingRegressor
。 #16069 由 Sam Bail、Hanna Bruce MacDonald、Reshama Shaikh 和 Chiara Marmo 貢獻。API 變更 修正了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的一個錯誤,該錯誤會導致在達到max_depth
條件的同時也達到max_leaf_nodes
條件時,max_leaf_nodes
參數失效。 #16183 由 Nicolas Hug 貢獻。修復 變更了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的max_depth
參數的慣例。現在,深度對應於從根節點到最深葉節點的邊數。現在允許使用樹樁(只有一個分裂的樹)。#16182 由 Santhosh B 貢獻。修復 修正了
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
中的一個錯誤,該錯誤導致屬性estimators_samples_
沒有生成在fit
期間使用的正確索引。 #16437 由 Jin-Hwan CHO 貢獻。修復 修正了
ensemble.StackingClassifier
和ensemble.StackingRegressor
中的一個錯誤,該錯誤導致在交叉驗證折疊上評估基礎估計器以獲得元估計器的輸入時,sample_weight
參數沒有傳遞給cross_val_predict
。 #16539 由 Bill DeRose 貢獻。新功能 為
ensemble.HistGradientBoostingRegressor
添加了額外的選項loss="poisson"
,它增加了對數連結的 Poisson 偏差,可用於建模計數資料。 #16692 由 Christian Lorentzen 貢獻。修復 修正了當
warm_start=True
、early_stopping=True
且沒有驗證集時,多次調用 fit 會導致ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
失敗的錯誤。 #16663 由 Thomas Fan 貢獻。
sklearn.feature_extraction
#
效率提升
feature_extraction.text.CountVectorizer
現在會在透過文件頻率修剪特徵後對其進行排序。這改善了具有大型詞彙表並結合min_df
或max_df
的資料集的效能。 #15834 由 Santiago M. Mola 貢獻。
sklearn.feature_selection
#
增強功能 在
feature_selection.RFE
和feature_selection.RFECV
中新增了對多輸出資料的支援。 #16103 由 Divyaprabha M 貢獻。API 變更 將
feature_selection.SelectorMixin
重新新增回公開 API。 #16132 由 @trimeta 貢獻。
sklearn.gaussian_process
#
增強
gaussian_process.kernels.Matern
在nu=np.inf
時會回傳 RBF 核函數。#15503 由 Sam Dixon 貢獻。修復 修復了
gaussian_process.GaussianProcessRegressor
中的錯誤,此錯誤導致當未使用 WhiteKernel 時,預測的標準差僅介於 0 和 1 之間。#15782 由 @plgreenLIRU 貢獻。
sklearn.impute
#
增強
impute.IterativeImputer
接受max_value
和min_value
的純量和類陣列輸入。類陣列輸入允許為每個特徵指定不同的最大值和最小值。#16403 由 Narendra Mukherjee 貢獻。增強
impute.SimpleImputer
、impute.KNNImputer
和impute.IterativeImputer
接受具有遺失值的 pandas 可空整數 dtype。#16508 由 Thomas Fan 貢獻。
sklearn.inspection
#
功能
inspection.partial_dependence
和inspection.plot_partial_dependence
現在支援ensemble.RandomForestRegressor
和tree.DecisionTreeRegressor
的快速「遞迴」方法。#15864 由 Nicolas Hug 貢獻。
sklearn.linear_model
#
主要功能 新增了具有非正規誤差分佈的廣義線性模型 (GLM),包括
linear_model.PoissonRegressor
、linear_model.GammaRegressor
和linear_model.TweedieRegressor
,它們分別使用 Poisson、Gamma 和 Tweedie 分佈。#14300 由 Christian Lorentzen、Roman Yurchak 和 Olivier Grisel 貢獻。主要功能 在
linear_model.ElasticNet
和linear_model.Lasso
中支援用於密集特徵矩陣X
的sample_weight
。#15436 由 Christian Lorentzen 貢獻。效率
linear_model.RidgeCV
和linear_model.RidgeClassifierCV
現在在其fit
期間不會分配可能很大的陣列來儲存所有超參數的對偶係數,也不會分配陣列來儲存所有誤差或 LOO 預測,除非store_cv_values
為True
。#15652 由 Jérôme Dockès 貢獻。增強
linear_model.LassoLars
和linear_model.Lars
現在支援jitter
參數,該參數會將隨機雜訊新增至目標。這可能有助於在某些邊緣情況下提高穩定性。#15179 由 @angelaambroz 貢獻。修復 修復了一個錯誤,如果將
sample_weight
參數傳遞給linear_model.RANSACRegressor
的 fit 方法,則該參數不會在最終模型的擬合期間傳遞給包裝的base_estimator
。#15773 由 Jeremy Alexandre 貢獻。修復 將
best_score_
屬性新增至linear_model.RidgeCV
和linear_model.RidgeClassifierCV
。#15655 由 Jérôme Dockès 貢獻。修復 修復了
linear_model.RidgeClassifierCV
中的錯誤,以傳遞特定的評分策略。在之前,內部估計器輸出分數而不是預測。#14848 由 Venkatachalam N 貢獻。修復
linear_model.LogisticRegression
現在將避免當solver='newton-cg'
時不必要的迭代,方法是在utils.optimize._newton_cg
中檢查absgrad
和tol
的最大值是否小於或等於,而不是嚴格小於。#16266 由 Rushabh Vasani 貢獻。API 變更 已棄用
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
中的公開屬性standard_coef_
、standard_intercept_
、average_coef_
和average_intercept_
。#16261 由 Carlos Brandt 貢獻。修復 效率 當
n_samples > n_features
時,linear_model.ARDRegression
更穩定且速度更快。現在它可以擴展到數十萬個樣本。穩定性修復可能會導致非零係數數量和預測輸出的變化。#16849 由 Nicolas Hug 貢獻。修復 修復了當使用 joblib loky 後端時,
linear_model.ElasticNetCV
、linear_model.MultiTaskElasticNetCV
、linear_model.LassoCV
和linear_model.MultiTaskLassoCV
中擬合會失敗的錯誤。#14264 由 Jérémie du Boisberranger 貢獻。效率 透過避免在小型陣列上較慢的 BLAS Level 2 呼叫,加速
linear_model.MultiTaskLasso
、linear_model.MultiTaskLassoCV
、linear_model.MultiTaskElasticNet
、linear_model.MultiTaskElasticNetCV
。#17021 由 Alex Gramfort 和 Mathurin Massias 貢獻。
sklearn.metrics
#
增強
metrics.pairwise_distances_chunked
現在允許其reduce_func
沒有回傳值,從而實現就地操作。#16397 由 Joel Nothman 貢獻。修復 修復了
metrics.mean_squared_error
在參數multioutput='raw_values'
時,會忽略參數squared
的錯誤。#16323 由 Rushabh Vasani 貢獻。修復 修復了
metrics.mutual_info_score
可能會回傳負分數的錯誤。#16362 由 Thomas Fan 貢獻。修復 修復了當
y_true
和y_pred
的長度為零,且labels
不是None
時,metrics.confusion_matrix
會引發錯誤的錯誤。此外,當傳遞空列表給labels
參數時,我們會引發錯誤。#16442 由 Kyle Parsons 貢獻。API 變更 變更了
metrics.ConfusionMatrixDisplay.plot
和metrics.plot_confusion_matrix
中值的格式設定,以選擇較短的格式('2g' 或 'd')。#16159 由 Rick Mackenbach 和 Thomas Fan 貢獻。API 變更 從 0.25 版本開始,如果傳遞了
Y
,metrics.pairwise_distances
將不再自動計算 Mahalanobis 距離的VI
參數和 seuclidean 距離的V
參數。使用者將需要自行計算其選擇的訓練資料上的此參數,並將其傳遞給pairwise_distances
。#16993 由 Joel Nothman 貢獻。
sklearn.model_selection
#
增強
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
除了先前發出的類型和詳細資訊外,還會在擬合失敗的警告訊息中產生堆疊追蹤資訊。#15622 由 Gregory Morse 貢獻。修復 當
y=None
時,model_selection.cross_val_predict
支援method="predict_proba"
。#15918 由 Luca Kubin 貢獻。修復
model_selection.fit_grid_point
在 0.23 中已棄用,並將在 0.25 中移除。#16401 由 Arie Pratama Sutiono 貢獻。
sklearn.multioutput
#
功能
multioutput.MultiOutputRegressor.fit
和multioutput.MultiOutputClassifier.fit
現在可以接受fit_params
來傳遞給每個步驟的estimator.fit
方法。#15953 #15959 由 Ke Huang 貢獻。增強
multioutput.RegressorChain
現在在fit
期間支援base_estimator
的fit_params
。#16111 由 Venkatachalam N 貢獻。
sklearn.naive_bayes
#
修復 當輸入中的特徵數量在
predict
和fit
之間不同時,naive_bayes.CategoricalNB
中會顯示格式正確的錯誤訊息。#16090 由 Madhura Jayaratne 貢獻。
sklearn.neural_network
#
效率提升
neural_network.MLPClassifier
和neural_network.MLPRegressor
在使用隨機求解器(stochastic solvers),'sgd'
或'adam'
,以及shuffle=True
時,已減少記憶體佔用。 #14075 由 @meyer89 貢獻。修正 透過截斷機率值,提升
neural_network.MLPClassifier
中邏輯損失函數的數值穩定性。#16117 由 Thomas Fan 貢獻。
sklearn.inspection
#
功能增強
inspection.PartialDependenceDisplay
現在公開十分位數線作為屬性,以便可以隱藏或自訂它們。 #15785 由 Nicolas Hug 貢獻。
sklearn.preprocessing
#
新功能
preprocessing.OneHotEncoder
的參數drop
現在將接受值 ‘if_binary’,並且將會捨棄每個具有兩個類別的特徵的第一個類別。#16245 由 Rushabh Vasani 貢獻。功能增強
preprocessing.OneHotEncoder
的drop_idx_
ndarray 現在可以包含None
,其中drop_idx_[i] = None
表示索引i
沒有捨棄任何類別。 #16585 由 Chiara Marmo 貢獻。功能增強
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
、preprocessing.RobustScaler
現在支援帶有遺失值的 pandas 可為空的整數 dtype。 #16508 由 Thomas Fan 貢獻。效率提升
preprocessing.OneHotEncoder
現在轉換速度更快。 #15762 由 Thomas Fan 貢獻。修正 修正了在稀疏輸入上呼叫
partial_fit
時,preprocessing.StandardScaler
不正確計算統計數據的錯誤。 #16466 由 Guillaume Lemaitre 貢獻。修正 修正了
preprocessing.Normalizer
使用 norm=’max’ 時的錯誤,該錯誤在正規化向量之前,未取最大值的絕對值。#16632 由 Maura Pintor 和 Battista Biggio 貢獻。
sklearn.semi_supervised
#
修正
semi_supervised.LabelSpreading
和semi_supervised.LabelPropagation
在正規化label_distributions_
時,避免了除以零的警告。 #15946 由 @ngshya 貢獻。
sklearn.svm
#
修正 效率提升 改進了
libsvm
和liblinear
隨機數生成器,用於隨機選擇坐標下降演算法中的坐標。使用了與平台相關的 Crand()
,它在 Windows 平台上只能產生高達32767
的數字(請參閱此 部落格文章),並且根據 此簡報 的建議,隨機化能力也較差。 它已替換為 C++11mt19937
,這是一種在所有平台上正確生成 31 位元/63 位元隨機數的梅森旋轉演算法。此外,為了在有界區間中取得隨機數,所使用的原始「模數」後處理器被調整後的 Lemire 方法所取代,如 此部落格文章 所建議。任何使用svm.libsvm
或svm.liblinear
求解器的模型,包括svm.LinearSVC
、svm.LinearSVR
、svm.NuSVC
、svm.NuSVR
、svm.OneClassSVM
、svm.SVC
、svm.SVR
、linear_model.LogisticRegression
都會受到影響。 特別是當樣本數 (LibSVM) 或特徵數 (LibLinear) 很大時,使用者可以期望有更好的收斂性。 #13511 由 Sylvain Marié 貢獻。修正 修正了
svm.SVC
和svm.SVR
中未採用浮點數條目的自訂核函數(例如字串核函數)的錯誤。 請注意,自訂核函數現在預期會驗證它們的輸入,而在以前它們會接收有效的數值陣列。 #11296 由 Alexandre Gramfort 和 Georgi Peev 貢獻。API 變更
svm.SVR
和svm.OneClassSVM
的屬性probA_
和probB_
現在已被棄用,因為它們沒有用處。 #15558 由 Thomas Fan 貢獻。
sklearn.tree
#
修復
tree.plot_tree
rotate
參數未使用且已被棄用。#15806 由 Chiara Marmo 貢獻。修復 修復在
predict
、decision_path
和predict_proba
方法中對唯讀 float32 陣列輸入的支援問題,這些方法屬於tree.DecisionTreeClassifier
、tree.ExtraTreeClassifier
和ensemble.GradientBoostingClassifier
,以及tree.DecisionTreeRegressor
、tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
的predict
方法。#16331 由 Alexandre Batisse 貢獻。
sklearn.utils
#
主要功能 現在可以使用豐富的 html 表示形式顯示估計器。這可以在 Jupyter 筆記本中透過在
set_config
中設定display='diagram'
來啟用。可以使用utils.estimator_html_repr
來返回原始 html。#14180 由 Thomas Fan 貢獻。增強 改進
utils.validation.column_or_1d
中的錯誤訊息。#15926 由 Loïc Estève 貢獻。增強 在
utils.check_array
中為 pandas 稀疏 DataFrame 添加警告。#16021 由 Rushabh Vasani 貢獻。增強
utils.check_array
現在會從僅包含SparseArray
列的 pandas DataFrame 建構稀疏矩陣。#16728 由 Thomas Fan 貢獻。增強 當
force_all_finite
設定為False
或'allow-nan'
時,utils.check_array
支援帶有遺失值的 pandas 可為空的整數 dtype,在這種情況下,資料會轉換為浮點數值,其中pd.NA
值會被np.nan
取代。 因此,所有接受以np.nan
表示的遺失值的數值輸入的sklearn.preprocessing
轉換器,現在也接受直接輸入帶有pd.Int* 或 `pd.Uint*
類型列且使用pd.NA
作為遺失值標記的 pandas 資料框架。#16508 由 Thomas Fan 貢獻。API 變更 將類別傳遞給
utils.estimator_checks.check_estimator
和utils.estimator_checks.parametrize_with_checks
現在已棄用,並且將在 0.24 版本中移除對類別的支援。請改為傳遞實例。#17032 由 Nicolas Hug 貢獻。API 變更 移除了
utils.estimator_checks
中的私有工具_safe_tags
,因此所有標籤都應該透過estimator._get_tags()
取得。 請注意,像RegressorMixin
這樣的 Mixin 必須在 MRO 中的基底類別*之前*,才能讓_get_tags()
正常運作。#16950 由 Nicolas Hug 貢獻。修復
utils.all_estimators
現在只返回公開的估計器。#15380 由 Thomas Fan 貢獻。
其他#
主要功能 添加了估計器的 HTML 表示形式,以便在 jupyter 筆記本或實驗室中顯示。此視覺化效果透過在
sklearn.set_config
中設定display
選項來啟用。#14180 由 Thomas Fan 貢獻。增強
scikit-learn
現在可以與mypy
一起使用,而不會產生錯誤。#16726 由 Roman Yurchak 貢獻。API 變更 大多數估計器現在都公開了一個
n_features_in_
屬性。此屬性等於傳遞給fit
方法的功能數量。有關詳細資訊,請參閱 SLEP010。#16112 由 Nicolas Hug 貢獻。API 變更 估計器現在有一個
requires_y
標籤,預設情況下為 False,但從~sklearn.base.RegressorMixin
或~sklearn.base.ClassifierMixin
繼承的估計器除外。此標籤用於確保在預期 y 但傳遞了 None 時引發正確的錯誤訊息。#16622 由 Nicolas Hug 貢獻。API 變更 預設設定
print_changed_only
已從 False 變更為 True。這表示估計器的repr
現在更加簡潔,並且在列印估計器時只會顯示預設值已變更的參數。您可以使用sklearn.set_config(print_changed_only=False)
來恢復之前的行為。此外,請注意,始終可以使用est.get_params(deep=False)
來快速檢查任何估計器的參數。#17061 由 Nicolas Hug 貢獻。
程式碼和文件貢獻者
感謝自 0.22 版以來為維護和改進專案做出貢獻的所有人,包括
Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang “Maxin” Tang