版本 0.21#
變更日誌圖例
主要功能 之前無法做到的大功能。
功能 之前無法做到的功能。
效率 現有功能現在可能不需要那麼多的計算或記憶體。
增強 各種小的改進。
修復 之前無法按照文件記錄或按照合理預期運作的功能,現在應該可以運作了。
API 變更 您將需要更改您的程式碼才能在未來達到相同的效果;或者某個功能將在未來被移除。
版本 0.21.3#
2019 年 7 月 30 日
已變更的模型#
以下估計器和函數,當使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強功能)或隨機抽樣程序的變更而發生的。
v0.20.0 發行說明沒有提及
metrics.make_scorer
在needs_proba=True
和y_true
為二元時的向後不相容性。現在,評分函數應該接受 1D 的y_pred
(即正類別的機率,形狀為(n_samples,)
),而不是 2D 的y_pred
(即形狀為(n_samples, 2)
)。
變更日誌#
sklearn.cluster
#
修復 修復了
cluster.KMeans
中的一個錯誤,其中使用init='random'
進行計算時,對於n_jobs > 1
或n_jobs = -1
使用單執行緒。 #12955 由 Prabakaran Kumaresshan 提供。修復 修復了
cluster.OPTICS
中的一個錯誤,該錯誤導致使用者無法傳遞浮點數min_samples
和min_cluster_size
。 #14496 由 Fabian Klopfer 和 Hanmin Qin 提供。修復 修復了
cluster.KMeans
中的一個錯誤,其中 KMeans++ 初始化偶爾可能會導致 IndexError。 #11756 由 Joel Nothman 提供。
sklearn.compose
#
修復 修復了
compose.ColumnTransformer
中的一個問題,其中使用在 :func:fit
和 :func:transform
之間欄位順序不同的 DataFrame 時,可能會默默地將不正確的欄位傳遞給remainder
轉換器。 #14237 由Andreas Schuderer <schuderer>
提供。
sklearn.datasets
#
修復
datasets.fetch_california_housing
、datasets.fetch_covtype
、datasets.fetch_kddcup99
、datasets.fetch_olivetti_faces
、datasets.fetch_rcv1
和datasets.fetch_species_distributions
嘗試使用新的joblib
保留先前的快取,如果快取資料是使用已棄用的sklearn.externals.joblib
保留的。此行為設定為在 v0.23 中棄用並移除。 #14197 由 Adrin Jalali 提供。
sklearn.ensemble
#
修復 修復了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的零除法錯誤。 #14024 由Nicolas Hug <NicolasHug>
提供。
sklearn.impute
#
修復 修復了
impute.SimpleImputer
和impute.IterativeImputer
中的一個錯誤,以便在訓練資料中存在遺失值時不會拋出錯誤。 #13974 由Frank Hoang <fhoang7>
提供。
sklearn.inspection
#
修復 修復了
inspection.plot_partial_dependence
中的一個錯誤,其中target
參數在多類別問題中未被考慮。 #14393 由 Guillem G. Subies 提供。
sklearn.linear_model
#
修復 修復了
linear_model.LogisticRegressionCV
中的一個錯誤,其中refit=False
會根據'multiclass'
和'penalty'
參數而失敗(0.21 中引入的迴歸)。 #14087 由 Nicolas Hug 提供。修正 為
linear_model.ARDRegression
和 Scipy>=1.3.0 的相容性修正。調整上游對於預設pinvh
截止閾值的變更,否則會在某些情況下導致準確性不佳。 #14067 由 Tim Staley 貢獻。
sklearn.neighbors
#
修正 修正了
neighbors.NeighborhoodComponentsAnalysis
中的一個錯誤,其中初始參數n_components
、max_iter
和tol
的驗證需要過於嚴格的類型。 #14092 由 Jérémie du Boisberranger 貢獻。
sklearn.tree
#
修正 修正了當樹只有一個特徵且傳入單個特徵名稱時,
tree.export_text
中的錯誤。 #14053 由Thomas Fan
貢獻。修正 修正了
tree.plot_tree
中的一個問題,即使在 DecisionTreeClassifiers 中使用gini
準則,它也會顯示熵計算。 #13947 由 Frank Hoang 貢獻。
版本 0.21.2#
2019 年 5 月 24 日
變更日誌#
sklearn.decomposition
#
修正 修正了
cross_decomposition.CCA
中的一個錯誤,當Y
接近零時,提高了數值穩定性。 #13903 由 Thomas Fan 貢獻。
sklearn.metrics
#
修正 修正了
metrics.pairwise.euclidean_distances
中的一個錯誤,其中對於足夠大的 float32 資料集,距離矩陣的一部分未被實例化(在 0.21 版本中引入的迴歸)。 #13910 由 Jérémie du Boisberranger 貢獻。
sklearn.preprocessing
#
修正 修正了
preprocessing.OneHotEncoder
中的一個錯誤,其中新的drop
參數未反映在get_feature_names
中。 #13894 由 James Myatt 貢獻。
sklearn.utils.sparsefuncs
#
修正 修正了在 32 位元系統上,對於某些大型輸入,
min_max_axis
會失敗的錯誤。這會影響preprocessing.MaxAbsScaler
、preprocessing.normalize
和preprocessing.LabelBinarizer
。 #13741 由 Roddy MacSween 貢獻。
版本 0.21.1#
2019 年 5 月 17 日
這是一個錯誤修復版本,主要解決 0.21.0 版本中的一些封裝問題。它還包括了小的文件改進和一些錯誤修復。
變更日誌#
sklearn.inspection
#
修正 修正了
inspection.partial_dependence
中的一個錯誤,僅針對多類別-多輸出情況檢查分類器,而不是回歸器。 #14309 由 Guillaume Lemaitre 貢獻。
sklearn.metrics
#
修正 修正了
metrics.pairwise_distances
中的一個錯誤,當X
具有布林 dtype 且Y == None
時,對於布林指標會引發AttributeError
。 #13864 由 Paresh Mathur 貢獻。修正 修正了當
n_jobs > 1
時,metrics.pairwise_distances
中的兩個錯誤。首先,它過去會返回與輸入相同 dtype 的距離矩陣,即使對於整數 dtype 也是如此。然後,當Y
為X
時,歐幾里得指標的對角線不為零。 #13877 由 Jérémie du Boisberranger 貢獻。
sklearn.neighbors
#
修正 修正了如果使用了
sample_weight
,則無法從 pickle 還原neighbors.KernelDensity
的錯誤。 #13772 由 Aditya Vyas 貢獻。
版本 0.21.0#
2019 年 5 月
變更的模型#
以下估計器和函數,當使用相同的資料和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強功能)或隨機抽樣程序的變更而發生的。
discriminant_analysis.LinearDiscriminantAnalysis
使用 ‘eigen’ 求解器。修正當同時設定
max_depth
和max_leaf_nodes
時,決策樹和衍生集成模型會出現問題。修正linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
使用 ‘saga’ 求解器時的問題。修正sklearn.feature_extraction.text.HashingVectorizer
、sklearn.feature_extraction.text.TfidfVectorizer
和sklearn.feature_extraction.text.CountVectorizer
的問題。修正svm.SVC.decision_function
和multiclass.OneVsOneClassifier.decision_function
的問題。修正linear_model.SGDClassifier
和任何衍生分類器的問題。修正任何使用
linear_model._sag.sag_solver
函數且種子 (seed) 為0
的模型,包括linear_model.LogisticRegression
、linear_model.LogisticRegressionCV
、linear_model.Ridge
和linear_model.RidgeCV
(使用 ‘sag’ 求解器)的問題。修正linear_model.RidgeCV
在對稀疏輸入使用留一交叉驗證時的問題。修正
詳細資訊列於下方的變更日誌中。
(儘管我們正努力提供這些資訊來更好地通知使用者,但我們無法保證此列表是完整的。)
已知的主要錯誤#
對於許多求解器來說,
linear_model.LogisticRegression
的預設max_iter
相對於預設的tol
來說太小了。特別是,我們在 #3591 版本 0.16 中,不小心將 liblinear 求解器的預設max_iter
從 1000 次迭代改為 100 次迭代。在未來的版本中,我們希望根據求解器,以啟發式方式選擇更好的預設max_iter
和tol
(請參閱 #13317)。
變更日誌#
已正式放棄對 Python 3.4 和更早版本的支援。
sklearn.base
#
API 變更 在回歸模型上呼叫
score
時使用的 R2 分數,將從 0.23 版本開始使用multioutput='uniform_average'
,以與metrics.r2_score
保持一致。這將影響所有多輸出回歸模型的score
方法(multioutput.MultiOutputRegressor
除外)。#13157 由 Hanmin Qin 提供。
sklearn.calibration
#
增強 加入對
calibration.calibration_curve
進行資料分箱的支持,可以使用分位數,而不是在 0 和 1 之間均勻分佈。#13086 由 Scott Cole 提供。增強 允許將 n 維陣列作為
calibration.CalibratedClassifierCV
的輸入。#13485 由 William de Vazelhes 提供。
sklearn.cluster
#
主要功能 一個新的群集演算法:
cluster.OPTICS
:一種與cluster.DBSCAN
相關的演算法,其超參數更容易設定,並且具有更好的擴展性,由 Shane、Adrin Jalali、Erich Schubert、Hanmin Qin 和 Assia Benbihi 提供。修正 修正在某些情況下
cluster.Birch
可能會引發 AttributeError 的錯誤。#13651 由 Joel Nothman 提供。修正 修正在使用樣本權重時,
cluster.KMeans
中空群集未正確重新定位的錯誤。#13486 由 Jérémie du Boisberranger 提供。API 變更
cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
中的n_components_
屬性已重新命名為n_connected_components_
。#13427 由 Stephane Couvreur 提供。增強
cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
現在接受distance_threshold
參數,可以使用該參數來尋找群集,而不是使用n_clusters
。#9069 由 Vathsala Achar 和 Adrin Jalali 提供。
sklearn.compose
#
API 變更
compose.ColumnTransformer
不再是實驗性功能。#13835 由 Hanmin Qin 提供。
sklearn.datasets
#
修正 新增對 SVMLight 檔案中 64 位元組群組 ID 和指標的支援。#10727 由 Bryan K Woods 提供。
修正
datasets.load_sample_images
現在會以確定的順序回傳圖片。 #13250 由 Thomas Fan 貢獻。
sklearn.decomposition
#
增強
decomposition.KernelPCA
現在具有確定的輸出(解決了核矩陣特徵值分解中的符號歧義)。 #13241 由 Aurélien Bellet 貢獻。修正 修正了
decomposition.KernelPCA
中的一個錯誤,在未移除零特徵值的情況下(remove_zero_eig=False
),fit().transform()
現在會產生正確的輸出(與fit_transform()
相同)。fit_inverse_transform
也透過使用與fit_transform
相同的技巧來計算X
的轉換而加速。 #12143 由 Sylvain Marié 貢獻。修正 修正了
decomposition.NMF
中的一個錯誤,當init = 'nndsvd'
、init = 'nndsvda'
和init = 'nndsvdar'
在n_components < n_features
時允許使用,而不是n_components <= min(n_samples, n_features)
。 #11650 由 Hossein Pourbozorg 和 Zijie (ZJ) Poh 貢獻。API 變更
decomposition.non_negative_factorization
中init
參數的預設值將在 0.23 版本從random
變更為None
,使其與decomposition.NMF
一致。當使用預設值時,會發出 FutureWarning。 #12988 由 Zijie (ZJ) Poh 貢獻。
sklearn.discriminant_analysis
#
增強
discriminant_analysis.LinearDiscriminantAnalysis
現在會保留float32
和float64
的資料類型。 #8769 和 #11000 由 Thibault Sejourne 貢獻修正 當給定
discriminant_analysis.LinearDiscriminantAnalysis
作為參數n_components > min(n_features, n_classes - 1)
時,現在會發出ChangedBehaviourWarning
,如果符合條件,n_components
會變更為min(n_features, n_classes - 1)
。先前,此變更會默默地進行。 #11526 由 William de Vazelhes 貢獻。修正 修正了
discriminant_analysis.LinearDiscriminantAnalysis
中的一個錯誤,在多類別情況下,預測的機率會被錯誤地計算。 #6848,由 Agamemnon Krasoulis 和Guillaume Lemaitre <glemaitre>
貢獻。修正 修正了
discriminant_analysis.LinearDiscriminantAnalysis
中的一個錯誤,使用eigen
求解器時,預測的機率會被錯誤地計算。 #11727,由 Agamemnon Krasoulis 貢獻。
sklearn.dummy
#
修正 修正了
dummy.DummyClassifier
中的一個錯誤,在stratified
策略下,predict_proba
方法會回傳 int32 陣列而不是 float64。 #13266 由 Christos Aridas 貢獻。修正 修正了
dummy.DummyClassifier
中的一個錯誤,如果在fit
時給定一個形狀為shape=(n, 1)
的列向量y
,它會在預測時拋出維度不符的錯誤。 #13545 由 Nick Sorros 和 Adrin Jalali 貢獻。
sklearn.ensemble
#
主要功能 新增兩種梯度提升樹的實作:
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
。這些估計器的實作靈感來自 LightGBM,當樣本數大於數萬個時,速度可以比ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
快上幾個數量級。這些新估計器的 API 略有不同,且ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
的某些功能尚未支援。這些新的估計器是實驗性的,這意味著它們的結果或 API 可能會在沒有任何棄用週期的情況下變更。要使用它們,您需要明確匯入
enable_hist_gradient_boosting
>>> # explicitly require this experimental feature >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # now you can import normally from sklearn.ensemble >>> from sklearn.ensemble import HistGradientBoostingClassifier
注意
更新:自 1.0 版本起,這些估計器不再是實驗性的,您不需要使用
from sklearn.experimental import enable_hist_gradient_boosting
。#12807 由 Nicolas Hug 貢獻。
新功能 新增
ensemble.VotingRegressor
,它為迴歸問題提供了與ensemble.VotingClassifier
等效的功能。#12513 由 Ramil Nugmanov 和 Mohamed Ali Jamaoui 貢獻。效率提升 當使用
n_jobs > 1
執行時,ensemble.IsolationForest
優先使用執行緒而非進程,因為底層決策樹的擬合呼叫會釋放 GIL。此變更減少了記憶體使用量和通訊開銷。#12543 由 Isaac Storch 和 Olivier Grisel 貢獻。效率提升
ensemble.IsolationForest
通過避免將每個樹的預測結果保存在記憶體中,提高了記憶體使用效率。#13260 由 Nicolas Goix 貢獻。效率提升
ensemble.IsolationForest
現在在預測步驟中使用資料塊,從而限制了記憶體使用量。#13283 由 Nicolas Goix 貢獻。效率提升
sklearn.ensemble.GradientBoostingClassifier
和sklearn.ensemble.GradientBoostingRegressor
現在將輸入y
保留為float64
,以避免被樹狀結構在內部複製。#13524 由 Adrin Jalali 貢獻。增強功能 減少了在
ensemble.AdaBoostClassifier
和ensemble.AdaBoostRegressor
中對 X 的驗證。#13174 由 Christos Aridas 貢獻。增強功能
ensemble.IsolationForest
現在公開了warm_start
參數,允許迭代地將樹添加到隔離森林中。#13496 由 Peter Marko 貢獻。錯誤修復 所有基於隨機森林的模型(即
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
、ensemble.ExtraTreesRegressor
、ensemble.RandomTreesEmbedding
、ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
) 中的feature_importances_
的值現在加總為
1
在計算特徵重要性時,會忽略所有單一節點樹
如果所有樹都只有一個單一節點(即根節點),則特徵重要性將為全零的陣列。
#13636 和 #13620 由 Adrin Jalali 貢獻。
錯誤修復 修復了
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
中的一個錯誤,該錯誤導致它們不支援將 scikit-learn 估算器作為初始估算器。還增加了對不支援樣本權重的初始估算器的支援。#12436 由 Jérémie du Boisberranger 貢獻,以及 #12983 由 Nicolas Hug 貢獻。錯誤修復 修復了當輸入為 0、1 或 2 時,在
ensemble.IsolationForest
中計算的平均路徑長度的輸出。#13251 由 Albert Thomas 和 joshuakennethjones 貢獻。錯誤修復 修復了
ensemble.GradientBoostingClassifier
中的一個錯誤,該錯誤導致在多類別分類問題中會錯誤地計算梯度。#12715 由 Nicolas Hug 貢獻。錯誤修復 修復了
ensemble.GradientBoostingClassifier
中的一個錯誤,該錯誤導致用於提前停止的驗證集沒有使用分層抽樣。#13164 由 Nicolas Hug 貢獻。錯誤修復 修復了
ensemble.GradientBoostingClassifier
中的一個錯誤,該錯誤導致多類別分類器的預設初始預測會預測類別的先驗機率,而不是先驗機率的對數。#12983 由 Nicolas Hug 貢獻。錯誤修復 修復了
ensemble.RandomForestClassifier
中的一個錯誤,該錯誤導致如果任何目標是字串,則多類別多輸出森林模型的predict
方法會出錯。#12834 由 Elizabeth Sander 貢獻。錯誤修復 修復了
ensemble.gradient_boosting.LossFunction
和ensemble.gradient_boosting.LeastSquaresError
中的一個錯誤,該錯誤導致update_terminal_regions
中的learning_rate
的預設值與文件和呼叫函數不一致。但請注意,直接使用這些損失函數已被棄用。#6463 由 movelikeriver 貢獻。修正
ensemble.partial_dependence
(以及因此產生的新版本sklearn.inspection.partial_dependence
) 現在在計算 partial dependence 時會將樣本權重納入考量,前提是梯度提升模型訓練時使用了樣本權重。#13193 由 Samuel O. Ronsin 貢獻。API 變更
ensemble.partial_dependence
和ensemble.plot_partial_dependence
現在已棄用,請改用inspection.partial_dependence
和inspection.plot_partial_dependence<sklearn.inspection.plot_partial_dependence>
。#12599 由 Trevor Stephens 和 Nicolas Hug 貢獻。修正 當其中一個估計器設定為
None
且sample_weight
不為None
時,ensemble.VotingClassifier
和ensemble.VotingRegressor
在fit
期間會失敗。#13779 由 Guillaume Lemaitre 貢獻。API 變更
ensemble.VotingClassifier
和ensemble.VotingRegressor
除了None
之外,現在接受'drop'
來停用估計器,以與其他估計器(例如,pipeline.FeatureUnion
和compose.ColumnTransformer
)保持一致性。#13780 由 Guillaume Lemaitre 貢獻。
sklearn.externals
#
API 變更 已棄用
externals.six
,因為我們已停止支援 Python 2.7。#12916 由 Hanmin Qin 貢獻。
sklearn.feature_extraction
#
修正 如果
input='file'
或input='filename'
,並且將可呼叫物件作為analyzer
,則sklearn.feature_extraction.text.HashingVectorizer
、sklearn.feature_extraction.text.TfidfVectorizer
和sklearn.feature_extraction.text.CountVectorizer
現在會從檔案讀取資料,然後將其傳遞給指定的analyzer
,而不是將檔案名稱或檔案物件傳遞給 analyzer。#13641 由 Adrin Jalali 貢獻。
sklearn.impute
#
主要功能 新增
impute.IterativeImputer
,這是一種透過以循環方式將每個具有遺失值的特徵建模為其他特徵的函數來填補遺失值的策略。#8478 和 #12177 由 Sergey Feldman 和 Ben Lawson 貢獻。IterativeImputer 的 API 仍在實驗階段,可能會在沒有任何棄用週期的情況下變更。要使用它們,您需要明確匯入
enable_iterative_imputer
>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # now you can import normally from sklearn.impute >>> from sklearn.impute import IterativeImputer
功能
impute.SimpleImputer
和impute.IterativeImputer
有一個新的參數'add_indicator'
,它只是將impute.MissingIndicator
轉換堆疊到 imputer 的轉換輸出中。這允許預測估計器將遺失值納入考量。#12583, #13601 由 Danylo Baibak 貢獻。修正 在
impute.MissingIndicator
中,如果輸入是稀疏的,且missing_values
屬性設定為 0,則會透過引發例外狀況來避免隱式密集化。#13240 由 Bartosz Telenczuk 貢獻。修正 修復了
impute.MissingIndicator
中的兩個錯誤。首先,當X
是稀疏的時,所有非零的非遺失值都會在轉換後的資料中變成明確的 False。然後,當features='missing-only'
時,如果根本沒有遺失值,則會保留所有特徵。#13562 由 Jérémie du Boisberranger 貢獻。
sklearn.inspection
#
(新的子套件)
功能 Partial dependence plots (
inspection.plot_partial_dependence
) 現在支援任何回歸器或分類器(前提是它們具有predict_proba
方法)。#12599 由 Trevor Stephens 和 Nicolas Hug 貢獻。
sklearn.isotonic
#
功能 允許
isotonic.IsotonicRegression
中使用不同的資料類型 (例如 float32)。#8769 由 Vlad Niculae 貢獻。
sklearn.linear_model
#
增強
linear_model.Ridge
現在會保留float32
和float64
的資料類型。 #8769 和 #11000 由 Guillaume Lemaitre 和 Joan Massich 貢獻。新功能
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
現在支援使用 ‘saga’ 求解器的 Elastic-Net 懲罰。 #11646 由 Nicolas Hug 貢獻。新功能 新增了
linear_model.lars_path_gram
,這是linear_model.lars_path
的足夠統計模式,允許使用者在不提供X
和y
的情況下計算linear_model.lars_path
。 #11699 由 Kuai Yu 貢獻。效率提升
linear_model.make_dataset
現在會保留float32
和float64
的資料類型,減少隨機梯度、SAG 和 SAGA 求解器中的記憶體消耗。 #8769 和 #11000 由 Nelle Varoquaux、 Arthur Imbert、Guillaume Lemaitre 和 Joan Massich 貢獻。增強 當傳遞
penalty='none'
時,linear_model.LogisticRegression
現在支援不正規化的目標函數。這等同於使用 l2 正規化設定C=np.inf
。liblinear 求解器不支援此功能。 #12860 由 Nicolas Hug 貢獻。增強 當輸入為稀疏時,
linear_model.Ridge
中的sparse_cg
求解器現在支援擬合截距 (即fit_intercept=True
)。#13336 由 Bartosz Telenczuk 貢獻。增強 用於
Lasso
、ElasticNet
等的坐標下降求解器現在在完成且未達到期望的容忍度時,會發出ConvergenceWarning
。 #11754 和 #13397 由 Brent Fagan 和 Adrin Jalali 貢獻。修正 修正了
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
使用 ‘saga’ 求解器時,在某些情況下權重無法正確更新的錯誤。 #11646 由 Tom Dupre la Tour 貢獻。修正 修正了
linear_model.BayesianRidge
中後驗平均值、後驗共變異數和回傳的正規化參數。後驗平均值和後驗共變異數不是使用正規化參數的最後一次更新計算的,而回傳的正規化參數也不是最終的參數。還修正了當compute_score=True
時,用於計算分數的對數邊際似然公式。 #12174 由 Albert Thomas 貢獻。修正 修正了
linear_model.LassoLarsIC
中的錯誤,其中使用者在實例建立時輸入的copy_X=False
會在fit
中被預設參數值copy_X=True
覆蓋。 #12972 由 Lucio Fernandez-Arjona 貢獻。修正 修正了
linear_model.LinearRegression
的錯誤,該錯誤導致在稀疏和密集情況下,當fit_intercept=True
時,無法返回相同的係數和截距。 #13279 由 Alexandre Gramfort 貢獻。修正 修正了當
X
的 dtype 為 bool 時,linear_model.HuberRegressor
損壞的錯誤。 #13328 由 Alexandre Gramfort 貢獻。修正 修正了在
joblib.Parallel
設定中,當n_jobs > 1
且backend="threading"
時,呼叫saga
和sag
求解器會比在循序情況下效能更差的效能問題。 #13389 由 Pierre Glaser 貢獻。修正 修正了
linear_model.stochastic_gradient.BaseSGDClassifier
在多類別設定中於多個執行緒上訓練時,不具確定性的錯誤。 #13422 由 Clément Doumouro 貢獻。修正 修正了
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
的錯誤,該錯誤導致當引數為return_intercept=True
且solver=auto
(預設) 或任何其他與sag
不同的求解器時,發生未處理的例外狀況。 #13363 由 Bartosz Telenczuk 貢獻。修正 如果
return_intercept=True
且求解器不同於sag
,linear_model.ridge_regression
現在會引發例外狀況。先前只發出警告。 #13363 由 Bartosz Telenczuk 貢獻。修正 當
solver=auto
且提供sample_weight
時,linear_model.ridge_regression
現在會為稀疏輸入選擇sparse_cg
求解器(先前選擇cholesky
求解器)。 #13363 由 Bartosz Telenczuk 貢獻。API 變更 在 0.21 版本中,使用
linear_model.lars_path
並在傳遞Gram
時使用X=None
已被棄用,並將在 0.23 版本中移除。請改用linear_model.lars_path_gram
。 #11699 由 Kuai Yu 貢獻。API 變更
linear_model.logistic_regression_path
在 0.21 版本中已棄用,並將在 0.23 版本中移除。 #12821,由 Nicolas Hug 貢獻。修復 當
fit_intercept=True
且設計矩陣為稀疏矩陣時,使用留一交叉驗證的linear_model.RidgeCV
現在可以正確擬合截距。 #13350,由 Jérôme Dockès 貢獻。
sklearn.manifold
#
效率提升 使
manifold.trustworthiness
使用反向索引,而不是使用np.where
查詢來查找輸入空間中鄰居的排名。這提高了效率,尤其是在使用大量鄰居和/或小型數據集進行計算時。 #9907,由 William de Vazelhes 貢獻。
sklearn.metrics
#
新功能 為單輸出迴歸新增了
metrics.max_error
指標和相應的'max_error'
評分器。 #12232,由 Krishna Sangeeth 貢獻。新功能 新增了
metrics.multilabel_confusion_matrix
,它計算每個類別的真正例、偽正例、偽反例和真反例的混淆矩陣。這有助於計算集合式指標,例如召回率、特異性、錯誤警報率和漏報率。 #11179,由 Shangwu Yao 和 Joel Nothman 貢獻。新功能 新增了
metrics.jaccard_score
,用於計算 Jaccard 係數作為二元、多標籤和多類任務的評估指標,其介面類似於metrics.f1_score
。 #13151,由 Gaurav Dhingra 和 Joel Nothman 貢獻。新功能 新增了
metrics.pairwise.haversine_distances
,可以通過metrics.pairwise_distances
和估計器以metric='pairwise'
存取。(之前僅可使用 Haversine 距離計算最近鄰居。) #12568,由 Wei Xue、Emmanuel Arias 和 Joel Nothman 貢獻。效率提升 使用基於線程的後端,而不是基於進程的後端,使
n_jobs
> 1 時的metrics.pairwise_distances
更快。 #8216,由 Pierre Glaser 和 Romuald Menuet 貢獻。效率提升 使用稀疏輸入的成對曼哈頓距離現在使用 scipy 附帶的 BLAS,而不是捆綁的 BLAS。 #12732,由 Jérémie du Boisberranger 貢獻。
增強功能 在
metrics.classification_report
上使用標籤accuracy
而不是micro-average
,以避免混淆。micro-average
僅在多標籤或多類別且具有類別子集時顯示,因為在其他情況下它與準確性相同。 #12334,由 Emmanuel Arias、Joel Nothman 和 Andreas Müller 貢獻。增強功能 為
metrics.homogeneity_completeness_v_measure
和metrics.v_measure_score
新增了beta
參數,以配置同質性和完整性之間的權衡。 #13607,由 Stephane Couvreur 和 Ivan Sanchez 貢獻。修復 當只有單一樣本時,指標
metrics.r2_score
會退化,現在它會返回 NaN 並引發exceptions.UndefinedMetricWarning
。 #12855,由 Pawel Sendyk 貢獻。修復 修復了當
y_true
中只有一個類別時,metrics.brier_score_loss
有時會返回不正確結果的錯誤。 #13628,由 Hanmin Qin 貢獻。修復 修復了
metrics.label_ranking_average_precision_score
中的一個錯誤,其中未考慮具有退化標籤的樣本的 sample_weight。 #13447,由 Dan Ellis 貢獻。API 變更
metrics.hamming_loss
中的參數labels
在 0.21 版本中已棄用,並將在 0.23 版本中移除。 #10580,由 Reshama Shaikh 和 Sandra Mitrovic 貢獻。修復 函式
metrics.pairwise.euclidean_distances
,以及因此使用metric='euclidean'
的多個估計器,在使用float32
特徵時存在數值精度問題。精度已提高,但會略微降低效能。 #13554,由 @Celelibi 和 Jérémie du Boisberranger 貢獻。API 變更 由於
metrics.jaccard_score
更一致,因此metrics.jaccard_similarity_score
已被棄用。二元和多類目標的前一個行為已損壞。 #13151,由 Joel Nothman 貢獻。
sklearn.mixture
#
修復 修復了
mixture.BaseMixture
中的一個錯誤,因此也修復了基於它的估計器,例如mixture.GaussianMixture
和mixture.BayesianGaussianMixture
,其中fit_predict
和fit.predict
並不等價。#13142,由 Jérémie du Boisberranger 貢獻。
sklearn.model_selection
#
新功能 類別
GridSearchCV
和RandomizedSearchCV
現在允許使用 refit=callable,以便在識別最佳估計器時增加彈性。請參閱平衡模型複雜度和交叉驗證分數。#11354,由 Wenhao Zhang、Joel Nothman 和 Adrin Jalali 貢獻。增強 類別
GridSearchCV
、RandomizedSearchCV
以及方法cross_val_score
、cross_val_predict
、cross_validate
,現在當return_train_scores
為 True 且verbose
> 2 時,會印出訓練分數。對於learning_curve
和validation_curve
,僅後者為必要條件。#12613 和 #12669,由 Marc Torrellas 貢獻。增強 一些 CV 分割器 類別和
model_selection.train_test_split
現在當結果訓練集為空時,會引發ValueError
。#12861,由 Nicolas Hug 貢獻。修復 修復了一個錯誤,其中
model_selection.StratifiedKFold
使用相同的random_state
來混洗每個類別的樣本,導致shuffle=True
失效。#13124,由 Hanmin Qin 貢獻。修復 為
model_selection.cross_val_predict
新增了處理具有predict_proba
型方法的多標籤(和多輸出多類別)目標的能力。#8773,由 Stephen Hoover 貢獻。修復 修復了
cross_val_predict
中的一個問題,其中當交叉驗證摺疊中排除其中一個類別時,method="predict_proba"
始終返回0.0
。#13366,由 Guillaume Fournier 貢獻。
sklearn.multiclass
#
修復 修復了
multiclass.OneVsOneClassifier.decision_function
中的一個問題,其中給定樣本的 decision_function 值,由於 decision_function 中使用的縮放,在單獨評估樣本時,與在包含相同樣本的批次中評估時不同。#10440,由 Jonathan Ohayon 貢獻。
sklearn.multioutput
#
修復 修復了
multioutput.MultiOutputClassifier
中的一個錯誤,其中predict_proba
方法不正確地檢查估計器物件中是否有predict_proba
屬性。#12222,由 Rebekah Kim 貢獻。
sklearn.neighbors
#
主要新功能 新增了
neighbors.NeighborhoodComponentsAnalysis
用於度量學習,該演算法實現了鄰域成分分析演算法。#10058,由 William de Vazelhes 和 John Chiotellis 貢獻。API 變更
neighbors.NearestNeighbors
中的方法:kneighbors
、radius_neighbors
、kneighbors_graph
、radius_neighbors_graph
,現在當在fit
之前呼叫時,會引發NotFittedError
,而不是AttributeError
。#12279,由 Krishna Sangeeth 貢獻。
sklearn.neural_network
#
修復 修復了
neural_network.MLPClassifier
和neural_network.MLPRegressor
中的一個錯誤,其中shuffle=False
選項被忽略。#12582,由 Sam Waterbury 貢獻。修復 修復了
neural_network.MLPClassifier
中的一個錯誤,其中用於提前停止的驗證集沒有使用分層抽樣。然而,在多標籤情況下,分割仍然不是分層的。#13164,由 Nicolas Hug 貢獻。
sklearn.pipeline
#
新功能
pipeline.Pipeline
現在可以使用索引表示法(例如my_pipeline[0:-1]
)來提取步驟的子序列作為另一個 Pipeline 實例。Pipeline 也可以直接索引以提取特定步驟(例如my_pipeline['svc']
),而不是存取named_steps
。#2568,由 Joel Nothman 貢獻。新功能 在
pipeline.Pipeline
、compose.ColumnTransformer
和pipeline.FeatureUnion
中,以及對應的make_
輔助函式中,新增了可選參數verbose
,用於顯示每個步驟的進度和時間。#11364 由 Baze Petrushev, Karan Desai, Joel Nothman 和 Thomas Fan 貢獻。增強
pipeline.Pipeline
現在支援使用'passthrough'
作為轉換器,效果與None
相同。#11144 由 Thomas Fan 貢獻。增強
pipeline.Pipeline
實作了__len__
,因此len(pipeline)
會回傳 pipeline 中的步驟數量。#13439 由 Lakshya KD 貢獻。
sklearn.preprocessing
#
新功能
preprocessing.OneHotEncoder
現在支援使用新的 drop 參數來捨棄每個類別的一個特徵。#12908 由 Drew Johnston 貢獻。效率提升
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
現在能更有效率地處理 pandas DataFrames。#13253 由 @maikia 貢獻。效率提升 讓
preprocessing.MultiLabelBinarizer
快取類別映射,而不是每次都即時計算。#12116 由 Ekaterina Krivich 和 Joel Nothman 貢獻。效率提升
preprocessing.PolynomialFeatures
現在支援以壓縮稀疏列 (CSR) 矩陣作為 2 次和 3 次的輸入。這通常比密集情況快得多,因為它會隨著矩陣密度和展開次數而縮放(約為 density^degree 的量級),而且比壓縮稀疏行 (CSC) 情況快得多。#12197 由 Andrew Nystrom 貢獻。效率提升 在密集情況下,
preprocessing.PolynomialFeatures
的速度有所提升。同時新增了一個新的參數order
,用於控制輸出順序以進一步提升效能。#12251 由 Tom Dupre la Tour 貢獻。修復 修復了在使用
preprocessing.StandardScaler
時,使用 float16 dtype 可能發生的計算溢位問題。#13007 由 Raffaello Baluyot 貢獻。修復 修復了
preprocessing.QuantileTransformer
和preprocessing.quantile_transform
中的一個錯誤,強制 n_quantiles 的值最大等於 n_samples。大於 n_samples 的 n_quantiles 值,不是無用,就是會導致累積分布函數估計器出現錯誤的近似。#13333 由 Albert Thomas 貢獻。API 變更 為了讓
preprocessing.quantile_transform
中的copy
預設值與sklearn.preprocessing
中其他函式的預設copy
值更加一致,並防止修改X
時產生意外的副作用,copy
的預設值將在 0.23 版本從 False 變更為 True。#13459 由 Hunter McGushion 貢獻。
sklearn.svm
#
修復 修復了當
decision_function_shape='ovr'
時,svm.SVC.decision_function
中的一個問題。由於 decision_function 中使用的縮放,單獨對樣本評估,或對包含相同樣本的批次評估時,特定樣本的 decision_function 值不同。#10440 由 Jonathan Ohayon 貢獻。
sklearn.tree
#
新功能 現在可以使用 matplotlib,透過
tree.plot_tree
繪製決策樹,而無需依賴dot
函式庫,從而移除了難以安裝的依賴。#8508 由 Andreas Müller 貢獻。新功能 現在可以使用
tree.export_text
,以人類可讀的文字格式匯出決策樹。#6261 由Giuseppe Vettigli <JustGlowing>
貢獻。新功能
get_n_leaves()
和get_depth()
已新增至tree.BaseDecisionTree
,因此所有基於它的估計器,包括tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
也一併新增。#12300 由 Adrin Jalali 貢獻。修正 樹狀結構和森林先前無法使用字串標籤
predict
多輸出分類目標,儘管在fit
中接受它們。 #11458 由 Mitar Milutinovic 貢獻。修正 修正了
tree.BaseDecisionTree
以及所有基於它的估計器(包括tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
)的一個問題,當使用者同時指定max_leaf_nodes
和max_depth
時,它們在擴展樹時會超過給定的max_depth
1。請注意,這也會影響所有使用決策樹的集成方法。#12344 由 Adrin Jalali 貢獻。
sklearn.utils
#
新功能
utils.resample
現在接受一個stratify
參數,用於根據類別分佈進行取樣。 #13549 由 Nicolas Hug 貢獻。API 變更 棄用
utils.check_array
和utils.check_X_y
中的warn_on_dtype
參數。 如果傳遞的metric
是一個成對的布林度量,則在check_pairwise_arrays
中新增了對 dtype 轉換的明確警告。 #13382 由 Prathmesh Savale 貢獻。
多個模組#
主要功能 所有估計器的
__repr__()
方法(在呼叫print(estimator)
時使用)已被完全重寫,基於 Python 的美化列印標準函式庫。 預設情況下會列印所有參數,但是可以使用sklearn.set_config
中的print_changed_only
選項來變更此行為。 #11705 由 Nicolas Hug 貢獻。主要功能 新增估計器標籤:這些是對估計器的註解,允許以程式方式檢查它們的功能,例如稀疏矩陣支援、支援的輸出類型和支援的方法。 當呼叫
check_estimator
時,估計器標籤還會決定在估計器上執行的測試。 請在 使用者指南 中閱讀更多資訊。 #8022 由 Andreas Müller 貢獻。效率 在多個估計器中將陣列轉換為不同的 dtype 時,避免了記憶體複製。 #11973 由 Roman Yurchak 貢獻。
修正 修正了
our_rand_r
輔助函式實作中的一個錯誤,該錯誤在各個平台上的行為不一致。 #13422 由 Madhura Parikh 和 Clément Doumouro 貢獻。
其他#
增強 Joblib 不再捆綁在 scikit-learn 中,而是成為一個依賴項。 最低支援版本為 joblib 0.11,但強烈建議使用 >= 0.13 版本。 #13531 由 Roman Yurchak 貢獻。
估計器檢查的變更#
這些變更主要影響函式庫開發人員。
將
check_fit_idempotent
新增至check_estimator
,它會檢查在對相同的資料呼叫兩次fit
時,predict
、predict_proba
、transform
和decision_function
的輸出是否沒有變更。 #12328 由 Nicolas Hug 貢獻。現在可以使用 估計器標籤 來停用或配置許多檢查。 #8022 由 Andreas Müller 貢獻。
程式碼和文件貢獻者
感謝自 0.20 版本以來為維護和改進專案做出貢獻的每個人,包括
adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier`, Finn O’Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^