版本 0.19#
版本 0.19.2#
2018 年 7 月
此版本專門為了支援 Python 3.7。
版本 0.19.1#
2017 年 10 月 23 日
這是一個錯誤修復版本,包含一些小的文件改進以及對 0.19.0 中發布的功能的增強。
請注意,在此版本中,TSNE 輸出可能會有細微差異(由於 #9623),在多個樣本與某個樣本的距離相等的情況下。
變更日誌#
API 變更#
還原了
metrics.ndcg_score
和metrics.dcg_score
的新增,它們因錯誤而合併到 0.19.0 版本中。這些實現是錯誤的且未記錄。在 0.19.0 版本中新增至
model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.cross_validate
的return_train_score
,其預設值將在 0.21 版本中從 True 變更為 False。我們發現計算訓練分數在某些情況下可能對交叉驗證執行時間產生很大的影響。如果預測或評分函數速度較慢,導致對 CV 執行時間產生不利影響,則使用者應明確將return_train_score
設定為 False;如果他們希望使用計算的分數,則設定為 True。#9677 by Kumar Ashutosh 和 Joel Nothman。傳統高斯過程實作中的
correlation_models
和regression_models
已被延遲棄用。#9717 by Kumar Ashutosh。
錯誤修復#
避免
metrics.matthews_corrcoef
中的整數溢位。#9693 by Sam Steingold。修正了
manifold.TSNE
(精確和 Barnes-Hut 近似)在n_components >= 3
時的目標函數中的錯誤。#9711 by @goncalo-rodrigues。修復了
model_selection.cross_val_predict
中的回歸錯誤,當使用method='predict_proba'
時,對於某些機率分類器會引發錯誤。#9641 by James Bourbeau。修正了
datasets.make_classification
修改其輸入weights
的錯誤。#9865 by Sachin Kelkar。model_selection.StratifiedShuffleSplit
現在適用於具有 1000 多個欄位的多輸出多類別或多標籤資料。#9922 by Charlie Brummitt。修正了巢狀和條件參數設定的錯誤,例如同時設定管道步驟及其參數。#9945 by Andreas Müller 和 Joel Nothman。
在 0.19.1 中修復的 0.19.0 中的回歸錯誤
修正了隨機森林中的平行預測不是執行緒安全的錯誤,並且可能(很少)導致任意錯誤。#9830 by Joel Nothman。
修復了
model_selection.cross_val_predict
中的回歸錯誤,它不再接受以列表形式的X
。#9600 by Rasul Kerimov。修復了使用
method='decision_function'
進行二元分類的model_selection.cross_val_predict
處理。#9593 by Reiichiro Nakano 和核心開發人員。修復了
pipeline.Pipeline
中的回歸錯誤,它不再接受以元組形式的steps
。#9604 by Joris Van den Bossche。修正了
n_iter
未正確棄用的錯誤,導致n_iter
無法在linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中臨時使用。#9558 by Andreas Müller。資料集擷取器確保臨時檔案在移除之前已關閉,這會在 Windows 上造成錯誤。#9847 by Joan Massich。
修復了
manifold.TSNE
中的回歸錯誤,它不再支援 'euclidean' 和 'precomputed' 以外的指標。#9623 by Oli Blum。
增強功能#
我們的測試套件和
utils.estimator_checks.check_estimator
現在可以在不安裝 Nose 的情況下執行。#9697 by Joan Massich。為了提高 0.19 版本
pipeline.Pipeline
快取的功能性,memory
現在允許joblib.Memory
執行個體。這利用了新的utils.validation.check_memory
輔助程式。問題:9584
by Kumar Ashutosh降低基於 SGD 的估算器中 FutureWarning 的冗長程度。#9802 由 Vrishank Bhardwaj 貢獻。
程式碼與文件貢獻者#
感謝
Joel Nothman、Loic Esteve、Andreas Mueller、Kumar Ashutosh、Vrishank Bhardwaj、Hanmin Qin、Rasul Kerimov、James Bourbeau、Nagarjuna Kumar、Nathaniel Saul、Olivier Grisel、Roman Yurchak、Reiichiro Nakano、Sachin Kelkar、Sam Steingold、Yaroslav Halchenko、diegodlh、felix、goncalo-rodrigues、jkleint、oliblum90、pasbi、Anthony Gitter、Ben Lawson、Charlie Brummitt、Didi Bar-Zev、Gael Varoquaux、Joan Massich、Joris Van den Bossche、nielsenmarkus11
版本 0.19#
2017 年 8 月 12 日
重點#
我們很高興發布一些很棒的新功能,包括用於異常偵測的 neighbors.LocalOutlierFactor
、用於穩健特徵轉換的 preprocessing.QuantileTransformer
,以及用於簡單處理多標籤問題中類別之間依賴關係的 multioutput.ClassifierChain
元估算器。我們在現有的估算器中加入了一些新的演算法,例如 decomposition.NMF
中的乘法更新,以及具有 L1 損失的多元 linear_model.LogisticRegression
(使用 solver='saga'
)。
交叉驗證現在可以返回多個指標評估的結果。新的 model_selection.cross_validate
可以返回測試數據上的多個分數,以及訓練集的性能和時間,並且我們擴展了網格/隨機搜索的 scoring
和 refit
參數,以處理多個指標。
您還可以更快地學習。例如,在 pipeline.Pipeline
中 用於快取轉換的新選項,使包含慢速轉換的管道上的網格搜索更加高效。而且您可以更快地預測:如果您確定自己知道自己在做什麼,可以使用 config_context
來關閉驗證輸入是否有限。
我們也做了一些重要的修正。我們修復了 metrics.average_precision_score
中長期存在的實作錯誤,因此請小心使用該函數先前報告的結果。manifold.TSNE
實作中已修復多個錯誤,尤其是在預設的 Barnes-Hut 近似中。semi_supervised.LabelSpreading
和 semi_supervised.LabelPropagation
已進行了實質性的修復。LabelPropagation 先前已損壞。LabelSpreading 現在應該正確地遵守其 alpha 參數。
已更改的模型#
以下估算器和函數,當使用相同的數據和參數進行擬合時,可能會產生與先前版本不同的模型。這通常是由於建模邏輯(錯誤修復或增強)或隨機取樣程序的變更而發生。
cluster.KMeans
使用稀疏 X 和給定的初始質心 (錯誤修復)cross_decomposition.PLSRegression
使用scale=True
(錯誤修復)ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
其中使用min_impurity_split
(錯誤修復)梯度提升
loss='quantile'
(錯誤修復)ensemble.IsolationForest
(錯誤修復)feature_selection.SelectFdr
(錯誤修復)linear_model.RANSACRegressor
(錯誤修復)linear_model.LassoLars
(錯誤修復)linear_model.LassoLarsIC
(錯誤修復)manifold.TSNE
(錯誤修復)neighbors.NearestCentroid
(錯誤修復)使用
min_weight_fraction_leaf
的基於樹的模型 (增強功能)model_selection.StratifiedKFold
使用shuffle=True
(由於 #7823,此變更當時未在發行說明中提及)
詳細資訊列在下方的變更日誌中。
(雖然我們試圖透過提供此資訊來更好地通知使用者,但我們無法保證此列表是完整的。)
變更日誌#
新功能#
分類器和回歸器
新增用於多標籤分類的
multioutput.ClassifierChain
。由 Adam Kleczewski 貢獻。在
linear_model.LogisticRegression
和linear_model.Ridge
中新增實作改進版本的隨機平均梯度 (Stochastic Average Gradient) 的求解器'saga'
。它允許使用具有多元邏輯損失的 L1 懲罰,並且在嶺迴歸和邏輯迴歸的最初階段表現略優於 ‘sag’。#8446 由 Arthur Mensch 貢獻。
其他估算器
新增了
neighbors.LocalOutlierFactor
類別,用於基於最近鄰的異常檢測。#5279 由 Nicolas Goix 和 Alexandre Gramfort 貢獻。新增了
preprocessing.QuantileTransformer
類別和preprocessing.quantile_transform
函式,用於基於分位數的特徵正規化。#8363 由 Denis Engemann、Guillaume Lemaitre、Olivier Grisel、Raghav RV、Thierry Guillemot 和 Gael Varoquaux 貢獻。新的求解器
'mu'
在decomposition.NMF
中實現了乘法更新,允許優化所有 beta 散度,包括 Frobenius 範數、廣義 Kullback-Leibler 散度和 Itakura-Saito 散度。#5295 由 Tom Dupre la Tour 貢獻。
模型選擇和評估
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
現在支援同時評估多個指標。有關更多資訊,請參閱使用者指南的 指定多個評估指標 章節。#7388 由 Raghav RV 貢獻。新增了
model_selection.cross_validate
,允許評估多個指標。此函式會傳回一個字典,其中包含來自交叉驗證的更多有用資訊,例如訓練分數、擬合時間和評分時間。有關更多資訊,請參閱使用者指南的 cross_validate 函式和多指標評估 章節。#7388 由 Raghav RV 貢獻。新增了
metrics.mean_squared_log_error
,用於計算目標變數對數轉換後的均方誤差,特別適用於具有指數趨勢的目標變數。#7655 由 Karan Desai 貢獻。新增了
metrics.dcg_score
和metrics.ndcg_score
,用於計算折扣累積增益 (DCG) 和標準化折扣累積增益 (NDCG)。#7739 由 David Gasquez 貢獻。新增了
model_selection.RepeatedKFold
和model_selection.RepeatedStratifiedKFold
。#8120 由 Neeraj Gangwar 貢獻。
其他
現在可以使用
config_context
來抑制對輸入資料不包含 NaN 或 inf 的驗證(風險自負)。這將節省執行時間,並且可能在預測時特別有用。#7548 由 Joel Nothman 貢獻。新增了一項測試,以確保 docstring 中的參數清單與函式/類別簽名一致。#9206 由 Alexandre Gramfort 和 Raghav RV 貢獻。
增強功能#
樹和集成
樹建構中的
min_weight_fraction_leaf
限制現在更有效率,如果節點的權重小於最小值的 2 倍,則會採取快速路徑來宣告節點為葉節點。請注意,使用min_weight_fraction_leaf
建構的樹將與先前版本不同。#7441 由 Nelson Liu 貢獻。ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
現在支援用於預測的稀疏輸入。#6101 由 Ibraim Ganiev 貢獻。ensemble.VotingClassifier
現在允許使用ensemble.VotingClassifier.set_params
來變更估算器。也可以透過將估算器設定為None
來移除估算器。#7674 由 Yichuan Liu 貢獻。tree.export_graphviz
現在顯示可配置的小數位數。#8698 由 Guillaume Lemaitre 貢獻。新增了
flatten_transform
參數到ensemble.VotingClassifier
,以將transform
方法的輸出形狀變更為 2 維。#7794 由 Ibraim Ganiev 和 Herilalaina Rakotoarison 貢獻。
線性、核化和相關模型
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
現在公開max_iter
和tol
參數,以便更精確地處理收斂。n_iter
參數已棄用,並且擬合的估算器會公開一個n_iter_
屬性,其中包含收斂前的實際迭代次數。#5036 由 Tom Dupre la Tour 貢獻。在
linear_model.PassiveAggressiveClassifier
中新增了average
參數來執行權重平均。#4939 由 Andrea Esuli 貢獻。linear_model.RANSACRegressor
如果在第一次迭代中找不到任何內部值,則在呼叫fit
時不再擲回錯誤。此外,跳過的迭代原因會追蹤到新增加的屬性n_skips_*
中。#7914 由 Michael Horrell 貢獻。在
gaussian_process.GaussianProcessRegressor
中,使用return_std=True
時,predict
方法的速度會快很多。#8591 由 Hadrien Bertrand 貢獻。為
linear_model.ARDRegression
和linear_model.BayesianRidge
的predict
方法新增了return_std
參數。#7838 由 Sergey Feldman 貢獻。記憶體使用增強:防止在以下情況下將 float32 強制轉換為 float64:
linear_model.MultiTaskElasticNet
;使用 newton-cg 求解器的linear_model.LogisticRegression
;以及使用 svd、sparse_cg、cholesky 或 lsqr 求解器的linear_model.Ridge
。#8835, #8061 由 Joan Massich 和 Nicolas Cordier 以及 Thierry Guillemot 貢獻。
其他預測器
現在,
sklearn.neighbors
二元樹的自訂指標限制更少:它們必須接受兩個 1 維陣列並返回一個浮點數。#6288 由 Jake Vanderplas 貢獻。現在,
sklearn.neighbors
估計器中的algorithm='auto'
會為所有輸入類型和指標選擇最適合的演算法。#9145 由 Herilalaina Rakotoarison 和 Reddy Chinthala 貢獻。
分解、流形學習和群集
現在,當將資料點分配到最近的群集中心時,
cluster.MiniBatchKMeans
和cluster.KMeans
使用的記憶體顯著減少。#7721 由 Jon Crall 貢獻。現在,
decomposition.PCA
、decomposition.IncrementalPCA
和decomposition.TruncatedSVD
會公開底層 SVD 的奇異值。它們會像在decomposition.IncrementalPCA
中一樣,儲存在屬性singular_values_
中。#7685 由 Tommy Löfstedt 貢獻。現在,當
beta_loss=0
時,decomposition.NMF
的速度更快。#9277 由 @hongkahjun 貢獻。針對
manifold.TSNE
中的barnes_hut
方法的記憶體改進。#7089 由 Thomas Moreau 和 Olivier Grisel 貢獻。針對 Barnes-Hut
manifold.TSNE
的最佳化排程改進,因此結果更接近參考實作 lvdmaaten/bhtsne 的結果,由 Thomas Moreau 和 Olivier Grisel 貢獻。記憶體使用增強:防止在
decomposition.PCA
和decomposition.randomized_svd_low_rank
中將 float32 強制轉換為 float64。#9067 由 Raghav RV 貢獻。
預處理和特徵選擇
為
feature_selection.SelectFromModel
新增了norm_order
參數,以便在coef_
大於 1D 時能夠選擇範數階數。#6181 由 Antoine Wendlinger 貢獻。新增在
center=True
的情況下,在feature_selection.f_regression
中使用稀疏矩陣的功能。#8065 由 Daniel LeJeune 貢獻。透過繫結迴圈的方法和特殊情況處理 unigram,
sklearn.feature_extraction.text
中 n-gram 的建立效能略有提升。#7567 由 Jaye Doepke 貢獻。放寬對
kernel_approximation.SkewedChi2Sampler
資料的假設。由於 Skewed-Chi2 核定義在開放區間 \((-skewedness; +\infty)^d\) 上,因此轉換函數不應檢查X < 0
,而應檢查X < -self.skewedness
。#7573 由 Romain Brault 貢獻。在
kernel_approximation.Nystroem
中將預設核心參數設定為與核心相關。#5229 由 Saurabh Bansod 和 Andreas Müller 貢獻。
模型評估和元估計器
現在,
pipeline.Pipeline
可以透過使用memory
建構函式參數來快取管道中的轉換器。#7990 由 Guillaume Lemaitre 貢獻。現在,可以將
pipeline.Pipeline
的步驟作為其named_steps
屬性的屬性來存取。#8586 由 Herilalaina Rakotoarison 貢獻。為
pipeline.Pipeline.score
新增了sample_weight
參數。#7723 由 Mikhail Korobov 貢獻。新增將
n_jobs
參數設定到pipeline.make_union
的功能。任何其他 kwargs 都會引發TypeError
。#8028 由 Alexander Booth 貢獻。model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.cross_val_score
現在允許使用可呼叫的核心(callable kernels)的估算器,這在之前是被禁止的。 由 Andreas Müller 提出的 #8005。model_selection.cross_val_predict
現在針對引數method
的所有值都回傳正確形狀的輸出。由 Aman Dalmia 提出的 #7863。在
model_selection.learning_curve
中,新增了shuffle
和random_state
參數,以便在根據訓練大小取得訓練資料的前綴之前,先對訓練資料進行洗牌。由 Narine Kokhlikyan 提出的 #7506。model_selection.StratifiedShuffleSplit
現在可以處理多輸出多類別(或多標籤)資料。由 Vlad Niculae 提出的 #9044。加速了
model_selection.StratifiedShuffleSplit
的效能。由 Arthur Mensch 和 Joel Nothman 提出的 #5991。在
model_selection.train_test_split
中新增shuffle
參數。由 themrmax 提出的 #8845。multioutput.MultiOutputRegressor
和multioutput.MultiOutputClassifier
現在支援使用partial_fit
的線上學習。由 Peng Yu 提出的問題8053
。在
model_selection.TimeSeriesSplit
中新增max_train_size
參數。由 Aman Dalmia 提出的 #8282。現在可以透過
metrics.get_scorer
和scoring
參數取得更多的群集度量。由 Raghav RV 提出的 #8117。現在也提供基於
metrics.explained_variance_score
的評分器。由 Hanmin Qin 提出的 #9259。
度量
metrics.matthews_corrcoef
現在支援多類別分類。由 Jon Crall 提出的 #8094。在
metrics.cohen_kappa_score
中新增sample_weight
參數。由 Victor Poughon 提出的 #8335。
其他
utils.estimator_checks.check_estimator
現在會嘗試確保方法 transform、predict 等不會在估算器上設定屬性。由 Ekaterina Krivich 提出的 #7533。在
sklearn.utils.validation
方法中,對accept_sparse
參數新增了類型檢查。此參數現在只接受布林值、字串或字串的清單/元組。accept_sparse=None
已被棄用,應改用accept_sparse=False
。由 Josh Karnofsky 提出的 #7880。現在可以透過將位元組範圍傳遞給
datasets.load_svmlight_file
,來載入 svmlight 格式檔案的區塊。由 Olivier Grisel 提出的 #935。dummy.DummyClassifier
和dummy.DummyRegressor
現在接受非有限的特徵。由 @Attractadore 提出的 #8931。
錯誤修正#
樹和集成
修正了在使用
criterion='mae'
的樹時,樹中發生的記憶體洩漏。由 Raghav RV 提出的 #8002。修正了
ensemble.IsolationForest
使用錯誤的平均路徑長度公式的錯誤。由 Peter Wang 提出的 #8549。修正了當
ensemble.AdaBoostClassifier
擬合具有單一類別標籤的資料時,會拋出ZeroDivisionError
的錯誤。由 Dominik Krzeminski 提出的 #7501。修正了在
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
中,使用==
將浮點數與0.0
比較而導致除以零錯誤的錯誤。由 He Chen 提出的 #7970。修正了
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
忽略min_impurity_split
參數的錯誤。由 Sebastian Pölsterl 提出的 #8006。修正了
ensemble.BaggingClassifier
中的oob_score
。由 Michael Lewis 提出的 #8936。修正了隨機森林估算器在預測時的過度記憶體使用量。由 Mike Benfield 提出的 #8672。
修正了
sample_weight
作為清單時,在 Python 2 中導致隨機森林崩潰的錯誤。由 @xor 提出的 #8068。修正了當
max_features
小於 1 時,ensemble.IsolationForest
失敗的錯誤。#5732 由 Ishank Gulati 貢獻。修正了當使用
loss='quantile'
的梯度提升時,對於ytrue - ypred
的負值會計算出負誤差,導致呼叫__call__
時產生錯誤值的錯誤。#8087 由 Alexis Mignon 貢獻。修正了當權重傳入 numpy 陣列時,
ensemble.VotingClassifier
會引發錯誤的錯誤。#7983 由 Vincent Pham 貢獻。修正了當 features_names 的長度與決策樹中的 n_features 不符時,
tree.export_graphviz
會引發錯誤的錯誤。#8512 由 Li Li 貢獻。
線性、核化和相關模型
修正了如果
linear_model.RANSACRegressor.fit
早期發現大型內群組時,可能會執行到max_iter
的錯誤。#8251 由 @aivision2020 貢獻。修正了當
alpha=0
時,naive_bayes.MultinomialNB
和naive_bayes.BernoulliNB
會失敗的錯誤。#5814 由 Yichuan Liu 和 Herilalaina Rakotoarison 貢獻。修正了
linear_model.LassoLars
的結果與 R 中可用的 LassoLars 實作(lars 函式庫)不一致的錯誤。#7849 由 Jair Montoya Martinez 貢獻。修正了
linear_model.RandomizedLasso
、linear_model.Lars
、linear_model.LassoLars
、linear_model.LarsCV
和linear_model.LassoLarsCV
中的錯誤,其中參數precompute
在不同類別之間使用不一致,並且 docstring 中建議的一些值可能會引發錯誤。#5359 由 Tom Dupre la Tour 貢獻。修正了當使用
normalize=True
時,linear_model.RidgeCV
和linear_model.Ridge
之間結果不一致的錯誤。#9302 由 Alexandre Gramfort 貢獻。修正了
linear_model.LassoLars.fit
有時會將coef_
保留為列表,而不是 ndarray 的錯誤。#8160 由 CJ Carey 貢獻。修正了
linear_model.BayesianRidge.fit
以返回與計算出的係數coef_
和intercept_
一致的 ridge 參數alpha_
和lambda_
。#8224 由 Peter Gedeck 貢獻。修正了
svm.OneClassSVM
返回浮點數而不是整數類別的錯誤。#8676 由 Vathsala Achar 貢獻。修正了
linear_model.LassoLarsIC
中的 AIC/BIC 標準計算。#9022 由 Alexandre Gramfort 和 Mehmet Basbug 貢獻。修正了我們 LibLinear 實作中的記憶體洩漏。#9024 由 Sergei Lebedev 貢獻。
修正了分層 CV 分割器無法與
linear_model.LassoCV
一起使用的錯誤。#8973 由 Paulo Haddad 貢獻。修正了當未擬合時預測的標準差和共變異數預設會產生無意義錯誤時,
gaussian_process.GaussianProcessRegressor
中的錯誤。#6573 由 Quazi Marufur Rahman 和 Manoj Kumar 貢獻。
其他預測器
修正
semi_supervised.BaseLabelPropagation
以正確實作參考論文中完成的LabelPropagation
和LabelSpreading
。#9239 由 Andre Ambrosio Boechat、Utkarsh Upadhyay 和 Joel Nothman 貢獻。
分解、流形學習和群集
修正了
manifold.TSNE
的實作early_exageration
參數沒有效果,現在用於前 250 次最佳化迭代。修正了在 #8992 中回報的
AssertionError: Tree consistency failed
例外狀況。改善學習排程以符合參考實作 lvdmaaten/bhtsne 中的排程。由 Thomas Moreau 和 Olivier Grisel 貢獻。
修正了在
decomposition.LatentDirichletAllocation
中,由於從 0.18 版本開始,transform
方法會返回標準化的文件主題分佈,導致perplexity
方法返回錯誤結果的錯誤。#7954 由 Gary Foreman 貢獻。修正了當 n_jobs > 1 時,
decomposition.SparseCoder
轉換和decomposition.sparse_encode
對於一維資料和一個組件的輸出形狀和錯誤。這也影響了decomposition.DictionaryLearning
的輸出形狀。#8086 由 Andreas Müller 貢獻。修正了
decomposition.PCA
、decomposition.RandomizedPCA
和decomposition.IncrementalPCA
中的explained_variance_
實作。#9105 由 Hanmin Qin 貢獻。修正了
decomposition.PCA
中的noise_variance_
實作。#9108 由 Hanmin Qin 貢獻。修正了當輸入為初始列皆為零的預先計算稀疏矩陣時,
cluster.DBSCAN
產生錯誤結果的錯誤。#8306,由 Akshay Gupta 貢獻。修正了關於使用稀疏陣列 X 和初始質心擬合
cluster.KMeans
的錯誤,其中 X 的均值被不必要地從質心中減去。#7872,由 Josh Karnofsky 貢獻。修正了
covariance.EllipticEnvelope
中的輸入驗證。#8086,由 Andreas Müller 貢獻。修正了
covariance.MinCovDet
中的錯誤,當輸入產生奇異共變異數矩陣的資料時,會導致輔助方法_c_step
拋出異常。#3367,由 Jeremy Steward 貢獻。修正了
manifold.TSNE
中影響梯度下降收斂的錯誤。#8768,由 David DeTomaso 貢獻。修正了
manifold.TSNE
中儲存不正確的kl_divergence_
的錯誤。#6507,由 Sebastian Saeger 貢獻。修正了
cross_decomposition.PLSRegression
中scale=True
時的不正確縮放。#7819,由 jayzed82 貢獻。cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的fit
方法符合 API,接受y
並返回物件。#6126、#7814,由 Laurent Direr 和 Maniteja Nandana 貢獻。修正了
sklearn.mixture
的sample
方法沒有返回所要求的樣本數量的錯誤。#7702,由 Levi John Wolf 貢獻。修正了
neighbors.NearestCentroid
中的收縮實作。#9219,由 Hanmin Qin 貢獻。
預處理和特徵選擇
對於稀疏矩陣,使用
return_norm=True
的preprocessing.normalize
現在將會在使用 ‘l1’ 或 ‘l2’ 範數時引發NotImplementedError
,並且在使用 ‘max’ 範數時,返回的範數將與密集矩陣相同。#7771,由 Ang Lu 貢獻。修正了
feature_selection.SelectFdr
沒有精確實作 Benjamini-Hochberg 程序的錯誤。它以前可能會選擇比它應該選擇的更少的特徵。#7490,由 Peng Meng 貢獻。修正了
linear_model.RandomizedLasso
和linear_model.RandomizedLogisticRegression
在稀疏輸入下崩潰的錯誤。#8259,由 Aman Dalmia 貢獻。修正了
feature_extraction.FeatureHasher
強制對雜湊特徵應用稀疏隨機投影,阻止了在具有feature_extraction.text.TfidfTransformer
的管道中使用feature_extraction.text.HashingVectorizer
的錯誤。#7565,由 Roman Yurchak 貢獻。修正了
feature_selection.mutual_info_regression
沒有正確使用n_neighbors
的錯誤。#8181,由 Guillaume Lemaitre 貢獻。
模型評估和元估計器
修正了
model_selection.BaseSearchCV.inverse_transform
返回self.best_estimator_.transform()
而不是self.best_estimator_.inverse_transform()
的錯誤。#8344,由 Akshay Gupta 和 Rasmus Eriksson 貢獻。新增了
classes_
屬性到model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
、grid_search.GridSearchCV
和grid_search.RandomizedSearchCV
,該屬性與best_estimator_
的classes_
屬性相符。#7661 和 #8295,由 Alyssa Batula、Dylan Werner-Meier 和 Stephen Hoover 貢獻。修正了
model_selection.validation_curve
為每個參數值重複使用相同估計器的錯誤。#7365,由 Aleksandr Sandrovskii 貢獻。model_selection.permutation_test_score
現在可以使用 Pandas 類型。#5697,由 Stijn Tonk 貢獻。對
multiclass.OutputCodeClassifier
進行了多項輸入驗證的修正。#8086,由 Andreas Müller 貢獻。multiclass.OneVsOneClassifier
的partial_fit
現在確保所有類別都預先提供。#6250,由 Asish Panda 貢獻。修正了
multioutput.MultiOutputClassifier.predict_proba
以返回 2 維陣列的列表,而不是 3 維陣列。在不同目標列具有不同類別數量的情況下,嘗試堆疊具有不同維度的矩陣時會引發ValueError
。#8093,由 Peter Bull 貢獻。交叉驗證現在可以使用具有唯讀索引的 Pandas 資料類型。#9507,由 Loic Esteve 貢獻。
度量
metrics.average_precision_score
不再在操作點之間線性內插,而是根據自上次操作點以來召回率的變化來權衡精確度,如 Wikipedia 條目所示。(#7356)。由 Nick Dingwall 和 Gael Varoquaux 貢獻。修正了
metrics.classification._check_targets
中的錯誤,如果y_true
和y_pred
都是'binary'
,但y_true
和y_pred
的聯集是'multiclass'
,則會返回'binary'
。#8377,由 Loic Esteve 貢獻。修正了
metrics.confusion_matrix
中的整數溢位錯誤,並因此修正了metrics.cohen_kappa_score
中的錯誤。#8354、#7929,由 Joel Nothman 和 Jon Crall 貢獻。修正了將
gamma
參數傳遞至metrics.pairwise.pairwise_kernels
中chi2
核心的問題。#5211,由 Nick Rhinehart、Saurabh Bansod 和 Andreas Müller 貢獻。
其他
修正了當產生超過 30 個特徵時,
datasets.make_classification
失敗的錯誤。#8159,由 Herilalaina Rakotoarison 貢獻。修正了當
n_samples
為奇數時,datasets.make_moons
產生不正確結果的錯誤。#8198,由 Josh Levy 貢獻。sklearn.datasets
中的一些fetch_
函數忽略了download_if_missing
關鍵字。#7944,由 Ralf Gommers 貢獻。修正了估算器在其
fit
函數中接受pandas.Series
類型的sample_weight
參數的問題。#7825,由 Kathleen Chen 貢獻。修正了
numpy.cumsum
可能在數值上不穩定的情況下的錯誤,如果偵測到不穩定性,則會引發例外。#7376 和 #7331,由 Joel Nothman 和 @yangarbiter 貢獻。修正了當在多重繼承環境中使用時,
base.BaseEstimator.__getstate__
阻礙子類別 pickle 客製化的錯誤。#8316,由 Holger Peters 貢獻。將 Sphinx-Gallery 從 0.1.4 更新至 0.1.7,以解決使用 Sphinx>1.5 建構的文件中的連結問題。#8010、#7986,由 Oscar Najera 貢獻
將
data_home
參數新增至sklearn.datasets.fetch_kddcup99
。#9289,由 Loic Esteve 貢獻。修正了使用 Python 3 版本的 makedirs 的資料集載入器,使其也能在 Python 2 中運作的問題。#9284,由 Sebastin Santy 貢獻。
修正了一些次要問題,感謝 lgtm.com 的警報。#9278,由 Jean Helie 等人貢獻。
API 變更摘要#
樹和集成
梯度提升基礎模型不再是估算器。由 Andreas Müller 貢獻。
所有基於樹的估算器現在都接受
min_impurity_decrease
參數,以取代現在已棄用的min_impurity_split
。min_impurity_decrease
有助於停止分割節點,其中分割的加權雜質減少量不再至少為min_impurity_decrease
。#8449,由 Raghav RV 貢獻。
線性、核化和相關模型
n_iter
參數在linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中已棄用。由 Tom Dupre la Tour 貢獻。
其他預測器
neighbors.LSHForest
已棄用,並將在 0.21 版中移除,因為效能不佳。#9078,由 Laurent Direr 貢獻。neighbors.NearestCentroid
不再宣稱支援metric='precomputed'
,現在會引發錯誤。#8515,由 Sergul Aydore 貢獻。semi_supervised.LabelPropagation
的alpha
參數現在無效,並已棄用,將在 0.21 版中移除。#9239,由 Andre Ambrosio Boechat、Utkarsh Upadhyay 和 Joel Nothman 貢獻。
分解、流形學習和群集
棄用
decomposition.LatentDirichletAllocation
中perplexity
方法的doc_topic_distr
引數,因為使用者不再有權存取 perplexity 計算所需的未正規化文件主題分佈。#7954,由 Gary Foreman 貢獻。decomposition.LatentDirichletAllocation
的n_topics
參數已重新命名為n_components
,並將在 0.21 版中移除。#8922,由 @Attractadore 貢獻。decomposition.SparsePCA.transform
的ridge_alpha
參數已棄用,優先使用類別參數。#8137,由 Naoya Kanai 貢獻。cluster.DBSCAN
現在具有metric_params
參數。#8139,由 Naoya Kanai 貢獻。
預處理和特徵選擇
feature_selection.SelectFromModel
現在僅在基礎估算器執行時才具有partial_fit
方法。由 Andreas Müller 貢獻。feature_selection.SelectFromModel
現在會在呼叫fit
時驗證threshold
參數,並設定threshold_
屬性,而不再是在呼叫transform
時。由 Andreas Müller 貢獻。feature_extraction.FeatureHasher
中的non_negative
參數已被棄用,並以更具原則性的替代方案alternate_sign
取代。#7565 由 Roman Yurchak 貢獻。linear_model.RandomizedLogisticRegression
和linear_model.RandomizedLasso
已被棄用,並將在 0.21 版本中移除。#8995 由 Ramana.S 貢獻。
模型評估和元估計器
棄用傳遞給
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
的fit_params
建構函式輸入,改為將關鍵字參數傳遞給這些類別的fit
方法。模型訓練所需的資料相關參數應作為關鍵字引數傳遞給fit
,並且符合此慣例將允許將超參數選擇類別與諸如model_selection.cross_val_predict
之類的工具一起使用。#2879 由 Stephen Hoover 貢獻。在 0.21 版本中,使用
test_size
和train_size
參數的分割器的預設行為將會變更,使得僅指定train_size
會導致test_size
成為剩餘的部分。#7459 由 Nelson Liu 貢獻。multiclass.OneVsRestClassifier
現在只有在底層估算器也具有時,才會具有partial_fit
、decision_function
和predict_proba
方法。#7812 由 Andreas Müller 和 Mikhail Korobov 貢獻。multiclass.OneVsRestClassifier
現在只有在底層估算器也具有時,才會具有partial_fit
方法。由 Andreas Müller 貢獻。為了符合 scikit-learn 的慣例,
multiclass.OneVsRestClassifier
和multiclass.OneVsOneClassifier
中二元分類的decision_function
輸出形狀現在為(n_samples,)
。#9100 由 Andreas Müller 貢獻。multioutput.MultiOutputClassifier.predict_proba
函式過去會回傳 3 維陣列 (n_samples
,n_classes
,n_outputs
)。在不同目標欄位具有不同類別數目的情況下,嘗試堆疊不同維度的矩陣時會引發ValueError
。此函式現在會回傳陣列列表,其中列表的長度為n_outputs
,且每個陣列對於該特定輸出都是 (n_samples
,n_classes
)。#8093 由 Peter Bull 貢獻。將
pipeline.Pipeline
中的named_steps
dict
屬性取代為utils.Bunch
,以啟用在互動式環境中的 Tab 鍵補全功能。在named_steps
和dict
屬性上發生衝突值的情況下,將優先使用dict
行為。#8481 由 Herilalaina Rakotoarison 貢獻。
其他
棄用
transform
和inverse_transform
中的y
參數。此方法不應接受y
參數,因為它在預測時使用。#8174 由 Tahar Zanouda、Alexandre Gramfort 和 Raghav RV 貢獻。SciPy >= 0.13.3 和 NumPy >= 1.8.2 現在是 scikit-learn 的最低支援版本。已移除或相應地棄用
sklearn.utils
中以下的回溯移植函式。#8854 和 #8874 由 Naoya Kanai 貢獻為了與
discriminant_analysis.LinearDiscriminantAnalysis
的對應參數名稱一致,已將discriminant_analysis.QuadraticDiscriminantAnalysis
的store_covariances
和covariances_
參數重新命名為store_covariance
和covariance_
。它們將在 0.21 版本中移除。#7998 由 Jiacheng 貢獻已於 0.19 中移除
utils.fixes.argpartition
utils.fixes.array_equal
utils.fixes.astype
utils.fixes.bincount
utils.fixes.expit
utils.fixes.frombuffer_empty
utils.fixes.in1d
utils.fixes.norm
utils.fixes.rankdata
utils.fixes.safe_copy
已於 0.19 中棄用,將於 0.21 中移除
utils.arpack.eigs
utils.arpack.eigsh
utils.arpack.svds
utils.extmath.fast_dot
utils.extmath.logsumexp
utils.extmath.norm
utils.extmath.pinvh
utils.graph.graph_laplacian
utils.random.choice
utils.sparsetools.connected_components
utils.stats.rankdata
現在要求具有
decision_function
和predict_proba
方法的估算器,兩者之間具有單調關係。已在 **utils.estimator_checks** 中新增方法check_decision_proba_consistency
,以檢查它們的一致性。#7578 由 Shubham Bhardwaj 貢獻utils.estimator_checks
中的所有檢查,特別是utils.estimator_checks.check_estimator
,現在接受估算器實例。大多數其他檢查不再接受估算器類別。#9019 由 Andreas Müller 貢獻。確保以
_
結尾的估算器屬性不是在建構函式中設定,而是僅在fit
方法中設定。最值得注意的是,集成估算器(衍生自ensemble.BaseEnsemble
)現在只有在fit
之後才具有self.estimators_
。#7464 由 Lars Buitinck 和 Loic Esteve 貢獻。
程式碼和文件貢獻者#
感謝自 0.18 版本以來為維護和改進專案做出貢獻的所有人,包括
Joel Nothman、Loic Esteve、Andreas Mueller、Guillaume Lemaitre、Olivier Grisel、Hanmin Qin、Raghav RV、Alexandre Gramfort、themrmax、Aman Dalmia、Gael Varoquaux、Naoya Kanai、Tom Dupré la Tour、Rishikesh、Nelson Liu、Taehoon Lee、Nelle Varoquaux、Aashil、Mikhail Korobov、Sebastin Santy、Joan Massich、Roman Yurchak、RAKOTOARISON Herilalaina、Thierry Guillemot、Alexandre Abadie、Carol Willing、Balakumaran Manoharan、Josh Karnofsky、Vlad Niculae、Utkarsh Upadhyay、Dmitry Petrov、Minghui Liu、Srivatsan、Vincent Pham、Albert Thomas、Jake VanderPlas、Attractadore、JC Liu、alexandercbooth、chkoar、Óscar Nájera、Aarshay Jain、Kyle Gilliam、Ramana Subramanyam、CJ Carey、Clement Joudet、David Robles、He Chen、Joris Van den Bossche、Karan Desai、Katie Luangkote、Leland McInnes、Maniteja Nandana、Michele Lacchia、Sergei Lebedev、Shubham Bhardwaj、akshay0724、omtcyfz、rickiepark、waterponey、Vathsala Achar、jbDelafosse、Ralf Gommers、Ekaterina Krivich、Vivek Kumar、Ishank Gulati、Dave Elliott、ldirer、Reiichiro Nakano、Levi John Wolf、Mathieu Blondel、Sid Kapur、Dougal J. Sutherland、midinas、mikebenfield、Sourav Singh、Aseem Bansal、Ibraim Ganiev、Stephen Hoover、AishwaryaRK、Steven C. Howell、Gary Foreman、Neeraj Gangwar、Tahar、Jon Crall、dokato、Kathy Chen、ferria、Thomas Moreau、Charlie Brummitt、Nicolas Goix、Adam Kleczewski、Sam Shleifer、Nikita Singh、Basil Beirouti、Giorgio Patrini、Manoj Kumar、Rafael Possas、James Bourbeau、James A. Bednar、Janine Harper、Jaye、Jean Helie、Jeremy Steward、Artsiom、John Wei、Jonathan LIgo、Jonathan Rahn、seanpwilliams、Arthur Mensch、Josh Levy、Julian Kuhlmann、Julien Aubert、Jörn Hees、Kai、shivamgargsya、Kat Hempstalk、Kaushik Lakshmikanth、Kennedy、Kenneth Lyons、Kenneth Myers、Kevin Yap、Kirill Bobyrev、Konstantin Podshumok、Arthur Imbert、Lee Murray、toastedcornflakes、Lera、Li Li、Arthur Douillard、Mainak Jas、tobycheese、Manraj Singh、Manvendra Singh、Marc Meketon、MarcoFalke、Matthew Brett、Matthias Gilch、Mehul Ahuja、Melanie Goetz、Meng、Peng、Michael Dezube、Michal Baumgartner、vibrantabhi19、Artem Golubin、Milen Paskov、Antonin Carette、Morikko、MrMjauh、NALEPA Emmanuel、Namiya、Antoine Wendlinger、Narine Kokhlikyan、NarineK、Nate Guerin、Angus Williams、Ang Lu、Nicole Vavrova、Nitish Pandey、Okhlopkov Daniil Olegovich、Andy Craze、Om Prakash、Parminder Singh、Patrick Carlson、Patrick Pei、Paul Ganssle、Paulo Haddad、Paweł Lorek、Peng Yu、Pete Bachant、Peter Bull、Peter Csizsek、Peter Wang、Pieter Arthur de Jong、Ping-Yao, Chang、Preston Parry、Puneet Mathur、Quentin Hibon、Andrew Smith、Andrew Jackson、1kastner、Rameshwar Bhaskaran、Rebecca Bilbro、Remi Rampin、Andrea Esuli、Rob Hall、Robert Bradshaw、Romain Brault、Aman Pratik、Ruifeng Zheng、Russell Smith、Sachin Agarwal、Sailesh Choyal、Samson Tan、Samuël Weber、Sarah Brown、Sebastian Pölsterl、Sebastian Raschka、Sebastian Saeger、Alyssa Batula、Abhyuday Pratap Singh、Sergey Feldman、Sergul Aydore、Sharan Yalburgi、willduan、Siddharth Gupta、Sri Krishna、Almer、Stijn Tonk、Allen Riddell、Theofilos Papapanagiotou、Alison、Alexis Mignon、Tommy Boucher、Tommy Löfstedt、Toshihiro Kamishima、Tyler Folkman、Tyler Lanigan、Alexander Junge、Varun Shenoy、Victor Poughon、Vilhelm von Ehrenheim、Aleksandr Sandrovskii、Alan Yee、Vlasios Vasileiou、Warut Vijitbenjaronk、Yang Zhang、Yaroslav Halchenko、Yichuan Liu、Yuichi Fujikawa、affanv14、aivision2020、xor、andreh7、brady salz、campustrampus、Agamemnon Krasoulis、ditenberg、elena-sharova、filipj8、fukatani、gedeck、guiniol、guoci、hakaa1、hongkahjun、i-am-xhy、jakirkham、jaroslaw-weber、jayzed82、jeroko、jmontoyam、jonathan.striebel、josephsalmon、jschendel、leereeves、martin-hahn、mathurinm、mehak-sachdeva、mlewis1729、mlliou112、mthorrell、ndingwall、nuffe、yangarbiter、plagree、pldtc325、Breno Freitas、Brett Olsen、Brian A. Alfano、Brian Burns、polmauri、Brandon Carter、Charlton Austin、Chayant T15h、Chinmaya Pancholi、Christian Danielsen、Chung Yen、Chyi-Kwei Yau、pravarmahajan、DOHMATOB Elvis、Daniel LeJeune、Daniel Hnyk、Darius Morawiec、David DeTomaso、David Gasquez、David Haberthür、David Heryanto、David Kirkby、David Nicholson、rashchedrin、Deborah Gertrude Digges、Denis Engemann、Devansh D、Dickson、Bob Baxley、Don86、E. Lynch-Klarup、Ed Rogers、Elizabeth Ferriss、Ellen-Co2、Fabian Egli、Fang-Chieh Chou、Bing Tian Dai、Greg Stupp、Grzegorz Szpak、Bertrand Thirion、Hadrien Bertrand、Harizo Rajaona、zxcvbnius、Henry Lin、Holger Peters、Icyblade Dai、Igor Andriushchenko、Ilya、Isaac Laughlin、Iván Vallés、Aurélien Bellet、JPFrancoia、Jacob Schreiber、Asish Mahapatra