版本 0.17#
版本 0.17.1#
2016 年 2 月 18 日
變更日誌#
錯誤修復#
升級供應商 joblib 至 0.9.4 版本,修復了
joblib.Parallel
中的一個重要錯誤,當處理大於 1MB 的資料集時,可能會靜默地產生錯誤的結果:joblib/joblib修正了讀取使用 scikit-learn 版本 <= 0.16 產生的 Bunch pickles 的問題。這可能會影響已經使用 scikit-learn 0.16 下載資料集並使用 scikit-learn 0.17 載入的用戶。請參閱 #6196,了解這如何影響
datasets.fetch_20newsgroups
。由 Loic Esteve 提供。修復了一個錯誤,該錯誤阻止在大型陣列上使用 ROC AUC 分數在多個 CPU/核心上執行網格搜尋。請參閱 #6147。由 Olivier Grisel 提供。
修復了一個錯誤,該錯誤阻止正確設定
ensemble.GradientBoostingRegressor
中的presort
參數。請參閱 #5857。由 Andrew McCulloh 提供。修復了評估
decomposition.LatentDirichletAllocation
模型的困惑度時的 joblib 錯誤。請參閱 #6258。由 Chyi-Kwei Yau 提供。
版本 0.17#
2015 年 11 月 5 日
變更日誌#
新功能#
除了
preprocessing.RobustScaler
之外的所有縮放器類別都可以透過呼叫partial_fit
線上擬合。由 Giorgio Patrini 提供。新的類別
ensemble.VotingClassifier
實作了「多數規則」/「軟投票」集成分類器,以結合用於分類的估計器。由 Sebastian Raschka 提供。新的類別
preprocessing.RobustScaler
為特徵方向的居中和範圍正規化提供了preprocessing.StandardScaler
的替代方案,並且對離群值具有穩健性。由 Thomas Unterthiner 提供。新的類別
preprocessing.MaxAbsScaler
為特徵方向的範圍正規化提供了preprocessing.MinMaxScaler
的替代方案,當資料已經居中或稀疏時。由 Thomas Unterthiner 提供。新的類別
preprocessing.FunctionTransformer
將 Python 函式轉換為Pipeline
相容的轉換器物件。由 Joe Jevnik 提供。新的類別
cross_validation.LabelKFold
和cross_validation.LabelShuffleSplit
生成訓練測試折疊,分別類似於cross_validation.KFold
和cross_validation.ShuffleSplit
,只是折疊是有條件地以標籤陣列為基礎的。由 Brian McFee、Jean Kossaifi 和 Gilles Louppe 提供。decomposition.LatentDirichletAllocation
使用線上變分推斷實作潛在狄利克雷分配主題模型。由 Chyi-Kwei Yau 提供,程式碼基於 Matt Hoffman 的實作。(#3659)新的求解器
sag
實作隨機平均梯度下降,並且在linear_model.LogisticRegression
和linear_model.Ridge
中都可用。此求解器對於大型資料集非常有效。由 Danny Sullivan 和 Tom Dupre la Tour 提供。(#4738)新的求解器
cd
在decomposition.NMF
中實作座標下降。先前基於投影梯度的求解器仍然可透過將新參數solver
設定為pg
來使用,但已棄用,並將在 0.19 中移除,連同decomposition.ProjectedGradientNMF
以及參數sparseness
、eta
、beta
和nls_max_iter
。新參數alpha
和l1_ratio
控制 L1 和 L2 正規化,而shuffle
在cd
求解器中加入一個洗牌步驟。由 Tom Dupre la Tour 和 Mathieu Blondel 提供。
增強功能#
manifold.TSNE
現在支援透過 Barnes-Hut 方法進行近似最佳化,從而實現更快的擬合。由 Christopher Erick Moody 提供。(#4025)cluster.MeanShift
現在支援平行執行,如mean_shift
函式中所實作。由 Martino Sorbaro 提供。naive_bayes.GaussianNB
現在支援使用sample_weight
進行擬合。由 Jan Hendrik Metzen 提供。dummy.DummyClassifier
現在支援先驗擬合策略。由 Arnaud Joly 提供。為
mixture.GMM
和子類別新增了fit_predict
方法。由 Cory Lorenz 提供。新增了
metrics.label_ranking_loss
度量。由 Arnaud Joly 提供。新增了
metrics.cohen_kappa_score
度量。為 bagging 集成模型新增了
warm_start
建構函式參數,以增加集成的大小。由 Tim Head 提供。新增了使用不平均的多輸出迴歸度量的選項。由 Konstantin Shmelkov 和 Michael Eickenberg 提供。
為分層分割向
cross_validation.train_test_split
新增了stratify
選項。由 Miroslav Batchkarov 提供。現在,
tree.export_graphviz
函數支援tree.DecisionTreeClassifier
和tree.DecisionTreeRegressor
的外觀美化,包含根據節點的多數類別或雜質來著色、顯示變數名稱,以及使用節點比例而不是原始樣本計數的選項。由 Trevor Stephens 完成。透過避免損失計算,提升了
linear_model.LogisticRegression
中newton-cg
解算器的速度。由 Mathieu Blondel 和 Tom Dupre la Tour 完成。支援
class_weight
的分類器中,class_weight="auto"
啟發式方法已被棄用,並由class_weight="balanced"
選項取代,後者具有更簡單的公式和解釋。由 Hanna Wallach 和 Andreas Müller 完成。為
linear_model.PassiveAggressiveClassifier
新增class_weight
參數,以根據類別頻率自動加權樣本。由 Trevor Stephens 完成。從 API 參考頁面新增了返回使用者指南的連結。由 Andreas Müller 完成。
擴展了
sklearn.metrics.f1_score
、sklearn.metrics.fbeta_score
、sklearn.metrics.recall_score
和sklearn.metrics.precision_score
的labels
參數。現在可以忽略一個或多個標籤,例如在多類別問題中忽略多數類別的情況。由 Joel Nothman 完成。為
linear_model.RidgeClassifier
新增sample_weight
支援。由 Trevor Stephens 完成。提供從
sklearn.metrics.pairwise.cosine_similarity
產生稀疏輸出的選項。由 Jaidev Deshpande 完成。新增
preprocessing.minmax_scale
,為preprocessing.MinMaxScaler
提供函數介面。由 Thomas Unterthiner 完成。dump_svmlight_file
現在可以處理多標籤資料集。由 Chih-Wei Chang 完成。RCV1 資料集載入器 (
sklearn.datasets.fetch_rcv1
)。由 Tom Dupre la Tour 完成。「威斯康辛乳癌」經典二元分類資料集現在已包含在 scikit-learn 中,可透過
datasets.load_breast_cancer
取得。升級至 joblib 0.9.3,以受益於新的短任務自動批次處理功能。這使得 scikit-learn 可以在並行執行許多非常短的任務時,從並行處理中獲益,例如當
grid_search.GridSearchCV
元估計器與n_jobs > 1
一起使用,在小型資料集上使用大型參數網格時。由 Vlad Niculae、Olivier Grisel 和 Loic Esteve 完成。有關 joblib 0.9.3 變更的更多詳細資訊,請參閱發行說明:joblib/joblib
透過
linear_model.Lasso
的座標下降方法,提升了decomposition.DictLearning
的速度(每次迭代 3 倍)。由 Arthur Mensch 完成。Nikolay Mayorov 為最近鄰查詢(使用球樹)新增了並行處理(執行緒)。
允許
datasets.make_multilabel_classification
輸出稀疏的y
。由 Kashif Rasul 完成。cluster.DBSCAN
現在接受預先計算距離的稀疏矩陣,允許記憶體效率高的距離預先計算。由 Joel Nothman 完成。tree.DecisionTreeClassifier
現在公開了一個apply
方法,用於檢索預測為葉節點索引的樣本。由 Daniel Galvez 和 Gilles Louppe 完成。透過計算樹狀結構成長期間雜質改進的代理值,加快了決策樹迴歸器、隨機森林迴歸器、額外樹迴歸器和梯度提升估計器的速度。代理值使得最大化該值的分割也最大化了雜質改進。由 Arnaud Joly、Jacob Schreiber 和 Gilles Louppe 完成。
透過減少計算雜質度量時所需的計算量,加快了基於樹狀結構的方法,其中考慮了計算統計量的線性關係。這種效果在額外樹和具有類別或稀疏特徵的資料集上尤其明顯。由 Arnaud Joly 完成。
ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
現在公開了一個apply
方法,用於檢索每次嘗試中每個樣本最終所在的葉節點索引。由 Jacob Schreiber 完成。為
linear_model.LinearRegression
新增sample_weight
支援。由 Sonny Hu 完成。 (##4881)為
manifold.TSNE
新增n_iter_without_progress
,以控制停止條件。由 Santi Villalba 完成。(#5186)在
linear_model.Ridge
中新增了可選參數random_state
,用於設定sag
解算器中使用的虛擬隨機產生器的種子。由 Tom Dupre la Tour 完成。在
linear_model.LogisticRegression
中新增了可選參數warm_start
。若設定為 True,則lbfgs
、newton-cg
和sag
求解器將會使用前一次擬合計算的係數進行初始化。由 Tom Dupre la Tour 提供。為
lbfgs
、newton-cg
和sag
求解器在linear_model.LogisticRegression
中加入了sample_weight
支援。由 Valentin Stolbunov 提供。為liblinear
求解器新增了支援。由 Manoj Kumar 提供。為
ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
新增了可選參數presort
,並保持預設行為不變。這讓梯度提升器在建構深度樹或使用稀疏資料時可以關閉預先排序。由 Jacob Schreiber 提供。修改了
metrics.roc_curve
,預設會刪除不必要的閾值。由 Graham Clenaghan 提供。新增了
feature_selection.SelectFromModel
元轉換器,可與具有coef_
或feature_importances_
屬性的估計器一起使用,以選擇輸入資料的重要特徵。由 Maheshakya Wijewardena、Joel Nothman 和 Manoj Kumar 提供。新增了
metrics.pairwise.laplacian_kernel
。由 Clyde Fare 提供。covariance.GraphLasso
允許透過enet_tol
參數單獨控制 Elastic-Net 子問題的收斂準則。改善了
decomposition.DictionaryLearning
中的詳細程度。ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
不再明確儲存用於 bagging 的樣本,大幅減少了儲存隨機森林模型所需的記憶體空間。為
linear_model.Lars
和linear_model.lars_path
新增了positive
選項,以強制係數為正值。(#5131)為
metrics.pairwise.euclidean_distances
新增了X_norm_squared
參數,以提供X
的預先計算平方範數。為
pipeline.Pipeline
新增了fit_predict
方法。新增了
preprocessing.minmax_scale
函數。
錯誤修正#
修正了使用稀疏多標籤輸出時,
dummy.DummyClassifier
中的非決定性問題。由 Andreas Müller 提供。修正了
linear_model.RANSACRegressor
的輸出形狀為(n_samples, )
。由 Andreas Müller 提供。修正了當
n_jobs < 0
時,decomposition.DictLearning
中的錯誤。由 Andreas Müller 提供。修正了當離散網格很大時,
grid_search.RandomizedSearchCV
可能會消耗大量記憶體的錯誤。由 Joel Nothman 提供。修正了
linear_model.LogisticRegressionCV
中在最終擬合時會忽略penalty
的錯誤。由 Manoj Kumar 提供。修正了當計算 oob_score 且 X 為 sparse.csc_matrix 時,
ensemble.forest.ForestClassifier
中的錯誤。由 Ankur Ankan 提供。所有迴歸器現在都能一致地處理並警告當給定的
y
的形狀為(n_samples, 1)
的情況。由 Andreas Müller 和 Henry Lin 提供。(#5431)修正了
cluster.KMeans
對於稀疏輸入的叢集重新分配問題,由 Lars Buitinck 提供。修正了當使用收縮時,
discriminant_analysis.LinearDiscriminantAnalysis
中可能導致協方差矩陣不對稱的錯誤。由 Martin Billinger 提供。修正了具有稀疏預測值的估計器的
cross_validation.cross_val_predict
問題。由 Buddha Prakash 提供。修正了
linear_model.LogisticRegression
的predict_proba
方法,改為使用 soft-max 而非一對多正規化。由 Manoj Kumar 提供。(#5182)修正了當使用
average=True
呼叫時,linear_model.SGDClassifier
的partial_fit
方法。由 Andrew Lamb 提供。(#5282)資料集提取器在 Python 2 和 Python 3 下使用不同的檔名,以避免 pickle 相容性問題。由 Olivier Grisel 提供。(#5355)
修正了
naive_bayes.GaussianNB
中導致分類結果依賴於尺度的錯誤。由 Jake Vanderplas 提供。暫時修正了當擬合稀疏資料的截距時,
linear_model.Ridge
的不正確問題。在這種情況下,該修復會自動將求解器變更為 'sag'。#5360 由 Tom Dupre la Tour 提供。修正了當資料具有大量特徵和較少樣本時,
decomposition.RandomizedPCA
中的效能錯誤。(#4478)由 Andreas Müller、Loic Esteve 和 Giorgio Patrini 提供。修正了
cross_decomposition.PLS
中產生不穩定且依賴於平台的輸出,以及在fit_transform
上失敗的錯誤。由 Arthur Mensch 提供。修正了用於儲存資料集的
Bunch
類別。修正了
ensemble.plot_partial_dependence
忽略percentiles
參數的問題。在
CountVectorizer
中提供set
作為詞彙表不再導致 pickle 時產生不一致的結果。修正了在
linear_model.LinearRegression
、linear_model.OrthogonalMatchingPursuit
、linear_model.Lasso
和linear_model.ElasticNet
中,預先計算的 Gram 矩陣何時需要重新計算的條件。修正了座標下降求解器中不一致的記憶體佈局,該佈局影響了
linear_model.DictionaryLearning
和covariance.GraphLasso
。 (#5337) 由 Olivier Grisel 提供。manifold.LocallyLinearEmbedding
不再忽略reg
參數。現在可以使用客製化的距離度量來進行 pickle 最近鄰估計器。 (#4362)
修正了
pipeline.FeatureUnion
中的一個錯誤,在執行網格搜尋時,transformer_weights
沒有被正確處理。修正了當使用
class_weight='balanced'
或class_weight='auto'
時,linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
中的一個錯誤。由 Tom Dupre la Tour 提供。修正了當執行 OVR(SVC(decision_function_shape="ovr")) 時的錯誤 #5495。由 Elvis Dohmatob 修正。
API 變更摘要#
preprocessing.MinMaxScaler
中的屬性data_min
、data_max
和data_range
已被棄用,並且從 0.19 版本開始將不再可用。取而代之的是,該類別現在會公開data_min_
、data_max_
和data_range_
。由 Giorgio Patrini 提供。所有縮放器類別現在都有一個
scale_
屬性,這是它們的transform
方法所應用的特徵式重新縮放。preprocessing.StandardScaler
中的舊屬性std_
已被棄用,並由scale_
取代;它在 0.19 版本中將不再可用。由 Giorgio Patrini 提供。svm.SVC
和svm.NuSVC
現在有一個decision_function_shape
參數,可藉由設定decision_function_shape='ovr'
,使其決策函數的形狀為(n_samples, n_classes)
。這將會是從 0.19 版本開始的預設行為。由 Andreas Müller 提供。現在不建議將 1D 資料陣列作為估計器的輸入,因為這會在如何將陣列元素解讀為特徵或樣本方面造成混淆。現在所有資料陣列都應該明確地塑造為
(n_samples, n_features)
。由 Vighnesh Birodkar 提供。lda.LDA
和qda.QDA
已被移至discriminant_analysis.LinearDiscriminantAnalysis
和discriminant_analysis.QuadraticDiscriminantAnalysis
。store_covariance
和tol
參數已從 fit 方法移至discriminant_analysis.LinearDiscriminantAnalysis
的建構函式中,而store_covariances
和tol
參數已從 fit 方法移至discriminant_analysis.QuadraticDiscriminantAnalysis
的建構函式中。繼承自
_LearntSelectorMixin
的模型將不再支援 transform 方法(即 RandomForests、GradientBoosting、LogisticRegression、DecisionTrees、SVMs 和 SGD 相關模型)。請將這些模型包裝在元轉換器feature_selection.SelectFromModel
周圍,以移除低於特定閾值的特徵(根據coefs_
或feature_importances_
)。如果發生非收斂情況,
cluster.KMeans
會重新執行叢集指派,以確保predict(X)
和labels_
的一致性。由 Vighnesh Birodkar 提供。分類器和迴歸器模型現在會使用
_estimator_type
屬性來標記。交叉驗證迭代器總是會提供訓練集和測試集的索引,而不是布林遮罩。
所有迴歸器上的
decision_function
已被棄用,並將在 0.19 版本中移除。請改用predict
。datasets.load_lfw_pairs
已被棄用,並將在 0.19 版本中移除。請改用datasets.fetch_lfw_pairs
。已移除已棄用的
hmm
模組。已移除已棄用的
Bootstrap
交叉驗證迭代器。已移除已棄用的
Ward
和WardAgglomerative
類別。請改用cluster.AgglomerativeClustering
。cross_validation.check_cv
現在是一個公開函數。linear_model.LinearRegression
的屬性residues_
已被棄用,並將在 0.19 版本中移除。linear_model.LinearRegression
已棄用的n_jobs
參數已移至建構函式。已從
linear_model.SGDClassifier
的fit
方法中移除已棄用的class_weight
參數。請改用建構參數。已移除已棄用的序列的序列(或列表的列表)多標籤格式的支援。若要轉換為支援的二元指示矩陣格式或從該格式轉換,請使用
MultiLabelBinarizer
。在 0.19 版本中,呼叫
Pipeline.pipeline
的inverse_transform
方法的行為將會改變。它將不再將一維輸入重新塑造為二維輸入。已棄用的屬性
indicator_matrix_
、multilabel_
和classes_
已從preprocessing.LabelBinarizer
中移除。在
svm.SVC
和svm.SVR
中使用gamma=0
自動將 gamma 設定為1. / n_features
的方式已被棄用,並將在 0.19 版本中移除。請改用gamma="auto"
。
程式碼貢獻者#
Aaron Schumacher, Adithya Ganesh, akitty, Alexandre Gramfort, Alexey Grigorev, Ali Baharev, Allen Riddell, Ando Saabas, Andreas Mueller, Andrew Lamb, Anish Shah, Ankur Ankan, Anthony Erlinger, Ari Rouvinen, Arnaud Joly, Arnaud Rachez, Arthur Mensch, banilo, Barmaley.exe, benjaminirving, Boyuan Deng, Brett Naul, Brian McFee, Buddha Prakash, Chi Zhang, Chih-Wei Chang, Christof Angermueller, Christoph Gohlke, Christophe Bourguignat, Christopher Erick Moody, Chyi-Kwei Yau, Cindy Sridharan, CJ Carey, Clyde-fare, Cory Lorenz, Dan Blanchard, Daniel Galvez, Daniel Kronovet, Danny Sullivan, Data1010, David, David D Lowe, David Dotson, djipey, Dmitry Spikhalskiy, Donne Martin, Dougal J. Sutherland, Dougal Sutherland, edson duarte, Eduardo Caro, Eric Larson, Eric Martin, Erich Schubert, Fernando Carrillo, Frank C. Eckert, Frank Zalkow, Gael Varoquaux, Ganiev Ibraim, Gilles Louppe, Giorgio Patrini, giorgiop, Graham Clenaghan, Gryllos Prokopis, gwulfs, Henry Lin, Hsuan-Tien Lin, Immanuel Bayer, Ishank Gulati, Jack Martin, Jacob Schreiber, Jaidev Deshpande, Jake Vanderplas, Jan Hendrik Metzen, Jean Kossaifi, Jeffrey04, Jeremy, jfraj, Jiali Mei, Joe Jevnik, Joel Nothman, John Kirkham, John Wittenauer, Joseph, Joshua Loyal, Jungkook Park, KamalakerDadi, Kashif Rasul, Keith Goodman, Kian Ho, Konstantin Shmelkov, Kyler Brown, Lars Buitinck, Lilian Besson, Loic Esteve, Louis Tiao, maheshakya, Maheshakya Wijewardena, Manoj Kumar, MarkTab marktab.net, Martin Ku, Martin Spacek, MartinBpr, martinosorb, MaryanMorel, Masafumi Oyamada, Mathieu Blondel, Matt Krump, Matti Lyra, Maxim Kolganov, mbillinger, mhg, Michael Heilman, Michael Patterson, Miroslav Batchkarov, Nelle Varoquaux, Nicolas, Nikolay Mayorov, Olivier Grisel, Omer Katz, Óscar Nájera, Pauli Virtanen, Peter Fischer, Peter Prettenhofer, Phil Roth, pianomania, Preston Parry, Raghav RV, Rob Zinkov, Robert Layton, Rohan Ramanath, Saket Choudhary, Sam Zhang, santi, saurabh.bansod, scls19fr, Sebastian Raschka, Sebastian Saeger, Shivan Sornarajah, SimonPL, sinhrks, Skipper Seabold, Sonny Hu, sseg, Stephen Hoover, Steven De Gryze, Steven Seguin, Theodore Vasiloudis, Thomas Unterthiner, Tiago Freitas Pereira, Tian Wang, Tim Head, Timothy Hopper, tokoroten, Tom Dupré la Tour, Trevor Stephens, Valentin Stolbunov, Vighnesh Birodkar, Vinayak Mehta, Vincent, Vincent Michel, vstolbunov, wangz10, Wei Xue, Yucheng Low, Yury Zhauniarovich, Zac Stewart, zhai_pro, Zichen Wang