版本 0.20#
警告
版本 0.20 是 scikit-learn 最後一個支援 Python 2.7 和 Python 3.4 的版本。Scikit-learn 0.21 將需要 Python 3.5 或更高版本。
變更日誌圖例
主要功能 之前無法完成的重大功能。
功能 之前無法完成的功能。
效率 現有的功能現在可能不需要那麼多的計算或記憶體。
增強 各種小的改進。
修復 之前無法如文件所述或符合合理預期的功能,現在應該可以正常運作。
API 變更 您將需要更改程式碼才能在未來產生相同的效果;或者某個功能將在未來被移除。
版本 0.20.4#
2019 年 7 月 30 日
這是一個錯誤修復版本,其中一些錯誤修復已應用於版本 0.20.3。
變更日誌#
捆綁的 joblib 版本從 0.13.0 升級到 0.13.2。
sklearn.cluster
#
修復 修復了
cluster.KMeans
中的一個錯誤,其中 KMeans++ 初始化偶爾可能導致 IndexError。 #11756 由 Joel Nothman 修正。
sklearn.compose
#
修復 修復了
compose.ColumnTransformer
中的一個問題,其中在 :func:fit
和 :func:transform
之間使用列順序不同的 DataFrames 可能會導致靜默地將不正確的列傳遞給remainder
轉換器。#14237 由Andreas Schuderer <schuderer>
修正。
sklearn.decomposition
#
修復 修復了
cross_decomposition.CCA
中的一個錯誤,提高了當Y
接近零時的數值穩定性。#13903 由 Thomas Fan 修正。
sklearn.model_selection
#
修復 修復了一個錯誤,其中
model_selection.StratifiedKFold
使用相同的random_state
隨機化每個類別的樣本,使shuffle=True
無效。#13124 由 Hanmin Qin 修正。
sklearn.neighbors
#
修復 修復了
neighbors.KernelDensity
中的一個錯誤,如果使用了sample_weight
,則無法從 pickle 還原。#13772 由 Aditya Vyas 修正。
版本 0.20.3#
2019 年 3 月 1 日
這是一個錯誤修復版本,其中包含一些小的文件改進以及對 0.20.0 中發佈的功能的增強。
變更日誌#
sklearn.cluster
#
修復 修復了
cluster.KMeans
中的一個錯誤,其中當n_jobs > 1
或n_jobs = -1
時,計算是單執行緒的。#12949 由 Prabakaran Kumaresshan 修正。
sklearn.compose
#
修復 修復了
compose.ColumnTransformer
中的一個錯誤,以處理轉換器的列列表中的負索引。#12946 由 Pierre Tallotte 修正。
sklearn.covariance
#
修復 修復了
covariance.graphical_lasso
中的一個回歸問題,以便正確處理n_features=2
的情況。#13276 由 Aurélien Bellet 修正。
sklearn.decomposition
#
修復 修復了
decomposition.sparse_encode
中的一個錯誤,其中當n_jobs > 1
或n_jobs = -1
時,計算是單執行緒的。#13005 由 Prabakaran Kumaresshan 修正。
sklearn.datasets
#
效率
sklearn.datasets.fetch_openml
現在透過串流載入資料,避免了高記憶體使用量。#13312 由 Joris Van den Bossche 修正。
sklearn.feature_extraction
#
修復 修復了
feature_extraction.text.CountVectorizer
中的一個錯誤,該錯誤會導致稀疏特徵矩陣在非常大的詞彙表下具有衝突的indptr
和indices
精度。#11295 由 Gabriel Vacaliuc 修正。
sklearn.impute
#
修正 在
sklearn.impute.MissingIndicator
中新增對非數值資料的支援,先前此功能不支援,而sklearn.impute.SimpleImputer
針對某些插補策略則支援此功能。 #13046 由 Guillaume Lemaitre 貢獻。
sklearn.linear_model
#
修正 修正了
linear_model.MultiTaskElasticNet
和linear_model.MultiTaskLasso
在warm_start = True
時會出錯的錯誤。 #12360 由 Aakanksha Joshi 貢獻。
sklearn.preprocessing
#
修正 修正了
preprocessing.KBinsDiscretizer
在strategy='kmeans'
時,由於 bin 的邊界未排序,導致轉換時發生錯誤的錯誤。 #13134 由 Sandro Casagrande 貢獻。修正 修正了
preprocessing.OneHotEncoder
中,當categorical_features
被棄用時,與handle_unknown='ignore'
結合使用時處理不正確的錯誤。 #12881 由 Joris Van den Bossche 貢獻。修正 在
preprocessing.KBinsDiscretizer
中,會移除寬度太小(即 <= 1e-8)的 bin,並發出警告。 #13165 由 Hanmin Qin 貢獻。
sklearn.svm
#
修正 修正了
svm.SVC
、svm.NuSVC
、svm.SVR
、svm.NuSVR
和svm.OneClassSVM
中,參數gamma
的scale
選項被錯誤定義為1 / (n_features * X.std())
的錯誤。現在已修正為1 / (n_features * X.var())
。 #13221 由 Hanmin Qin 貢獻。
程式碼和文件貢獻者#
感謝以下貢獻者:
Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Andreas Mueller, Aurélien Bellet, bertrandhaut, Bharat Raghunathan, Dowon, Emmanuel Arias, Fibinse Xavier, Finn O’Shea, Gabriel Vacaliuc, Gael Varoquaux, Guillaume Lemaitre, Hanmin Qin, joaak, Joel Nothman, Joris Van den Bossche, Jérémie Méhault, kms15, Kossori Aruku, Lakshya KD, maikia, Manuel López-Ibáñez, Marco Gorelli, MarcoGorelli, mferrari3, Mickaël Schoentgen, Nicolas Hug, pavlos kallis, Pierre Glaser, pierretallotte, Prabakaran Kumaresshan, Reshama Shaikh, Rohit Kapoor, Roman Yurchak, SandroCasagrande, Tashay Green, Thomas Fan, Vishaal Kapoor, Zhuyi Xue, Zijie (ZJ) Poh
版本 0.20.2#
2018 年 12 月 20 日
這是一個錯誤修復版本,其中包含一些小的文件改進以及對 0.20.0 中發佈的功能的增強。
變更的模型#
以下估算器和函式,在以相同的資料和參數擬合時,可能會產生與先前版本不同的模型。這通常是因為建模邏輯(錯誤修正或增強)或隨機抽樣程序的變更所導致。
sklearn.neighbors
當metric=='jaccard'
時(錯誤修正)在某些情況下使用
'seuclidean'
或'mahalanobis'
度量(錯誤修正)
變更日誌#
sklearn.compose
#
修正 修正了
compose.make_column_transformer
在欄位為 pandas Index 或 pandas Series 時會引發非預期錯誤的問題。 #12704 由 Hanmin Qin 貢獻。
sklearn.metrics
#
修正 修正了
metrics.pairwise_distances
和metrics.pairwise_distances_chunked
中,"seuclidean"
度量的參數V
和"mahalanobis"
度量的參數VI
在資料被分割成區塊後才計算,而不是在整個資料上預先計算的錯誤。 #12701 由 Jeremie du Boisberranger 貢獻。
sklearn.neighbors
#
修正 修正了當比較兩個全零向量時,
sklearn.neighbors.DistanceMetric
的 jaccard 距離函式會回傳 0 的問題。 #12685 由 Thomas Fan 貢獻。
sklearn.utils
#
修正 在 0.20.0 版本中,對具有類別資料的
pandas.Series
呼叫utils.check_array
會引發錯誤,現在已恢復為預期的輸出結果。 #12699 由 Joris Van den Bossche 貢獻。
程式碼和文件貢獻者#
感謝以下貢獻者:
adanhawth, Adrin Jalali, Albert Thomas, Andreas Mueller, Dan Stine, Feda Curic, Hanmin Qin, Jan S, jeremiedbb, Joel Nothman, Joris Van den Bossche, josephsalmon, Katrin Leinweber, Loic Esteve, Muhammad Hassaan Rafique, Nicolas Hug, Olivier Grisel, Paul Paczuski, Reshama Shaikh, Sam Waterbury, Shivam Kotwalia, Thomas Fan
版本 0.20.1#
2018 年 11 月 21 日
這是一個錯誤修復版本,其中包含一些小的文件改進,以及對 0.20.0 版本中發布的功能的增強。請注意,此版本中我們也包含了一些 API 變更,因此您在從 0.20.0 更新到 0.20.1 後可能會收到一些額外的警告。
變更的模型#
以下估算器和函式,在以相同的資料和參數擬合時,可能會產生與先前版本不同的模型。這通常是因為建模邏輯(錯誤修正或增強)或隨機抽樣程序的變更所導致。
decomposition.IncrementalPCA
(錯誤修復)
變更日誌#
sklearn.cluster
#
效率 讓
cluster.MeanShift
不再嘗試進行巢狀平行處理,因為當n_jobs > 1
時,開銷會顯著損害效能。#12159 by Olivier Grisel。修復 修復了
cluster.DBSCAN
中使用預先計算的稀疏鄰居圖時的一個錯誤,即使對角線已存在值,它也會顯式地在對角線上添加零。#12105 by Tom Dupre la Tour。
sklearn.compose
#
修復 修復了當堆疊無法轉換為數值的型別的列時,
compose.ColumnTransformer
中的一個問題。#11912 by Adrin Jalali。API 變更
compose.ColumnTransformer
現在即使所有轉換結果都是稀疏的,也會套用sparse_threshold
。#12304 by Andreas Müller。API 變更
compose.make_column_transformer
現在預期(transformer, columns)
而不是(columns, transformer)
,以與compose.ColumnTransformer
保持一致。#12339 by Adrin Jalali。
sklearn.datasets
#
修復
datasets.fetch_openml
正確使用本地快取。#12246 by Jan N. van Rijn。修復
datasets.fetch_openml
正確處理忽略屬性和列 ID 屬性。#12330 by Jan N. van Rijn。修復 修復了當
n_informative
參數的值大於 64 時,datasets.make_classification
中的整數溢位問題。#10811 by Roman Feldbauer。修復 修復了 olivetti 人臉資料集中
DESCR
屬性指向datasets.fetch_olivetti_faces
中的錯誤位置的問題。#12441 by Jérémie du Boisberranger修復
datasets.fetch_openml
在從本地快取讀取失敗時會重試下載。#12517 by Thomas Fan。
sklearn.decomposition
#
修復 修復了
decomposition.IncrementalPCA
中的一個回歸問題,其中如果擬合 IncrementalPCA 的最後一批樣本數小於 n_components,0.20.0 版本會引發錯誤。#12234 by Ming Li。
sklearn.ensemble
#
修復 修復了一個主要影響
ensemble.RandomForestClassifier
的錯誤,其中class_weight='balanced_subsample'
在類別超過 32 個時會失敗。#12165 by Joel Nothman。修復 修復了一個影響
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
的錯誤,其中max_features
有時會四捨五入為零。#12388 by Connor Tann。
sklearn.feature_extraction
#
修復 修復了 v0.20.0 版本中的一個回歸問題,其中
feature_extraction.text.CountVectorizer
和其他文本向量化器在帶有自訂預處理器或標記器的停用詞驗證期間可能會出錯。#12393 by Roman Yurchak。
sklearn.linear_model
#
修復
linear_model.SGDClassifier
和帶有early_stopping=True
的變體在多類別情況下不會使用一致的驗證分割,這會在將這些估計器作為平行參數搜尋或交叉驗證的一部分使用時導致崩潰。#12122 by Olivier Grisel。修正 修正了影響
linear_model.SGDClassifier
在多類別情況下的錯誤。每一個一對多的步驟都會在joblib.Parallel
呼叫中執行,並修改一個共同參數,如果在使用程序而非線程的後端中呼叫,會導致分段錯誤。現在我們在joblib.Parallel
實例建立時使用require=sharedmem
。由 Pierre Glaser 和 Olivier Grisel 修正。 #12518
sklearn.metrics
#
修正 修正了
metrics.pairwise.pairwise_distances_argmin_min
中的錯誤,當 metric 參數設定為 “euclidean” 時,會回傳距離的平方根。由 Jérémie du Boisberranger 修正。 #12481修正 修正了
metrics.pairwise.pairwise_distances_chunked
中的錯誤,該錯誤沒有確保歐式距離的對角線為零。由 Andreas Müller 修正。 #12612API 變更
metrics.calinski_harabaz_score
已重新命名為metrics.calinski_harabasz_score
,並將在 0.23 版本中移除。由 Lisa Thomas、Mark Hannel 和 Melissa Ferrari 修正。 #12211
sklearn.mixture
#
修正 確保
mixture.GaussianMixture
和mixture.BayesianGaussianMixture
的fit_predict
方法始終產生與fit
後接predict
一致的分配,即使收斂標準過於寬鬆或未滿足。由 Olivier Grisel 修正。 #12451
sklearn.neighbors
#
修正 強制
neighbors.KDTree
和neighbors.BallTree
在 Python 2.7 中的並行後端為threading
,以避免因其方法的序列化而導致的 pickle 錯誤。由 Thomas Moreau 修正。 #12171
sklearn.preprocessing
#
修正 修正了在傳遞手動指定類別時
preprocessing.OrdinalEncoder
中的錯誤。由 Joris Van den Bossche 修正。 #12365修正 修正了
preprocessing.KBinsDiscretizer
中的錯誤,其中transform
方法會修改_encoder
屬性。現在transform
方法是線程安全的。由 Hanmin Qin 修正。 #12514修正 修正了
preprocessing.PowerTransformer
中的錯誤,其中對於[0, 2]
範圍外的 lambda 參數,Yeo-Johnson 轉換不正確。由 Nicolas Hug 修正。 #12522修正 修正了
preprocessing.OneHotEncoder
中的錯誤,當設定為忽略不同長度的未知 numpy 字串時,轉換會失敗。由 Gabriel Marzinotto 修正。 #12471API 變更 在
preprocessing.power_transform
中,method
參數的預設值將從box-cox
變更為yeo-johnson
,以符合preprocessing.PowerTransformer
在 0.23 版本中的行為。當使用預設值時,會發出 FutureWarning。由 Eric Chang 修正。 #12317
sklearn.utils
#
修正 使用 float64 作為平均累加器,以避免在使用 float32 資料集時,
preprocessing.StandardScaler
和decomposition.IncrementalPCA
中出現浮點精度的問題。由 bauks 修正。 #12338修正 在 0.20.0 版本中,對
pandas.Series
呼叫utils.check_array
會引發錯誤,現在會再次回傳預期的輸出。由 Andreas Müller 修正。 #12625
其他#
修正 當通過設定環境變數
SKLEARN_SITE_JOBLIB
使用 site joblib 時,增加了對 joblib 0.11 以及 0.12+ 的相容性。由 Joel Nothman 和 Roman Yurchak 修正。 #12350修正 確保在 numpy 1.16 及更高版本中使用
np.vstack
時,不會引發FutureWarning
(在 scikit-learn 程式碼庫的多個位置使用列表解析式代替生成器表達式)。#12467 由 Olivier Grisel 貢獻。API 變更 移除所有提及
sklearn.externals.joblib
的部分,並棄用在sklearn.utils
中公開的 joblib 方法,除了utils.parallel_backend
和utils.register_parallel_backend
,它們允許使用者在 scikit-learn 中配置平行計算。其他功能是 joblib 套件的一部分,應直接使用,只需安裝即可。此變更的目標是為未來版本的 scikit-learn 中取消捆綁 joblib 做準備。#12345 由 Thomas Moreau 貢獻。
程式碼和文件貢獻者#
感謝以下貢獻者:
^__^, Adrin Jalali, Andrea Navarrete, Andreas Mueller, bauks, BenjaStudio, Cheuk Ting Ho, Connossor, Corey Levinson, Dan Stine, daten-kieker, Denis Kataev, Dillon Gardner, Dmitry Vukolov, Dougal J. Sutherland, Edward J Brown, Eric Chang, Federico Caselli, Gabriel Marzinotto, Gael Varoquaux, GauravAhlawat, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, JackLangerman, Jacopo Notarstefano, janvanrijn, jdethurens, jeremiedbb, Joel Nothman, Joris Van den Bossche, Koen, Kushal Chauhan, Lee Yi Jie Joel, Lily Xiong, mail-liam, Mark Hannel, melsyt, Ming Li, Nicholas Smith, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Olivier Grisel, Peter Hausamann, Pierre Glaser, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Ramil Nugmanov, Rebekah Kim, Reshama Shaikh, Rohan Singh, Roman Feldbauer, Roman Yurchak, Roopam Sharma, Sam Waterbury, Scott Lowe, Sebastian Raschka, Stephen Tierney, SylvainLan, TakingItCasual, Thomas Fan, Thomas Moreau, Tom Dupré la Tour, Tulio Casagrande, Utkarsh Upadhyay, Xing Han Lu, Yaroslav Halchenko, Zach Miller
版本 0.20.0#
2018 年 9 月 25 日
此版本為 Scikit-learn 函式庫帶來了大量的錯誤修正、功能和增強,並改進了文件和範例。感謝我們的貢獻者!
此版本獻給 Raghav Rajagopalan 的紀念。
重點#
我們已嘗試改善對常見資料科學使用案例的支援,包括遺失值、類別變數、異質資料以及具有不尋常分佈的特徵/目標。特徵中以 NaN 表示的遺失值現在可以在逐欄預處理(例如縮放器)中被接受。每個特徵在忽略 NaN 的情況下進行擬合,並且可以轉換包含 NaN 的資料。新的 sklearn.impute
模組提供了在遺失資料的情況下學習的估算器。
ColumnTransformer
處理 pandas.DataFrame 的不同特徵或欄需要不同預處理的情況。字串或 pandas 類別欄現在可以使用 OneHotEncoder
或 OrdinalEncoder
進行編碼。
TransformedTargetRegressor
在需要轉換迴歸目標以進行建模時提供協助。PowerTransformer
和 KBinsDiscretizer
加入 QuantileTransformer
作為非線性轉換。
除此之外,我們還增加了對幾個估算器的 sample_weight 支援(包括 KMeans
、BayesianRidge
和 KernelDensity
),並改進了其他估算器中的停止條件(包括 MLPRegressor
、GradientBoostingRegressor
和 SGDRegressor
)。
此版本也是第一個附帶由 Joel Nothman 開發的 常用術語和 API 元素詞彙表 的版本。該詞彙表是一個參考資源,可協助使用者和貢獻者熟悉 Scikit-learn 中使用的術語和慣例。
如果您的貢獻沒有進入重點,請見諒。這裡有很多內容…
變更的模型#
以下估算器和函式,在以相同的資料和參數擬合時,可能會產生與先前版本不同的模型。這通常是因為建模邏輯(錯誤修正或增強)或隨機抽樣程序的變更所導致。
cluster.MeanShift
(錯誤修正)decomposition.IncrementalPCA
在 Python 2 中(錯誤修正)decomposition.SparsePCA
(錯誤修正)ensemble.GradientBoostingClassifier
(影響特徵重要性的錯誤修正)linear_model.Perceptron
(錯誤修正)metrics.roc_auc_score
(錯誤修正)metrics.roc_curve
(錯誤修正)neural_network.BaseMultilayerPerceptron
(錯誤修正)v0.19.0 版本說明未能提及
model_selection.StratifiedKFold
在由於 #7823 導致shuffle=True
時的向後不相容性。
詳細資訊列在下方的變更日誌中。
(雖然我們試圖透過提供此資訊來更好地通知使用者,但我們無法保證此列表完整。)
已知的重大錯誤#
#11924:使用
solver='lbfgs'
和multi_class='multinomial'
的linear_model.LogisticRegressionCV
在 macOS 上可能具有不確定性或以其他方式損壞。這似乎在 Travis CI 伺服器上是如此,但在個人的 MacBook 上尚未確認!此問題已存在於先前的版本中。#9354:
metrics.pairwise.euclidean_distances
(在函式庫中多次使用)的結果精確度不佳,尤其在使用 32 位元浮點數輸入時會受到影響。當某些演算法變更為避免將 32 位元資料轉換為 64 位元時,這個問題在 0.18 和 0.19 版本中變得更加嚴重。
變更日誌#
已正式停止支援 Python 3.3。
sklearn.cluster
#
主要功能
cluster.AgglomerativeClustering
現在透過linkage='single'
支援單連結分群。由 Leland McInnes 和 Steve Astels 實作。 #9372功能
cluster.KMeans
和cluster.MiniBatchKMeans
現在透過fit
函式中的新參數sample_weight
支援樣本權重。由 Johannes Hansen 實作。 #10933效率 使用
algorithm='full'
傳遞的cluster.KMeans
、cluster.MiniBatchKMeans
和cluster.k_means
現在強制執行以列為主 (row-major) 的排序,以改善執行時間。由 Gaurav Dhingra 實作。 #10471效率
cluster.DBSCAN
現在根據n_jobs
進行平行化,無論algorithm
為何。由 Joël Billaud 實作。 #8003增強 如果找到的相異叢集數量小於
n_clusters
,cluster.KMeans
現在會發出警告。當資料集中相異點的數量實際上小於所尋找的叢集數量時,可能會發生這種情況。由 Christian Braune 實作。 #10059修正 修正了當不收斂時,
cluster.AffinityPropagation
的fit
方法將叢集中心儲存為 3 維陣列而非 2 維陣列的錯誤。對於同一個類別,修正了在訓練資料中所有樣本具有相同相似度時,未定義和任意的行為。由 Jonatan Samoocha 實作。#9612。修正 修正了
cluster.spectral_clustering
中,頻譜正規化使用除法而非乘法的錯誤。由 Jan Margeta、Guillaume Lemaitre 和 Devansh D. 實作。 #8129修正 修正了
cluster.k_means_elkan
中,傳回的iteration
比正確值少 1 的錯誤。也在cluster.KMeans
的文件字串中新增了遺失的n_iter_
屬性。由 Jeremie du Boisberranger 實作。 #11353修正 修正了
cluster.mean_shift
中,如果有多個強度相同的叢集,則指派的標籤不具確定性的錯誤。由 Adrin Jalali 實作。 #11901API 變更 棄用
cluster.AgglomerativeClustering
中未使用的參數pooling_func
。由 Kumar Ashutosh 實作。 #9875
sklearn.compose
#
新模組。
主要功能 新增了
compose.ColumnTransformer
,允許將不同的轉換器應用於陣列或 pandas DataFrames 的不同列。由 Andreas Müller 和 Joris Van den Bossche 實作。 #9012 和 #11315 由 Thomas Fan 實作。主要功能 新增了
compose.TransformedTargetRegressor
,會在擬合迴歸模型之前轉換目標 y。預測值會透過反向轉換映射回原始空間。由 Andreas Müller 和 Guillaume Lemaitre 實作。 #9041
sklearn.covariance
#
效率 改進了
covariance.GraphicalLasso
的執行時間。由 Steven Brown 實作。 #9858API 變更
covariance.graph_lasso
、covariance.GraphLasso
和covariance.GraphLassoCV
已分別重新命名為covariance.graphical_lasso
、covariance.GraphicalLasso
和covariance.GraphicalLassoCV
,並將在 0.22 版本中移除。由 Artiem Krinitsyn 實作。 #9993
sklearn.datasets
#
主要功能 新增
datasets.fetch_openml
以從 OpenML 獲取資料集。OpenML 是一個免費、開放的資料共享平台,將取代 mldata,因為它提供更好的服務可用性。#9908 由 Andreas Müller 和 Jan N. van Rijn 貢獻。功能 在
datasets.make_blobs
中,現在可以傳遞一個列表到n_samples
參數,以指示每個叢集要生成的樣本數量。#8617 由 Maskani Filali Mohamed 和 Konstantinos Katrioplas 貢獻。功能 為具有 CSV 檔案的
sklearn.datasets
添加filename
屬性。#9101 由 alex-33 和 Maskani Filali Mohamed 貢獻。功能
return_X_y
參數已添加到多個資料集載入器中。#10774 由 Chris Catalfo 貢獻。修復 修復了
datasets.load_boston
中一個錯誤的資料點。#10795 由 Takeshi Yoshizawa 貢獻。修復 修復了
datasets.load_iris
中兩個錯誤的資料點。#11082 由 Sadhana Srinivasan 和 Hanmin Qin 貢獻。修復 修復了
datasets.fetch_kddcup99
中的一個錯誤,該錯誤導致資料未正確洗牌。#9731 由 Nicolas Goix 貢獻。修復 修復了
datasets.make_circles
中的一個錯誤,該錯誤導致無法生成奇數個資料點。#10045 由 Christian Braune 貢獻。API 變更 已棄用
sklearn.datasets.fetch_mldata
,將在 0.22 版本中移除。mldata.org 已停止運作。在移除之前,仍可載入快取的資料集。#11466 由 Joel Nothman 貢獻。
sklearn.decomposition
#
功能
decomposition.dict_learning
函式和模型現在支援正向約束。這適用於字典和稀疏碼。#6374 由 John Kirkham 貢獻。功能 修復
decomposition.SparsePCA
現在公開normalize_components
。當設定為 True 時,訓練和測試資料會分別在 fit 階段和 transform 階段以訓練平均值為中心。這修正了 SparsePCA 的行為。當設定為 False 時(預設值),先前的異常行為仍然存在。False 值是為了向後相容性,不應使用。#11585 由 Ivan Panico 貢獻。效率
decomposition.dict_learning
中的效率改進。#11420 以及其他由 John Kirkham 貢獻的改進。修復 修復了
decomposition.IncrementalPCA
中無資訊錯誤:如果元件數量大於選擇的批次大小,則現在會引發錯誤。n_components=None
的情況也做了相應的調整。#6452。由 Wally Gauze 貢獻。修復 修復了
decomposition.IncrementalPCA
的partial_fit
方法在 Python 2 上使用整數除法而不是浮點除法的一個錯誤。#9492 由 James Bourbeau 貢獻。修復 在
decomposition.PCA
中,選擇大於樣本數的 n_components 參數現在會引發錯誤。同樣地,n_components=None
的情況現在會選擇n_samples
和n_features
中的最小值。#8484 由 Wally Gauze 貢獻。修復 修復了
decomposition.PCA
在 Python 3 版本上,當n_components='mle'
時,使用者會在大資料集上遇到意外錯誤的一個錯誤。#9886 由 Hanmin Qin 貢獻。修復 修復了
decomposition.NMF
中計算 KL 散度時的下溢。#10142 由 Tom Dupre la Tour 貢獻。修復 修復了
decomposition.SparseCoder
在使用唯讀記憶體對應資料結構平行執行 OMP 稀疏編碼時的一個錯誤。#5956 由 Vighnesh Birodkar 和 Olivier Grisel 貢獻。
sklearn.discriminant_analysis
#
效率 改善
sklearn.discriminant_analysis
中_class_means
和_class_cov
的記憶體使用。#10898 由 Nanxin Chen 貢獻。
sklearn.dummy
#
新功能
dummy.DummyRegressor
現在在其predict
方法中新增了return_std
選項。回傳的標準差將會是零。新功能
dummy.DummyClassifier
和dummy.DummyRegressor
現在僅要求 X 為具有有限長度或形狀的物件。#9832 由 Vrishank Bhardwaj 提供。新功能
dummy.DummyClassifier
和dummy.DummyRegressor
現在可以在不提供測試樣本的情況下進行評分。#11951 由 Rüdiger Busche 提供。
sklearn.ensemble
#
新功能
ensemble.BaggingRegressor
和ensemble.BaggingClassifier
現在可以使用 X 中遺失/非有限值和/或多輸出 Y 進行擬合,以支援包裝執行自身插補的管線。#9707 由 Jimmy Wan 提供。新功能
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
現在支援透過n_iter_no_change
、validation_fraction
和tol
進行提前停止。#7071 由 Raghav RV 提供。新功能 在
ensemble.VotingClassifier
中新增了named_estimators_
參數,以存取擬合的估計器。#9157 由 Herilalaina Rakotoarison 提供。修正 修正了當使用
warm_start=True
擬合ensemble.GradientBoostingClassifier
或ensemble.GradientBoostingRegressor
時發生的錯誤,先前由於沒有將 CSC 矩陣轉換為decision_function
預期的 CSR 格式而導致分段錯誤。同樣地,在密集的情況下,Fortran 排序的陣列會被轉換為 C 排序的陣列。#9991 由 Guillaume Lemaitre 提供。修正 修正了
ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
中的一個錯誤,該錯誤導致特徵重要性是先加總再正規化,而不是在每個樹的基礎上進行正規化。先前的行為過度加權了在較後階段出現的特徵的吉尼重要性。此問題僅影響特徵重要性。#11176 由 Gil Forsyth 提供。API 變更
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
、ensemble.ExtraTreesRegressor
和ensemble.RandomTreesEmbedding
的n_estimators
參數的預設值將從 0.20 版本的 10 變更為 0.22 版本的 100。當使用預設值時,會發出 FutureWarning。#11542 由 Anna Ayzenshtat 提供。API 變更 從
ensemble.BaseBagging
衍生而來的類別。屬性estimators_samples_
將返回一個包含每個 bootstrap 所選索引的陣列列表,而不是包含每個 bootstrap 所選樣本遮罩的陣列列表。索引允許重複樣本,而遮罩不允許此功能。#9524 由 Guillaume Lemaitre 提供。修正
ensemble.BaseBagging
中當設定random_state
時,無法使用物件屬性來確定性地重現fit
結果的錯誤。#9723 由 Guillaume Lemaitre 提供。
sklearn.feature_extraction
#
新功能 啟用在以詞彙表初始化的未擬合
feature_extraction.text.CountVectorizer
中呼叫get_feature_names
。#10908 由 Mohamed Maskani 提供。增強功能 現在可以在
feature_extraction.text.TfidfTransformer
上設定idf_
。#10899 由 Sergey Melderis 提供。修正 修正了
feature_extraction.image.extract_patches_2d
中的一個錯誤,如果max_patches
大於或等於所有可能補丁的數量,則會拋出異常,而不是簡單地返回可能補丁的數量。#10101 由 Varun Agrawal 提供。修正 修正了
feature_extraction.text.CountVectorizer
、feature_extraction.text.TfidfVectorizer
、feature_extraction.text.HashingVectorizer
中的一個錯誤,以支援 64 位元稀疏陣列索引,這對於處理具有超過 2·10⁹ 個詞元(單字或 n 元語法)的大型資料集是必需的。#9147 由 Claes-Fredrik Mannby 和 Roman Yurchak 提供。修正 修正了
feature_extraction.text.TfidfVectorizer
中忽略參數dtype
的錯誤。此外,feature_extraction.text.TfidfTransformer
將會保留浮點數的dtype
,若要求的dtype
為整數則會發出警告。#10441 由 Mayur Kulkarni 和 Guillaume Lemaitre 貢獻。
sklearn.feature_selection
#
功能 為
feature_selection.SelectFromModel
新增了選擇 K 個最佳特徵的功能。#6689 由 Nihar Sheth 和 Quazi Rahman 貢獻。功能 為
feature_selection.RFECV
新增min_features_to_select
參數,以限制評估的特徵數量。#11293 由 Brent Yi 貢獻。功能
feature_selection.RFECV
的 fit 方法現在支援 群組。#9656 由 Adam Greenhall 貢獻。修正 修正了
feature_selection.RFECV
中,在 CV 分數相同的情況下計算n_features_to_compute
的邊緣情況的錯誤。#9222 由 Nick Hoh 貢獻。
sklearn.gaussian_process
#
效率 在
gaussian_process.GaussianProcessRegressor
中,當使用return_std=True
時,predict
方法會更快,尤其是當連續多次呼叫時更為顯著。#9234 由 andrewww 和 Minghui Liu 貢獻。
sklearn.impute
#
新的模組,將
preprocessing.Imputer
採用為impute.SimpleImputer
,並進行了細微的更改(請參閱下方的預處理)。主要功能 新增了
impute.MissingIndicator
,用於產生遺失值的二元指標。#8075 由 Maniteja Nandana 和 Guillaume Lemaitre 貢獻。功能
impute.SimpleImputer
有一個新的策略'constant'
,可以使用fill_value
參數指定的值來填補遺失值。此策略支援數值和非數值資料,'most_frequent'
策略現在也支援此功能。#11211 由 Jeremie du Boisberranger 貢獻。
sklearn.isotonic
#
修正 修正了
isotonic.IsotonicRegression
的錯誤,該錯誤在將模型擬合到包含具有相同 X 值點的資料時,會不正確地組合權重。#9484 由 Dallas Card 貢獻。
sklearn.linear_model
#
功能
linear_model.SGDClassifier
,linear_model.SGDRegressor
,linear_model.PassiveAggressiveClassifier
,linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
現在公開了early_stopping
、validation_fraction
和n_iter_no_change
參數,以停止監控驗證集分數的優化過程。一個新的學習率"adaptive"
策略會在n_iter_no_change
個連續 epoch 未能改善模型時,將學習率除以 5。#9043 由 Tom Dupre la Tour 貢獻。功能 為
linear_model.BayesianRidge
的 fit 方法新增sample_weight
參數,用於加權線性迴歸。#10112 由 Peter St. John 貢獻。修正 修正了
logistic.logistic_regression_path
中的錯誤,以確保當multiclass='multinomial'
時,傳回的係數是正確的。先前,某些係數會覆蓋彼此,導致linear_model.LogisticRegressionCV
中產生不正確的結果。#11724 由 Nicolas Hug 貢獻。修正 修正了
linear_model.LogisticRegression
中的錯誤,當使用參數multi_class='multinomial'
時,predict_proba
方法在二元結果的情況下會傳回不正確的機率。#9939 由 Roger Westover 貢獻。修正 修正了
linear_model.LogisticRegressionCV
中的錯誤,其中score
方法始終計算準確度,而不是由scoring
參數給定的指標。#10998 由 Thomas Fan 貢獻。修正 修正了
linear_model.LogisticRegressionCV
中的錯誤,即使設定了'multinomial'
,在多類別設定中也總是使用 'ovr' 策略來計算交叉驗證分數。#8720 由 William de Vazelhes 貢獻。修正 修正了
linear_model.OrthogonalMatchingPursuit
在設定normalize=False
時損壞的錯誤。#10071 由 Alexandre Gramfort 貢獻。修正 修正了
linear_model.ARDRegression
中的一個錯誤,該錯誤導致標準差和係數的估計值更新不正確。#10153,由 Jörg Döpfert 貢獻。修正 修正了
linear_model.ARDRegression
和linear_model.BayesianRidge
中的一個錯誤,當使用常數目標進行擬合時,會導致 NaN 預測。#10095,由 Jörg Döpfert 貢獻。修正 修正了
linear_model.RidgeClassifierCV
中的一個錯誤,其中參數store_cv_values
未實作,儘管它在cv_values
中被記錄為設置不同 alpha 值交叉驗證值儲存的方法。#10297,由 Mabel Villalba-Jiménez 貢獻。修正 修正了
linear_model.ElasticNet
中的一個錯誤,當使用參數copy_X=True
和check_input=False
時,會導致輸入被覆蓋。#10581,由 Yacine Mazari 貢獻。修正 修正了
sklearn.linear_model.Lasso
中的一個錯誤,當fit_intercept=False
時,係數的形狀不正確。#10687,由 Martin Hahn 貢獻。修正 修正了
sklearn.linear_model.LogisticRegression
中的一個錯誤,其中二元輸出搭配multi_class='multinomial'
和warm_start=True
會導致錯誤。#10836,由 Aishwarya Srinivasan 貢獻。修正 修正了
linear_model.RidgeCV
中的一個錯誤,其中使用整數alphas
會引發錯誤。#10397,由 Mabel Villalba-Jiménez 貢獻。修正 修正了使用稀疏矩陣時,在
linear_model.Lasso
和linear_model.ElasticNet
中觸發間隙計算的條件。#10992,由 Alexandre Gramfort 貢獻。修正 修正了
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中的一個錯誤,其中停止標準在收斂之前停止演算法。 添加了一個參數n_iter_no_change
,預設設定為 5。 先前的行為相當於將參數設定為 1。#9043,由 Tom Dupre la Tour 貢獻。修正 修正了一個錯誤,如果傳遞具有 64 位元索引的 scipy.sparse 矩陣,基於 liblinear 和 libsvm 的估計器會發生區段錯誤。 現在它們會引發 ValueError。#11327,由 Karan Dhingra 和 Joel Nothman 貢獻。
API 變更
linear_model.LogisticRegression
的solver
和multi_class
參數的預設值將分別從 0.20 版本的'liblinear'
和'ovr'
變更為 0.22 版本的'lbfgs'
和'auto'
。當使用預設值時,會引發 FutureWarning。#11905,由 Tom Dupre la Tour 和 Joel Nothman 貢獻。API 變更 在
linear_model.Lars
中棄用positive=True
選項,因為底層實作已損壞。請改用linear_model.Lasso
。#9837,由 Alexandre Gramfort 貢獻。API 變更 使用
solver='lbfgs'
的linear_model.LogisticRegression
和linear_model.HuberRegressor
中,n_iter_
可能與先前版本不同。 對於 Scipy <= 1.0.0,優化器可以執行超過請求的最大迭代次數。現在,即使執行了更多迭代,兩個估計器最多也會報告max_iter
次迭代。#10723,由 Joel Nothman 貢獻。
sklearn.manifold
#
效率 提升了
manifold.TSNE
中 ‘exact’ 和 ‘barnes_hut’ 方法的速度。#10593 和 #10610,由 Tom Dupre la Tour 貢獻。功能 在
manifold.Isomap.fit
中支援稀疏輸入。#8554,由 Leland McInnes 貢獻。功能
manifold.t_sne.trustworthiness
接受歐幾里得以外的度量。#9775,由 William de Vazelhes 貢獻。修正 修正了
manifold.spectral_embedding
中的一個錯誤,該錯誤導致頻譜正規化時使用除法而非乘法。#8129 由 Jan Margeta、Guillaume Lemaitre 和 Devansh D. 貢獻。API 變更 功能 棄用函式
manifold.t_sne.trustworthiness
中的precomputed
參數。請改用新的參數metric
,該參數可使用任何相容的度量,包括 'precomputed'。在這種情況下,輸入矩陣X
應該是成對距離或平方距離的矩陣。#9775 由 William de Vazelhes 貢獻。API 變更 棄用函式
manifold.t_sne.trustworthiness
中的precomputed
參數。請改用新的參數metric
,該參數可使用任何相容的度量,包括 'precomputed'。在這種情況下,輸入矩陣X
應該是成對距離或平方距離的矩陣。#9775 由 William de Vazelhes 貢獻。
sklearn.metrics
#
主要功能 新增了
metrics.davies_bouldin_score
指標,用於評估沒有真實標籤的分群模型。#10827 由 Luis Osa 貢獻。主要功能 新增了
metrics.balanced_accuracy_score
指標以及對應的'balanced_accuracy'
評分器,適用於二元和多類別分類。#8066 由 @xyguo 和 Aman Dalmia 貢獻,以及 #10587 由 Joel Nothman 貢獻。功能 可透過
metrics.roc_auc_score
中的max_fpr
參數使用部分 AUC。#3840 由 Alexander Niederbühl 貢獻。功能 也提供了基於
metrics.brier_score_loss
的評分器。#9521 由 Hanmin Qin 貢獻。功能 透過
average_method
參數,在metrics.normalized_mutual_info_score
和metrics.adjusted_mutual_info_score
中新增了對正規化的控制。在 0.22 版本中,每個的預設正規化方法將變為每個分群熵的算術平均值。#11124 由 Arya McCarthy 貢獻。功能 在
metrics.classification_report
中新增了output_dict
參數,以字典形式回傳分類統計資料。#11160 由 Dan Barkhorn 貢獻。功能
metrics.classification_report
現在會報告給定資料上所有適用的平均值,包括微平均、巨平均、加權平均以及多標籤資料的樣本平均值。#11679 由 Alexander Pacha 貢獻。功能
metrics.average_precision_score
現在透過pos_label
參數支援除{0, 1}
或{-1, 1}
之外的二元y_true
。#9980 由 Hanmin Qin 貢獻。功能
metrics.label_ranking_average_precision_score
現在支援sample_weight
。#10845 由 Jose Perez-Parras Toledano 貢獻。功能 將
dense_output
參數新增至metrics.pairwise.linear_kernel
。當為 False 且兩個輸入都是稀疏時,將回傳稀疏矩陣。#10999 由 Taylor G Smith 貢獻。效率
metrics.silhouette_score
和metrics.silhouette_samples
的記憶體效率更高且執行速度更快。這避免了一些回報的凍結和 MemoryErrors。#11135 由 Joel Nothman 貢獻。修正 修正了當截斷的
range(n_labels)
作為labels
的值傳遞時,metrics.precision_recall_fscore_support
中的一個錯誤。#10377 由 Gaurav Dhingra 貢獻。修正 修正了由於
metrics.roc_auc_score
中使用非整數樣本權重而導致的浮點錯誤。#9786 由 Hanmin Qin 貢獻。修正 修正了
metrics.roc_curve
有時從 y 軸而不是 (0, 0) 開始的錯誤,這與文件和其他實作不一致。請注意,這不會影響metrics.roc_auc_score
的結果 #10093 由 alexryndin 和 Hanmin Qin 貢獻。修正 修正了避免整數溢位的錯誤。在
metrics.mutual_info_score
中將乘積轉換為 64 位元整數。#9772 由 Kumar Ashutosh 貢獻。修正 修正了當
sample_weight
包含 0 時,metrics.average_precision_score
有時會回傳nan
的錯誤。#9980 由 Hanmin Qin 貢獻。修正 修正了
metrics.fowlkes_mallows_score
中避免整數溢位的錯誤。將contingency_matrix
的回傳值轉換為int64
並計算平方根的乘積,而不是乘積的平方根。#9515 由 Alan Liddell 和 Manh Dao 貢獻。API 變更 棄用
metrics.auc
中的reorder
參數,因為metrics.roc_auc_score
已不再需要此參數。此外,使用reorder=True
可能會因輸入中的浮點數錯誤而隱藏錯誤。 #9851 由 Hanmin Qin 貢獻。API 變更 在
metrics.normalized_mutual_info_score
和metrics.adjusted_mutual_info_score
中,警告average_method
將會有新的預設值。在 0.22 版本中,每個函數的預設正規化器將會變成每個群聚熵的「算術」平均值。目前,metrics.normalized_mutual_info_score
使用average_method='geometric'
作為預設值,而metrics.adjusted_mutual_info_score
使用average_method='max'
作為預設值,以符合其在 0.19 版本中的行為。 #11124 由 Arya McCarthy 貢獻。API 變更
metrics.pairwise_distances_argmin_min
和metrics.pairwise_distances_argmin
中的batch_size
參數已棄用,將在 v0.22 中移除。它不再有任何作用,因為批次大小是由全域working_memory
設定決定的。請參閱 限制工作記憶體。 #10280 由 Joel Nothman 和 Aman Dalmia 貢獻。
sklearn.mixture
#
新功能 在
mixture.GaussianMixture
和mixture.GaussianMixture
中新增了函式 fit_predict,它本質上等同於呼叫 fit 和 predict。 #10336 由 Shu Haoran 和 Andrew Peng 貢獻。錯誤修復 修復了
mixture.BaseMixture
中回報的n_iter_
缺少一個迭代的錯誤。它影響了mixture.GaussianMixture
和mixture.BayesianGaussianMixture
。 #10740 由 Erich Schubert 和 Guillaume Lemaitre 貢獻。錯誤修復 修復了
mixture.BaseMixture
及其子類別mixture.GaussianMixture
和mixture.BayesianGaussianMixture
中的一個錯誤,其中lower_bound_
不是所有初始化中的最大下界(當n_init > 1
時),而只是最後一次初始化的下界。 #10869 由 Aurélien Géron 貢獻。
sklearn.model_selection
#
新功能 在
model_selection.cross_validate
中新增return_estimator
參數,以回傳在每個分割上擬合的估算器。 #9686 由 Aurélien Bellet 貢獻。新功能 如果
refit
設定為True
,則新的refit_time_
屬性將會儲存在model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中。這將允許測量執行超參數最佳化和在整個資料集上重新擬合最佳模型所需的完整時間。 #11310 由 Matthias Feurer 貢獻。新功能 在
model_selection.cross_validate
、model_selection.cross_val_score
、model_selection.learning_curve
和model_selection.validation_curve
中公開error_score
參數,以控制在model_selection._fit_and_score
中發生錯誤時觸發的行為。 #11576 由 Samuel O. Ronsin 貢獻。新功能
BaseSearchCV
現在有一個實驗性的私有介面,透過其_run_search
方法來支援客製化的參數搜尋策略。請參閱model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中的實作,如果您使用此介面,請提供回饋意見。請注意,我們不保證此 API 在 0.20 版本之後的穩定性。 #9599 由 Joel Nothman 貢獻。增強 在
scoring
關鍵字中傳遞多個度量時,在model_selection.cross_val_score
中新增了改進的錯誤訊息。 #11006 由 Ming Li 貢獻。API 變更 在
model_selection.KFold
類型的分割器中,預設的交叉驗證折數cv
和預設的分割次數n_splits
將在 0.22 版本中從 3 變更為 5,因為 3 折具有很大的變異數。 #11557 由 Alexandre Boucaud 貢獻。API 變更
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
的iid
參數預設值將在 0.22 版本中從True
變更為False
,以符合交叉驗證的標準定義,並且該參數將在 0.24 版本中完全移除。此參數在交叉驗證中不同測試集大小非常不均等的情況下(即,基於群組的 CV 策略)具有最大的實際意義。#9085 由 Laurent Direr 和 Andreas Müller 提供。API 變更
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中error_score
參數的預設值將在 0.22 版本中變更為np.NaN
。#10677 由 Kirill Zhdanovich 提供。API 變更 在
model_selection.ParameterSampler
中,當使用大於參數網格中參數總空間的n_iter
值實例化類別時,所引發的 ValueError 異常已變更為 UserWarning。n_iter
現在作為迭代次數的上限。#10982 由 Juliet Lawton 提供。API 變更
model_selection.ParameterGrid
的無效輸入現在會引發 TypeError。#10928 由 Solutus Immensus 提供。
sklearn.multioutput
#
主要功能 為多目標迴歸新增了
multioutput.RegressorChain
。#9257 由 Kumar Ashutosh 提供。
sklearn.naive_bayes
#
主要功能 新增了
naive_bayes.ComplementNB
,它實現了 Rennie 等人 (2003) 描述的互補樸素貝葉斯分類器。#8190 由 Michael A. Alcorn 提供。功能 在
naive_bayes.GaussianNB
中新增了var_smoothing
參數,以便精確控制變異數的計算。#9681 由 Dmitry Mottl 提供。修復 修復了
naive_bayes.GaussianNB
中的錯誤,該錯誤在先驗列表總和為 1 時會錯誤地引發錯誤。#10005 由 Gaurav Dhingra 提供。修復 修復了
naive_bayes.MultinomialNB
中的錯誤,該錯誤不接受向量值偽計數 (alpha)。#10346 由 Tobias Madsen 提供。
sklearn.neighbors
#
效率 現在,
neighbors.RadiusNeighborsRegressor
和neighbors.RadiusNeighborsClassifier
會根據n_jobs
進行平行化,而與algorithm
無關。#10887 由 Joël Billaud 提供。效率 當
algorithm='brute'
時,sklearn.neighbors
查詢方法現在具有更高的記憶體效率。#11136 由 Joel Nothman 和 Aman Dalmia 提供。功能 將
sample_weight
參數新增到neighbors.KernelDensity
的 fit 方法中,以便在核密度估計中啟用加權。#4394 由 Samuel O. Ronsin 提供。功能 使用
neighbors.LocalOutlierFactor
進行新穎性檢測:將novelty
參數新增到neighbors.LocalOutlierFactor
。當novelty
設定為 True 時,neighbors.LocalOutlierFactor
隨後可用於新穎性檢測,即對新的未見數據進行預測。可用的預測方法有predict
、decision_function
和score_samples
。預設情況下,novelty
設定為False
,並且僅提供fit_predict
方法。由 Albert Thomas 提供。修復 修復了
neighbors.NearestNeighbors
中的錯誤,當 a) 使用的距離度量是可呼叫的,且 b) NearestNeighbors 模型的輸入是稀疏時,擬合 NearestNeighbors 模型會失敗。#9579 由 Thomas Kober 提供。修復 修復了錯誤,以便當使用非均勻權重時,
neighbors.RadiusNeighborsRegressor
中的predict
可以處理空的鄰居集。當找不到樣本的鄰居時,也會引發新的警告。#9655 由 Andreas Bjerre-Nielsen 提供。修復 效率 修復了
KDTree
結構中的錯誤,該錯誤會導致更快的結構和查詢時間。#11556 由 Jake VanderPlas 提供。修復 修復了
neighbors.KDTree
和neighbors.BallTree
中的錯誤,其中 Pickle 序列化的樹物件會將其類型變更為超類別BinaryTree
。#11774 由 Nicolas Hug 提供。
sklearn.neural_network
#
功能 在
neural_network.BaseMultilayerPerceptron
、neural_network.MLPRegressor
和neural_network.MLPClassifier
中新增n_iter_no_change
參數,以控制未達到tol
改善的最大迭代次數。 #9456 由 Nicholas Nadeau 貢獻。修正 修正了
neural_network.BaseMultilayerPerceptron
、neural_network.MLPRegressor
和neural_network.MLPClassifier
中的錯誤,新的n_iter_no_change
參數現在從之前硬編碼的 2 改為 10。 #9456 由 Nicholas Nadeau 貢獻。修正 修正了
neural_network.MLPRegressor
中,由於局部最小值或波動而導致擬合過早意外退出的錯誤。 #9456 由 Nicholas Nadeau 貢獻。
sklearn.pipeline
#
功能
pipeline.Pipeline
的predict
方法現在將關鍵字參數傳遞給 pipeline 的最後一個估計器,使得可以在 pipeline 中謹慎使用諸如return_std
之類的參數。 #9304 由 Breno Freitas 貢獻。API 變更
pipeline.FeatureUnion
現在支援'drop'
作為變換器來刪除特徵。 #11144 由 Thomas Fan 貢獻。
sklearn.preprocessing
#
主要功能 擴展了
preprocessing.OneHotEncoder
,允許使用 one-hot (或虛擬) 編碼方案將類別字串特徵編碼為數值陣列,並新增了preprocessing.OrdinalEncoder
以轉換為序數整數。這兩個類別現在可以處理所有特徵類型的編碼 (也處理字串值特徵),並根據特徵中的唯一值而不是特徵中的最大值來推導類別。 #9151 和 #10521 由 Vighnesh Birodkar 和 Joris Van den Bossche 貢獻。主要功能 新增了
preprocessing.KBinsDiscretizer
,用於將連續特徵轉換為類別或 one-hot 編碼的特徵。 #7668、#9647、#10195、#10192、#11272、#11467 和 #11505。由 Henry Lin、Hanmin Qin、Tom Dupre la Tour 和 Giovanni Giuseppe Costa 貢獻。主要功能 新增了
preprocessing.PowerTransformer
,它實現了 Yeo-Johnson 和 Box-Cox 冪變換。冪變換嘗試尋找一組針對特徵的參數變換,以近似地將數據映射到以零為中心且單位方差的高斯分佈。這在需要常態性和同質性的情況下,作為方差穩定轉換很有用。 #10210 由 Eric Chang 和 Maniteja Nandana 貢獻,以及 #11520 由 Nicolas Hug 貢獻。主要功能 NaN 值在以下預處理方法中被忽略和處理:
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.RobustScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
類別以及preprocessing.maxabs_scale
、preprocessing.minmax_scale
、preprocessing.robust_scale
、preprocessing.scale
、preprocessing.power_transform
、preprocessing.quantile_transform
函式分別在 #11011、#11005、#11308、#11206、#11306 和 #10437 問題中解決。由 Lucija Gregov 和 Guillaume Lemaitre 貢獻。功能
preprocessing.PolynomialFeatures
現在支援稀疏輸入。 #10452 由 Aman Dalmia 和 Joel Nothman 貢獻。功能
preprocessing.RobustScaler
和preprocessing.robust_scale
可以使用稀疏矩陣進行擬合。 #11308 由 Guillaume Lemaitre 貢獻。功能
preprocessing.OneHotEncoder
現在支援get_feature_names
方法來取得轉換後的特徵名稱。 #10181 由 Nirvan Anjirbag 和 Joris Van den Bossche 貢獻。功能 在
preprocessing.FunctionTransformer
中新增了一個check_inverse
參數,以確保func
和inverse_func
彼此互為反函數。 #9399 由 Guillaume Lemaitre 貢獻。新功能
sklearn.preprocessing.MultiLabelBinarizer
的transform
方法現在會忽略任何未知的類別。同時會發出警告,指出發現了未知的類別並將其忽略。#10913 由 Rodrigo Agundez 貢獻。錯誤修正 修正在
preprocessing.LabelEncoder
中的錯誤,該錯誤有時會在以空陣列呼叫transform
或inverse_transform
時拋出錯誤。#10458 由 Mayur Kulkarni 貢獻。錯誤修正 修正在
preprocessing.LabelEncoder
中,當對未見過的標籤使用inverse_transform
時,會發生的 ValueError 錯誤。#9816 由 Charlie Newey 貢獻。錯誤修正 修正在
preprocessing.OneHotEncoder
中的錯誤,該錯誤會在返回稀疏矩陣輸出時丟棄dtype
。#11042 由 Daniel Morales 貢獻。錯誤修正 修正在
preprocessing.StandardScaler
中,當with_mean=False
且with_std=False
時,呼叫fit
超過一次會崩潰的罕見情況,以及對於稀疏或密集矩陣輸入,mean_
給出不一致結果的問題。mean_
將會設定為None
,無論輸入是稀疏或密集矩陣。同時,無論何種輸入類型,都會回報n_samples_seen_
。#11235 由 Guillaume Lemaitre 貢獻。API 變更 棄用
preprocessing.OneHotEncoder
的n_values
和categorical_features
參數,以及active_features_
、feature_indices_
和n_values_
屬性。n_values
參數可以用新的categories
參數替換,而屬性可以用新的categories_
屬性替換。現在使用compose.ColumnTransformer
可以更好地支援使用categorical_features
參數選擇類別特徵。#10521 由 Joris Van den Bossche 貢獻。API 變更 棄用
preprocessing.Imputer
,並將對應的模組移至impute.SimpleImputer
。#9726 由 Kumar Ashutosh 貢獻。API 變更
preprocessing.Imputer
中的axis
參數不再存在於impute.SimpleImputer
中。其行為等同於axis=0
(沿列進行填補)。可以使用 FunctionTransformer 執行逐列填補(例如,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X.T).T)
)。#10829 由 Guillaume Lemaitre 和 Gilberto Olimpio 貢獻。API 變更
preprocessing.Imputer
和impute.SimpleImputer
之間,遺失值的 NaN 標記已更改。missing_values='NaN'
現在應為missing_values=np.nan
。#11211 由 Jeremie du Boisberranger 貢獻。API 變更 在
preprocessing.FunctionTransformer
中,validate
的預設值將在 0.22 版本中從True
變更為False
。#10655 由 Guillaume Lemaitre 貢獻。
sklearn.svm
#
錯誤修正 修正在
svm.SVC
中的錯誤,當在 Python2 中,參數kernel
是 unicode 時,給定密集輸入,predict_proba
方法會拋出非預期的 TypeError。#10412 由 Jiongyan Zhang 貢獻。API 變更 棄用
svm.OneClassSVM
中的random_state
參數,因為底層實作不是隨機的。#9497 由 Albert Thomas 貢獻。API 變更
svm.SVC
、NuSVC
、SVR
、NuSVR
、OneClassSVM
的gamma
參數預設值將在 0.22 版本中,從'auto'
變更為'scale'
,以便更好地處理未縮放的特徵。#8361 由 Gaurav Dhingra 和 Ting Neo 貢獻。
sklearn.tree
#
增強功能 雖然是私有的(因此不能保證 API 穩定性),
tree._criterion.ClassificationCriterion
和tree._criterion.RegressionCriterion
現在可以被 cimport 並擴展。#10325 由 Camil Staps 貢獻。修正 修正了
tree.BaseDecisionTree
中使用splitter="best"
時的一個錯誤,當 X 中的值接近無限大時,分割閾值可能會變成無限大。 #10536 由 Jonathan Ohayon 貢獻。修正 修正了
tree.MAE
中的一個錯誤,確保在計算樹的 MAE 不純度時使用了樣本權重。先前的行為可能會導致選擇次優的分割,因為不純度計算認為所有樣本的權重重要性都相等。 #11464 由 John Stott 貢獻。
sklearn.utils
#
新功能
utils.check_array
和utils.check_X_y
現在具有accept_large_sparse
參數,用於控制是否應拒絕具有 64 位索引的 scipy.sparse 矩陣。 #11327 由 Karan Dhingra 和 Joel Nothman 貢獻。效率提升 修正 當輸入數據為 memmap(且
copy=False
)時,避免在utils.check_array
中複製數據。 #10663 由 Arthur Mensch 和 Loïc Estève 貢獻。API 變更
utils.check_array
會產生一個FutureWarning
,表示位元組/字串陣列將從 0.22 版本開始被解釋為十進制數字。 #10229 由 Ryan Lee 貢獻
多個模組#
新功能 API 變更 更一致的離群值檢測 API:在
svm.OneClassSVM
、ensemble.IsolationForest
、neighbors.LocalOutlierFactor
、covariance.EllipticEnvelope
中新增一個score_samples
方法。它允許從原始論文中存取原始分數函數。一個新的offset_
參數允許連結score_samples
和decision_function
方法。ensemble.IsolationForest
和neighbors.LocalOutlierFactor
的contamination
參數的decision_function
方法被用來定義此offset_
,使得離群值(分別為內群值)具有負(分別為正)的decision_function
值。預設情況下,contamination
在棄用期間保持不變,為 0.1。在 0.22 中,它將被設定為「auto」,因此使用特定於方法的分數偏移量。在covariance.EllipticEnvelope
的decision_function
方法中,raw_values
參數已被棄用,因為在 0.22 中將始終返回偏移的馬氏距離。 #9015 由 Nicolas Goix 貢獻。新功能 API 變更
ensemble.IsolationForest
中引入了一個behaviour
參數,以確保向後相容性。在舊的行為中,decision_function
與contamination
參數無關。因此使用一個依賴於contamination
參數的閾值屬性。在新行為中,decision_function
依賴於contamination
參數,使得 0 成為其檢測離群值的自然閾值。將行為設定為「old」已被棄用,並且在 0.22 版本中將不可行。此外,行為參數將在 0.24 中移除。 #11553 由 Nicolas Goix 貢獻。API 變更 當
verbose
設定為 0 時,為svm.LinearSVC
和linear_model.LogisticRegression
新增了收斂警告。 #10881 由 Alexandre Sevin 貢獻。API 變更 將
linear_model.logistic_regression_path
、linear_model.RANSACRegressor
、linear_model.ridge_regression
、gaussian_process.GaussianProcessRegressor
、gaussian_process.GaussianProcessClassifier
、decomposition.fastica
、cross_decomposition.PLSCanonical
、cluster.AffinityPropagation
和cluster.Birch
中,因收斂失敗所發出的警告類型從UserWarning
更改為exceptions.ConvergenceWarning
。 #10306 由 Jonathan Siebert 貢獻。
其他#
重大新功能 新增了一個組態參數
working_memory
,以控制分塊操作中的記憶體消耗限制,例如新的metrics.pairwise_distances_chunked
。請參閱 限制工作記憶體。 #10280 由 Joel Nothman 和 Aman Dalmia 貢獻。新功能 與 Scikit-learn 捆綁的
joblib
版本現在是 0.12。它使用名為 loky 的新預設多處理實作。雖然這可能會產生一些記憶體和通訊的開銷,但它應比依賴 Python 標準程式庫多處理提供更大的跨平台穩定性。 #11741 由 Joblib 開發人員,特別是 Thomas Moreau 和 Olivier Grisel 貢獻。新功能 新增一個環境變數,可使用 site joblib 而非 vendor 內建的版本 (環境變數)。現在 joblib 的主要 API 已在
sklearn.utils
中公開。#11166 由 Gael Varoquaux 貢獻。新功能 新增幾乎完整的 PyPy 3 支援。已知不支援的功能有
datasets.load_svmlight_file
、feature_extraction.FeatureHasher
和feature_extraction.text.HashingVectorizer
。在 PyPy 上執行,需要 PyPy3-v5.10+、Numpy 1.14.0+ 和 scipy 1.1.0+。 #11010 由 Ronan Lamy 和 Roman Yurchak 貢獻。新功能 新增了一個實用方法
sklearn.show_versions
,用於列印出與除錯相關的資訊。它包括使用者系統、Python 可執行檔、主要函式庫的版本以及 BLAS 綁定資訊。#11596 由 Alexandre Boucaud 貢獻。修復 修復了在 meta-estimator 上設定參數時,同時涉及包裝的 estimator 及其參數的錯誤。 #9999 由 Marcus Voss 和 Joel Nothman 貢獻。
修復 修復了呼叫
sklearn.base.clone
時不是執行緒安全的錯誤,可能導致「從空列表彈出」錯誤。 #9569 由 Andreas Müller 貢獻。API 變更 所有相關函數和類別中,
n_jobs
的預設值從1
變更為None
。n_jobs=None
表示未設定
。它通常會被解讀為n_jobs=1
,除非目前的joblib.Parallel
後端內容另有指定(請參閱 詞彙表 以取得更多資訊)。請注意,此變更會立即發生(即,沒有棄用週期)。 #11741 由 Olivier Grisel 貢獻。修復 修復了驗證輔助程式中傳遞 Dask DataFrame 會導致錯誤的錯誤。 #12462 由 Zachariah Miller 貢獻。
estimator 檢查的變更#
這些變更主要影響函式庫開發人員。
現在,如果 estimator 實作 transform,則會套用轉換器的檢查,無論它是否繼承自
sklearn.base.TransformerMixin
。 #10474 由 Joel Nothman 貢獻。現在會檢查分類器在 decision_function 和類別預測之間的一致性。 #10500 由 Narine Kokhlikyan 貢獻。
允許
utils.estimator_checks.check_estimator
中的測試測試接受成對資料的函數。 #9701 由 Kyle Johnson 貢獻。允許
utils.estimator_checks.check_estimator
檢查除了參數之外,在 estimator 初始化期間沒有任何私有設定。 #9378 由 Herilalaina Rakotoarison 貢獻。utils.estimator_checks.check_estimator
中的檢查集現在包含一個check_set_params
測試,該測試會檢查set_params
是否等同於在__init__
中傳遞參數,如果遇到參數驗證則會發出警告。 #7738 由 Alvin Chiang 貢獻。為分群指標新增不變性測試。 #8102 由 Ankita Sinha 和 Guillaume Lemaitre 貢獻。
新增
check_methods_subset_invariance
到check_estimator
,它會檢查 estimator 方法在應用於資料子集時是否不變。 #10428 由 Jonathan Ohayon 貢獻。在
utils.estimator_checks.check_estimator
中新增測試,以檢查 estimator 是否可以處理唯讀 memmap 輸入資料。 #10663 由 Arthur Mensch 和 Loïc Estève 貢獻。check_sample_weights_pandas_series
現在使用 8 個而非 6 個樣本,以容納cluster.KMeans
中的預設叢集數量。 #10933 由 Johannes Hansen 貢獻。現在會檢查 estimators 是否
sample_weight=None
等同於sample_weight=np.ones(...)
。 #11558 由 Sergul Aydore 貢獻。
程式碼和文件貢獻者#
感謝自 0.19 版以來為維護和改進專案做出貢獻的所有人,包括
211217613、Aarshay Jain、absolutelyNoWarranty、Adam Greenhall、Adam Kleczewski、Adam Richie-Halford、adelr、AdityaDaflapurkar、Adrin Jalali、Aidan Fitzgerald、aishgrt1、Akash Shivram、Alan Liddell、Alan Yee、Albert Thomas、Alexander Lenail、Alexander-N、Alexandre Boucaud、Alexandre Gramfort、Alexandre Sevin、Alex Egg、Alvaro Perez-Diaz、Amanda、Aman Dalmia、Andreas Bjerre-Nielsen、Andreas Mueller、Andrew Peng、Angus Williams、Aniruddha Dave、annaayzenshtat、Anthony Gitter、Antonio Quinonez、Anubhav Marwaha、Arik Pamnani、Arthur Ozga、Artiem K、Arunava、Arya McCarthy、Attractadore、Aurélien Bellet、Aurélien Geron、Ayush Gupta、Balakumaran Manoharan、Bangda Sun、Barry Hart、Bastian Venthur、Ben Lawson、Benn Roth、Breno Freitas、Brent Yi、brett koonce、Caio Oliveira、Camil Staps、cclauss、Chady Kamar、Charlie Brummitt、Charlie Newey、chris、Chris、Chris Catalfo、Chris Foster、Chris Holdgraf、Christian Braune、Christian Hirsch、Christian Hogan、Christopher Jenness、Clement Joudet、cnx、cwitte、Dallas Card、Dan Barkhorn、Daniel、Daniel Ferreira、Daniel Gomez、Daniel Klevebring、Danielle Shwed、Daniel Mohns、Danil Baibak、Darius Morawiec、David Beach、David Burns、David Kirkby、David Nicholson、David Pickup、Derek、Didi Bar-Zev、diegodlh、Dillon Gardner、Dillon Niederhut、dilutedsauce、dlovell、Dmitry Mottl、Dmitry Petrov、Dor Cohen、Douglas Duhaime、Ekaterina Tuzova、Eric Chang、Eric Dean Sanchez、Erich Schubert、Eunji、Fang-Chieh Chou、FarahSaeed、felix、Félix Raimundo、fenx、filipj8、FrankHui、Franz Wompner、Freija Descamps、frsi、Gabriele Calvo、Gael Varoquaux、Gaurav Dhingra、Georgi Peev、Gil Forsyth、Giovanni Giuseppe Costa、gkevinyen5418、goncalo-rodrigues、Gryllos Prokopis、Guillaume Lemaitre、Guillaume “Vermeille” Sanchez、Gustavo De Mari Pereira、hakaa1、Hanmin Qin、Henry Lin、Hong、Honghe、Hossein Pourbozorg、Hristo、Hunan Rostomyan、iampat、Ivan PANICO、Jaewon Chung、Jake VanderPlas、jakirkham、James Bourbeau、James Malcolm、Jamie Cox、Jan Koch、Jan Margeta、Jan Schlüter、janvanrijn、Jason Wolosonovich、JC Liu、Jeb Bearer、jeremiedbb、Jimmy Wan、Jinkun Wang、Jiongyan Zhang、jjabl、jkleint、Joan Massich、Joël Billaud、Joel Nothman、Johannes Hansen、JohnStott、Jonatan Samoocha、Jonathan Ohayon、Jörg Döpfert、Joris Van den Bossche、Jose Perez-Parras Toledano、josephsalmon、jotasi、jschendel、Julian Kuhlmann、Julien Chaumond、julietcl、Justin Shenk、Karl F、Kasper Primdal Lauritzen、Katrin Leinweber、Kirill、ksemb、Kuai Yu、Kumar Ashutosh、Kyeongpil Kang、Kye Taylor、kyledrogo、Leland McInnes、Léo DS、Liam Geron、Liutong Zhou、Lizao Li、lkjcalc、Loic Esteve、louib、Luciano Viola、Lucija Gregov、Luis Osa、Luis Pedro Coelho、Luke M Craig、Luke Persola、Mabel、Mabel Villalba、Maniteja Nandana、MarkIwanchyshyn、Mark Roth、Markus Müller、MarsGuy、Martin Gubri、martin-hahn、martin-kokos、mathurinm、Matthias Feurer、Max Copeland、Mayur Kulkarni、Meghann Agarwal、Melanie Goetz、Michael A. Alcorn、Minghui Liu、Ming Li、Minh Le、Mohamed Ali Jamaoui、Mohamed Maskani、Mohammad Shahebaz、Muayyad Alsadi、Nabarun Pal、Nagarjuna Kumar、Naoya Kanai、Narendran Santhanam、NarineK、Nathaniel Saul、Nathan Suh、Nicholas Nadeau、P.Eng.、AVS、Nick Hoh、Nicolas Goix、Nicolas Hug、Nicolau Werneck、nielsenmarkus11、Nihar Sheth、Nikita Titov、Nilesh Kevlani、Nirvan Anjirbag、notmatthancock、nzw、Oleksandr Pavlyk、oliblum90、Oliver Rausch、Olivier Grisel、Oren Milman、Osaid Rehman Nasir、pasbi、Patrick Fernandes、Patrick Olden、Paul Paczuski、Pedro Morales、Peter、Peter St. John、pierreablin、pietruh、Pinaki Nath Chowdhury、Piotr Szymański、Pradeep Reddy Raamana、Pravar D Mahajan、pravarmahajan、QingYing Chen、Raghav RV、Rajendra arora、RAKOTOARISON Herilalaina、Rameshwar Bhaskaran、RankyLau、Rasul Kerimov、Reiichiro Nakano、Rob、Roman Kosobrodov、Roman Yurchak、Ronan Lamy、rragundez、Rüdiger Busche、Ryan、Sachin Kelkar、Sagnik Bhattacharya、Sailesh Choyal、Sam Radhakrishnan、Sam Steingold、Samuel Bell、Samuel O. Ronsin、Saqib Nizam Shamsi、SATISH J、Saurabh Gupta、Scott Gigante、Sebastian Flennerhag、Sebastian Raschka、Sebastien Dubois、Sébastien Lerique、Sebastin Santy、Sergey Feldman、Sergey Melderis、Sergul Aydore、Shahebaz、Shalil Awaley、Shangwu Yao、Sharad Vijalapuram、Sharan Yalburgi、shenhanc78、Shivam Rastogi、Shu Haoran、siftikha、Sinclert Pérez、SolutusImmensus、Somya Anand、srajan paliwal、Sriharsha Hatwar、Sri Krishna、Stefan van der Walt、Stephen McDowell、Steven Brown、syonekura、Taehoon Lee、Takanori Hayashi、tarcusx、Taylor G Smith、theriley106、Thomas、Thomas Fan、Thomas Heavey、Tobias Madsen、tobycheese、Tom Augspurger、Tom Dupré la Tour、Tommy、Trevor Stephens、Trishnendu Ghorai、Tulio Casagrande、twosigmajab、Umar Farouk Umar、Urvang Patel、Utkarsh Upadhyay、Vadim Markovtsev、Varun Agrawal、Vathsala Achar、Vilhelm von Ehrenheim、Vinayak Mehta、Vinit、Vinod Kumar L、Viraj Mavani、Viraj Navkal、Vivek Kumar、Vlad Niculae、vqean3、Vrishank Bhardwaj、vufg、wallygauze、Warut Vijitbenjaronk、wdevazelhes、Wenhao Zhang、Wes Barnett、Will、William de Vazelhes、Will Rosenfeld、Xin Xiong、Yiming (Paul) Li、ymazari、Yufeng、Zach Griffith、Zé Vinícius、Zhenqing Hu、Zhiqing Xiao、Zijie (ZJ) Poh