版本 0.20#
Warning
版本 0.20 是支持 Python 2.7 和 Python 3.4 的 scikit-learn 的最后一个版本。 Scikit-learn 0.21 将需要 Python 3.5 或更高版本。
Legend for changelogs
Major Feature something big that you couldn’t do before.
Feature something that you couldn’t do before.
Efficiency an existing feature now may not require as much computation or memory.
Enhancement a miscellaneous minor improvement.
Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.
API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.
版本 0.20.4#
2019年7月30日
这是一个包含一些针对版本 0.20.3 的错误修复的补丁发布。
更新日志#
捆绑的 joblib 版本从 0.13.0 升级到 0.13.2。
sklearn.cluster
#
Fix 修复了
cluster.KMeans
中的一个错误,KMeans++ 初始化 可能会罕见地导致 IndexError。#11756 由 Joel Nothman 提交。
sklearn.compose
#
Fix 修复了
compose.ColumnTransformer
中的一个问题,当使用 列顺序在 :func:fit
和 :func:transform
之间不同的 DataFrame 时, 可能会导致将错误的列静默传递给remainder
转换器。 #14237 由Andreas Schuderer <schuderer>
提交。
sklearn.decomposition
#
Fix 修复了
cross_decomposition.CCA
中的一个错误,提高了当Y
接近零时的数值稳定性。 #13903 由 Thomas Fan 提交。
sklearn.model_selection
#
Fix 修复了
model_selection.StratifiedKFold
中的一个错误, 该错误使得每个类别的样本在相同的random_state
下进行洗牌, 使得shuffle=True
无效。 #13124 由 Hanmin Qin 提交。
sklearn.neighbors
#
Fix 修复了
neighbors.KernelDensity
中的一个错误,如果使用了sample_weight
, 则无法从 pickle 中恢复。 #13772 由 Aditya Vyas 提交。
版本 0.20.3#
2019年3月1日
这是一个包含一些次要文档改进和 0.20.0 版本中发布的功能增强。
更新日志#
sklearn.cluster
#
Fix 修复了
cluster.KMeans
中的一个错误,当n_jobs > 1
或n_jobs = -1
时计算是单线程的。 #12949 由 Prabakaran Kumaresshan 提交。
sklearn.compose
#
Fix 修复了
compose.ColumnTransformer
中的一个错误,处理转换器列列表中的负索引。 #12946 由 Pierre Tallotte 提交。
sklearn.covariance
#
Fix 修复了
covariance.graphical_lasso
中的回归问题,使得n_features=2
的情况得到正确处理。 #13276 由 Aurélien Bellet 提交。
sklearn.decomposition
#
Fix 修复了
decomposition.sparse_encode
中的一个错误,当n_jobs > 1
或n_jobs = -1
时计算是单线程的。 #13005 由 Prabakaran Kumaresshan 提交。
sklearn.datasets
#
Efficiency
sklearn.datasets.fetch_openml
现在通过流式加载数据,避免了高内存使用。 #13312 由 Joris Van den Bossche 提交。
sklearn.feature_extraction
#
Fix 修复了
feature_extraction.text.CountVectorizer
中的一个错误,该错误会导致在非常大的词汇表下稀疏特征矩阵的indptr
和indices
精度冲突。 #11295 由 Gabriel Vacaliuc 提交。
sklearn.impute
#
Fix 在
sklearn.impute.MissingIndicator
中增加了对非数值数据的支持,此前sklearn.impute.SimpleImputer
在某些插补策略下支持非数值数据。 #13046 由 Guillaume Lemaitre 提交。
sklearn.linear_model
#
Fix 修复了
linear_model.MultiTaskElasticNet
和linear_model.MultiTaskLasso
中的一个错误,当warm_start = True
时会导致崩溃。#12360 由 Aakanksha Joshi 修复。
sklearn.preprocessing
#
Fix 修复了
preprocessing.KBinsDiscretizer
中的一个错误, 当strategy='kmeans'
时,由于未排序的 bin 边缘在转换过程中会引发错误。 #13134 由 Sandro Casagrande 修复。Fix 修复了
preprocessing.OneHotEncoder
中的一个错误, 其中categorical_features
的弃用与handle_unknown='ignore'
结合使用时处理不当。 #12881 由 Joris Van den Bossche 修复。Fix 在
preprocessing.KBinsDiscretizer
中,宽度太小的 bin(即,<= 1e-8) 会通过警告被移除。#13165 由 Hanmin Qin 修复。
sklearn.svm
#
Fix 修复了
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, Sandro Casagrande, 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
#
Fix 修复了
compose.make_column_transformer
在列是 pandas Index 或 pandas Series 时引发意外错误的问题。 #12704 由 Hanmin Qin 提交。
sklearn.metrics
#
Fix 修复了
metrics.pairwise_distances
和metrics.pairwise_distances_chunked
中的一个错误,其中"seuclidean"
的参数V
和"mahalanobis"
的参数VI
是在数据被分割成块后计算的,而不是在完整数据上预先计算的。 #12701 由 Jeremie du Boisberranger 提交。
sklearn.neighbors
#
Fix 修复了
sklearn.neighbors.DistanceMetric
的 jaccard 距离函数,使其在比较两个全零向量时返回 0。 #12685 由 Thomas Fan 提交。
sklearn.utils
#
Fix 调用
utils.check_array
处理pandas.Series
中的分类数据,这在 0.20.0 版本中引发了错误,现在再次返回预期输出。 #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
#
Efficiency 使
cluster.MeanShift
不再尝试进行嵌套并行,因为当n_jobs > 1
时,开销会显著影响性能。 #12159 由 Olivier Grisel 提交。Fix 修复了
cluster.DBSCAN
在预计算的稀疏邻居图中的一个错误,该错误会在对角线上添加显式的零,即使它们已经存在。 #12105 由 Tom Dupre la Tour 提交。
sklearn.compose
#
Fix 修复了
compose.ColumnTransformer
在堆叠不可转换为数值类型的列时的问题。 #11912 由 Adrin Jalali 提交。API Change
compose.ColumnTransformer
现在即使所有变换结果都是稀疏的,也会应用sparse_threshold
。 #12304 由 Andreas Müller 提交。API Change
compose.make_column_transformer
现在期望
(transformer, columns)
而不是(columns, transformer)
以保持与compose.ColumnTransformer
的一致性。
#12339 由 Adrin Jalali 提交。
sklearn.datasets
#
Fix 修复
datasets.fetch_openml
以正确使用本地缓存。 #12246 由 Jan N. van Rijn 提交。Fix 修复
datasets.fetch_openml
以正确处理忽略属性和行ID属性。 #12330 由 Jan N. van Rijn 提交。Fix 修复
datasets.make_classification
中n_informative
参数大于64时的整数溢出问题。 #10811 由 Roman Feldbauer 提交。Fix 修复
datasets.fetch_olivetti_faces
中 olivetti 人脸数据集的DESCR
属性以指向正确的位置。 #12441 由 Jérémie du Boisberranger 提交。Fix 修复
datasets.fetch_openml
以在从本地缓存读取失败时重试下载。 #12517 由 Thomas Fan 提交。
sklearn.decomposition
#
Fix 修复
decomposition.IncrementalPCA
中的回归问题,其中0.20.0版本在拟合IncrementalPCA的最终批次样本数小于n_components时会引发错误。 #12234 由 Ming Li 提交。
sklearn.ensemble
#
Fix 修复主要影响
ensemble.RandomForestClassifier
的错误,其中class_weight='balanced_subsample'
在超过32个类别时失败。 #12165 由 Joel Nothman 提交。Fix 修复影响
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
的错误,其中max_features
有时会被向下舍入为零。 #12388 由 Connor Tann 提交。
sklearn.feature_extraction
#
Fix 修复 v0.20.0 中的回归问题,其中
feature_extraction.text.CountVectorizer
和其他文本向量化器
在自定义预处理器或分词器的情况下进行停用词验证时可能会出错。
#12393 由 Roman Yurchak 报告。
sklearn.linear_model
#
Fix
linear_model.SGDClassifier
及其变体 在early_stopping=True
的情况下,多分类时不会使用一致的验证分割, 这会导致在使用这些估计器作为并行参数搜索或交叉验证的一部分时崩溃。 #12122 由 Olivier Grisel 修复。Fix 修复了
linear_model.SGDClassifier
在多分类情况下的一个错误。 每个一对一步骤在joblib.Parallel
调用中运行,并修改了一个公共参数, 如果在使用进程而不是线程的后端中调用,会导致段错误。 现在我们在创建joblib.Parallel
实例时使用require=sharedmem
。 #12518 由 Pierre Glaser 和 Olivier Grisel 修复。
sklearn.metrics
#
Fix 修复了
metrics.pairwise.pairwise_distances_argmin_min
中的一个错误, 当 metric 参数设置为 “euclidean” 时,返回了距离的平方根。 #12481 由 Jérémie du Boisberranger 修复。Fix 修复了
metrics.pairwise.pairwise_distances_chunked
中的一个错误, 该错误未确保欧几里得距离的对角线为零。 #12612 由 Andreas Müller 修复。API Change
metrics.calinski_harabaz_score
已重命名为metrics.calinski_harabasz_score
,并将在版本 0.23 中移除。 #12211 由 Lisa Thomas 、 Mark Hannel 和 Melissa Ferrari 提出。
sklearn.mixture
#
Fix 确保
mixture.GaussianMixture
和mixture.BayesianGaussianMixture
的fit_predict
方法
始终产生与 fit
后跟 predict
一致的分配,即使收敛标准过于宽松或未达到。#12451 由 Olivier Grisel 提供。
sklearn.neighbors
#
Fix 强制在 Python 2.7 中为
neighbors.KDTree
和neighbors.BallTree
使用threading
作为并行后端,以避免由其方法序列化引起的 pickle 错误。#12171 由 Thomas Moreau 提供。
sklearn.preprocessing
#
Fix 修复了在手动指定类别时
preprocessing.OrdinalEncoder
中的错误。#12365 由 Joris Van den Bossche 提供。Fix 修复了
preprocessing.KBinsDiscretizer
中transform
方法会改变_encoder
属性的错误。现在transform
方法是线程安全的。#12514 由 Hanmin Qin 提供。Fix 修复了
preprocessing.PowerTransformer
中 Yeo-Johnson 变换在 lambda 参数超出[0, 2]
范围时不正确的错误。#12522 由 Nicolas Hug 提供。Fix 修复了
preprocessing.OneHotEncoder
中当设置为忽略未知 numpy 字符串且长度不同时转换失败的错误。#12471 由 Gabriel Marzinotto 提供。API Change
preprocessing.power_transform
中method
参数的默认值将从box-cox
更改为yeo-johnson
,以匹配preprocessing.PowerTransformer
在版本 0.23 中的设置。当使用默认值时会引发 FutureWarning。#12317 由 Eric Chang 提供。
sklearn.utils
#
Fix 使用 float64 作为均值累加器,以避免在使用 float32 数据集时
preprocessing.StandardScaler
和decomposition.IncrementalPCA
中的浮点精度问题。#12338 由 bauks 提供。Fix 在
pandas.Series
上调用utils.check_array
,该操作在 0.20.0 版本中引发了错误,现在再次返回预期的输出。#12625 由 Andreas Müller 贡献。
杂项#
Fix 当通过设置环境变量
SKLEARN_SITE_JOBLIB
使用站点 joblib 时,除了 0.12+ 版本外,还增加了与 joblib 0.11 版本的兼容性。#12350 由 Joel Nothman 和 Roman Yurchak 贡献。Fix 确保在使用 numpy 1.16 及更高版本时调用
np.vstack
不会引发FutureWarning
(在 scikit-learn 代码库的许多位置使用列表推导而不是生成器表达式)。#12467 由 Olivier Grisel 贡献。API Change 移除了所有提及
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
作为非线性变换。
除此之外,我们为多个估计器(包括 KMeans
、BayesianRidge
和
KernelDensity
) 以及其他一些模型中改进了停止准则
(包括 MLPRegressor
,
GradientBoostingRegressor
和
SGDRegressor
).
此版本也是首次伴随由 Joel Nothman 开发的 术语表 发布。术语表是一个参考资源,帮助用户和贡献者熟悉 Scikit-learn 中使用的术语和约定。
如果你的贡献没有出现在亮点中,我们深表歉意。这里有很多内容…
变更的模型#
以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或随机抽样过程的变化。
cluster.MeanShift
(错误修复)decomposition.IncrementalPCA
在 Python 2 中 (错误修复)decomposition.SparsePCA
(错误修复)ensemble.GradientBoostingClassifier
(影响特征重要性的错误修复)isotonic.IsotonicRegression
(错误修复)linear_model.ARDRegression
(错误修复)linear_model.Perceptron
(错误修复)linear_model.SGDClassifier
(错误修复)linear_model.SGDRegressor
(错误修复)metrics.roc_auc_score
(错误修复)metrics.roc_curve
(错误修复)neural_network.BaseMultilayerPerceptron
(错误修复)neural_network.MLPClassifier
(错误修复)neural_network.MLPRegressor
(错误修复)v0.19.0 版本发布说明中未能提及当
shuffle=True
时model_selection.StratifiedKFold
的向后不兼容性,由于 #7823 。
详细信息列在下面的变更日志中。 (虽然我们试图通过提供这些信息来更好地告知用户,但我们不能保证这个列表是完整的。)
已知主要错误#
#11924 : 使用
solver='lbfgs'
和multi_class='multinomial'
的linear_model.LogisticRegressionCV
在 macOS 上可能是非确定性的或已损坏。这似乎在 Travis CI 服务器上出现,但在个人 MacBook 上尚未得到确认!此问题在之前的版本中已经存在。#9354 :
metrics.pairwise.euclidean_distances
(在整个库中多次使用)给出的结果精度较差,特别影响其与 32 位浮点输入一起使用。在版本 0.18 和 0.19 中,当某些算法被更改以避免将 32 位数据转换为 64 位时,这个问题变得更加严重。
更新日志#
已正式放弃对 Python 3.3 的支持。
sklearn.cluster
#
Major Feature
cluster.AgglomerativeClustering
现在通过linkage='single'
支持单链接聚类。#9372 由 Leland McInnes 和 Steve Astels 贡献。Feature
cluster.KMeans
和cluster.MiniBatchKMeans
现在通过fit
函数中的新参数sample_weight
支持样本权重。#10933 由 Johannes Hansen 贡献。Efficiency
cluster.KMeans
、cluster.MiniBatchKMeans
和cluster.k_means
在传递algorithm='full'
时现在强制执行行主序排列,提高了运行时间。#10471 由 Gaurav Dhingra 贡献。Efficiency
cluster.DBSCAN
现在根据n_jobs
进行并行化,无论algorithm
如何。#8003 由 Joël Billaud 贡献。Enhancement
cluster.KMeans
现在在找到的不同聚类数量小于n_clusters
时给出警告。这可能在某些情况下发生,
数据集中不同点的数量实际上小于所寻找的聚类数量。 #10059 由 Christian Braune 提供。
Fix 修复了
cluster.AffinityPropagation
的fit
方法中的一个错误,该方法在非收敛情况下将聚类中心存储为 3D 数组而不是 2D 数组。对于同一类,修复了在所有样本具有相同相似性的训练数据情况下的未定义和任意行为。 #9612 。由 Jonatan Samoocha 提供。Fix 修复了
cluster.spectral_clustering
中的一个错误,其中频谱的归一化使用了除法而不是乘法。 #8129 由 Jan Margeta 、Guillaume Lemaitre 和 Devansh D. 提供。Fix 修复了
cluster.k_means_elkan
中的一个错误,其中返回的iteration
比正确值少 1。同时,在cluster.KMeans
的文档字符串中添加了缺失的n_iter_
属性。 #11353 由 Jeremie du Boisberranger 提供。Fix 修复了
cluster.mean_shift
中的一个错误,其中如果存在多个具有相同强度的聚类,分配的标签不是确定性的。 #11901 由 Adrin Jalali 提供。API Change 弃用
cluster.AgglomerativeClustering
中未使用的pooling_func
参数。 #9875 由 Kumar Ashutosh 提供。
sklearn.compose
#
新模块。
Major Feature 添加了
compose.ColumnTransformer
,允许对数组或 pandas DataFrame 的不同列应用不同的转换器。 #9012 由 Andreas Müller 和 Joris Van den Bossche 提供,以及 #11315 由 Thomas Fan 提供。Major Feature 添加了
compose.TransformedTargetRegressor
,该类在拟合回归模型之前对目标 y 进行变换。
通过逆变换映射回原始空间。#9041 由 Andreas Müller 和 Guillaume Lemaitre 。
以下是翻译后的中文内容,保持了原有的rst格式:
sklearn.covariance
#
Efficiency
covariance.GraphicalLasso
的运行时性能改进。 #9858 由 Steven Brown 提供。API Change
covariance.graph_lasso
、covariance.GraphLasso
和covariance.GraphLassoCV
已分别重命名为covariance.graphical_lasso
、covariance.GraphicalLasso
和covariance.GraphicalLassoCV
,并将在版本 0.22 中移除。 #9993 由 Artiem Krinitsyn 提供。
sklearn.datasets
#
Major Feature 添加了
datasets.fetch_openml
以从 OpenML 获取数据集。OpenML 是一个免费的开放数据共享平台,将代替 mldata,因为它提供了更好的服务可用性。 #9908 由 Andreas Müller 和 Jan N. van Rijn 提供。Feature 在
datasets.make_blobs
中,现在可以传递一个列表给n_samples
参数,以指示每个簇生成的样本数量。#8617 由 Maskani Filali Mohamed 和 Konstantinos Katrioplas 提供。Feature 为具有 CSV 文件的
sklearn.datasets
添加了filename
属性。 #9101 由 alex-33 和 Maskani Filali Mohamed 提供。Feature
return_X_y
参数已添加到多个数据集加载器中。 #10774 由 Chris Catalfo 提供。Fix 修复了
datasets.load_boston
中的一个错误数据点。#10795 由 Takeshi Yoshizawa 提供。Fix 修复了
datasets.load_iris
中的两个错误数据点。 #11082 由 Sadhana Srinivasan 和 Hanmin Qin 提供。Fix 修复了
datasets.fetch_kddcup99
中的一个错误,数据未正确打乱。#9731 由 Nicolas Goix 提交。Fix 修复了
datasets.make_circles
中的一个错误,无法生成奇数个数据点。#10045 由 Christian Braune 提交。API Change 弃用
sklearn.datasets.fetch_mldata
,将在版本 0.22 中移除。mldata.org 已不再运营。在移除之前,仍可加载缓存的数据集。 #11466 由 Joel Nothman 提交。
sklearn.decomposition
#
Feature
decomposition.dict_learning
函数和模型现在支持正约束。这适用于字典和稀疏编码。#6374 由 John Kirkham 提交。Feature Fix
decomposition.SparsePCA
现在暴露了normalize_components
。当设置为 True 时,训练和测试数据在拟合阶段和转换阶段分别以训练均值为中心。这修复了 SparsePCA 的行为。当设置为 False 时,默认情况下,仍然保持之前的不正常行为。False 值用于向后兼容,不应使用。#11585 由 Ivan Panico 提交。Efficiency 在
decomposition.dict_learning
中的效率改进。#11420 及其他由 John Kirkham 提交。Fix 修复了
decomposition.IncrementalPCA
中无信息的错误:现在如果组件数量大于选定的批次大小,则会引发错误。n_components=None
的情况也相应调整。#6452 。由 Wally Gauze 提交。Fix 修复了
decomposition.IncrementalPCA
的partial_fit
方法在 Python 2 中使用整数除法而不是浮点除法的错误。#9492 由 James Bourbeau 提交。Fix 在
decomposition.PCA
中选择大于样本数量的 n_components 参数现在会引发错误。同样地,n_components=None
的情况现在会选择n_samples
和n_features
中的最小值。 #8484 由 Wally Gauze 贡献。Fix 修复了
decomposition.PCA
中的一个错误,当在 Python 3 版本上使用n_components='mle'
时,用户会在大型数据集上遇到意外错误。 #9886 由 Hanmin Qin 贡献。Fix 修复了在计算
decomposition.NMF
的 KL-散度时的一个下溢问题。 #10142 由 Tom Dupre la Tour 贡献。Fix 修复了
decomposition.SparseCoder
在并行运行 OMP 稀疏编码时使用只读内存映射数据结构时的错误。 #5956 由 Vighnesh Birodkar 和 Olivier Grisel 贡献。
sklearn.discriminant_analysis
#
Efficiency 改进了
sklearn.discriminant_analysis
中_class_means
和_class_cov
的内存使用。 #10898 由 Nanxin Chen 贡献。
sklearn.dummy
#
Feature
dummy.DummyRegressor
的predict
方法现在有一个return_std
选项。返回的标准差将为零。Feature
dummy.DummyClassifier
和dummy.DummyRegressor
现在只需要 X 是一个具有有限长度或形状的对象。 #9832 由 Vrishank Bhardwaj 贡献。Feature
dummy.DummyClassifier
和dummy.DummyRegressor
现在可以在不提供测试样本的情况下进行评分。 #11951 由 Rüdiger Busche 贡献。
sklearn.ensemble
#
Feature
ensemble.BaggingRegressor
和ensemble.BaggingClassifier
现在可以适应 X 和/或多输出 Y 中的缺失/非有限值,以支持包装执行的管道。
Feature
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
现在支持通过n_iter_no_change
、validation_fraction
和tol
进行早期停止。#7071 由 Raghav RV 提供Feature 在
ensemble.VotingClassifier
中添加了named_estimators_
参数, 以访问拟合的估计器。#9157 由 Herilalaina Rakotoarison 提供。Fix 修复了在拟合
ensemble.GradientBoostingClassifier
或ensemble.GradientBoostingRegressor
时,当warm_start=True
时之前会引发 分段故障的错误,这是由于未将 CSC 矩阵转换为decision_function
预期的 CSR 格式。 类似地,在密集情况下,Fortran 顺序的数组被转换为 C 顺序的数组。#9991 由 Guillaume Lemaitre 提供。Fix 修复了
ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
中的一个错误,该错误导致特征重要性先求和 再归一化,而不是在每棵树上进行归一化。之前的行为过度加权了出现在后期阶段的特征的基尼重要性。 此问题仅影响特征重要性。#11176 由 Gil Forsyth 提供。API Change
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
、ensemble.ExtraTreesRegressor
和ensemble.RandomTreesEmbedding
的n_estimators
参数的默认值将从 0.20 版本的 10 更改为 0.22 版本的 100。当使用默认值时会引发 FutureWarning。#11542 由 Anna Ayzenshtat 提供。API Change 从
ensemble.BaseBagging
派生的类。estimators_samples_
属性将返回一个包含索引的数组列表。 每个bootstrap选择索引而不是包含每个bootstrap选择样本掩码的数组列表。索引允许重复样本,而掩码不支持此功能。 #9524 由 Guillaume Lemaitre 提供。Fix
ensemble.BaseBagging
中无法在设置random_state
时通过对象属性确定性地重现fit
结果的问题。#9723 由 Guillaume Lemaitre 提供。
sklearn.feature_extraction
#
Feature 允许在未拟合的
feature_extraction.text.CountVectorizer
中调用get_feature_names
,并初始化词汇表。#10908 由 Mohamed Maskani 提供。Enhancement 现在可以在
feature_extraction.text.TfidfTransformer
上设置idf_
。#10899 由 Sergey Melderis 提供。Fix 修复了
feature_extraction.image.extract_patches_2d
中的一个错误,该错误会在max_patches
大于或等于所有可能补丁的数量时抛出异常,而不是简单地返回可能补丁的数量。#10101 由 Varun Agrawal 提供。Fix 修复了
feature_extraction.text.CountVectorizer
、feature_extraction.text.TfidfVectorizer
、feature_extraction.text.HashingVectorizer
中的一个错误,以支持64位稀疏数组索引,这是处理包含超过2·10⁹个标记(单词或n-gram)的大型数据集所必需的。#9147 由 Claes-Fredrik Mannby 和 Roman Yurchak 提供。Fix 修复了
feature_extraction.text.TfidfVectorizer
中的一个错误,该错误忽略了参数dtype
。此外,feature_extraction.text.TfidfTransformer
将保留dtype
用于浮点数并在请求的dtype
为整数时发出警告。#10441 由 Mayur Kulkarni 和 Guillaume Lemaitre 提供。
sklearn.feature_selection
#
Feature 向
feature_selection.SelectFromModel
添加了选择最佳 K 个特征的功能。 #6689 由 Nihar Sheth 和 Quazi Rahman 贡献。Feature 向
feature_selection.RFECV
添加了min_features_to_select
参数,以限制评估的特征数量。 #11293 由 Brent Yi 贡献。Feature
feature_selection.RFECV
的 fit 方法现在支持 groups 。 #9656 由 Adam Greenhall 贡献。Fix 修复了
feature_selection.RFECV
中 CV 分数相同情况下的n_features_to_compute
计算问题。 #9222 由 Nick Hoh 贡献。
sklearn.gaussian_process
#
Efficiency 在
gaussian_process.GaussianProcessRegressor
中,使用return_std=True
时,predict
方法更快,尤其是在连续调用多次时。 #9234 由 andrewww 和 Minghui Liu 贡献。
sklearn.impute
#
新模块,采用
preprocessing.Imputer
作为impute.SimpleImputer
,并进行了一些小的改动(见下文 preprocessing 部分)。Major Feature 添加了
impute.MissingIndicator
,用于生成缺失值的二进制指示器。 #8075 由 Maniteja Nandana 和 Guillaume Lemaitre 贡献。Feature
impute.SimpleImputer
新增了'constant'
策略,用于用固定值填充缺失值,该值由fill_value
参数指定。此策略支持数值和非数值数据,现在'most_frequent'
策略也支持。 #11211 由 Jeremie du Boisberranger 贡献。
sklearn.isotonic
#
Fix 修复了
isotonic.IsotonicRegression
中的一个错误,该错误导致
在拟合涉及具有相同X值的点的数据时,合并权重。 #9484 由 Dallas Card 提供。
sklearn.linear_model
#
Feature
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
连续周期未能改善模型时将学习率除以5。 #9043 由 Tom Dupre la Tour 提供。Feature 在
linear_model.BayesianRidge
的拟合方法中添加了sample_weight
参数,用于加权线性回归。 #10112 由 Peter St. John 提供。Fix 修复了
logistic.logistic_regression_path
中的一个错误,以确保在multiclass='multinomial'
时返回的系数是正确的。 之前,一些系数会相互覆盖,导致linear_model.LogisticRegressionCV
中的结果不正确。 #11724 由 Nicolas Hug 提供。Fix 修复了
linear_model.LogisticRegression
中的一个错误,当使用参数multi_class='multinomial'
时,predict_proba
方法在二元结果情况下返回了不正确的概率。 #9939 由 Roger Westover 提供。Fix 修复了
linear_model.LogisticRegressionCV
中的一个错误,其中score
方法总是计算准确度,而不是由scoring
参数给出的指标。 #10998 由 Thomas Fan 提供。Fix 修复了
linear_model.LogisticRegressionCV
中的一个错误,其中 ‘ovr’ 策略总是用于计算交叉验证分数。
多类设置,即使设置了 'multinomial'
。
#8720 由 William de Vazelhes 提交。
Fix 修复了
linear_model.OrthogonalMatchingPursuit
中的一个错误,该错误在设置normalize=False
时被破坏。 #10071 由 Alexandre Gramfort 提交。Fix 修复了
linear_model.ARDRegression
中的一个错误,该错误导致标准差和系数的不正确更新估计。 #10153 由 Jörg Döpfert 提交。Fix 修复了
linear_model.ARDRegression
和linear_model.BayesianRidge
中的一个错误,该错误在拟合常数目标时导致 NaN 预测。 #10095 由 Jörg Döpfert 提交。Fix 修复了
linear_model.RidgeClassifierCV
中的一个错误,其中参数store_cv_values
未实现,尽管在cv_values
中作为设置不同 alpha 的交叉验证值存储的方法进行了文档记录。 #10297 由 Mabel Villalba-Jiménez 提交。Fix 修复了
linear_model.ElasticNet
中的一个错误,该错误在使用参数copy_X=True
和check_input=False
时导致输入被覆盖。 #10581 由 Yacine Mazari 提交。Fix 修复了
sklearn.linear_model.Lasso
中的一个错误,其中系数在fit_intercept=False
时具有错误的形状。 #10687 由 Martin Hahn 提交。Fix 修复了
sklearn.linear_model.LogisticRegression
中的一个错误,其中multi_class='multinomial'
与二进制输出with warm_start=True
。 #10836 由 Aishwarya Srinivasan 提交。Fix 修复了
linear_model.RidgeCV
中的一个错误,其中使用整数alphas
会引发错误。 #10397 由 Mabel Villalba-Jiménez 提交。Fix 修复了在
linear_model.Lasso
和linear_model.ElasticNet
中计算间隙条件触发时的错误。 使用稀疏矩阵。#10992 由 Alexandre Gramfort 提交。Fix 修复了
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 提交。Fix 修复了一个错误,当 liblinear 和 libsvm 基于的估计器传递一个带有 64 位索引的 scipy.sparse 矩阵时会导致段错误。现在它们会引发一个 ValueError。#11327 由 Karan Dhingra 和 Joel Nothman 提交。
API Change
linear_model.LogisticRegression
的solver
和multi_class
参数的默认值将从版本 0.20 中的'liblinear'
和'ovr'
分别更改为版本 0.22 中的'lbfgs'
和'auto'
。当使用默认值时会引发 FutureWarning。#11905 由 Tom Dupre la Tour 和 Joel Nothman 提交。API Change 弃用
linear_model.Lars
中的positive=True
选项,因为底层实现已损坏。请改用linear_model.Lasso
。#9837 由 Alexandre Gramfort 提交。API Change
n_iter_
在linear_model.LogisticRegression
使用solver='lbfgs'
和linear_model.HuberRegressor
时可能与之前的版本不同。对于 Scipy <= 1.0.0,优化器可能会执行超过请求的最大迭代次数。现在这两个估计器将报告最多max_iter
次迭代,即使执行了更多次。#10723 由 Joel Nothman 提交。
sklearn.manifold
#
Efficiency 对
manifold.TSNE
中的 ‘exact’ 和 ‘barnes_hut’ 方法进行了速度改进。#10593 和 #10610 由 Tom Dupre la Tour 提交。Feature 在
manifold.Isomap.fit
中支持稀疏输入。 #8554 由 Leland McInnes 贡献。Feature
manifold.t_sne.trustworthiness
接受除欧几里得以外的度量标准。 #9775 由 William de Vazelhes 贡献。Fix 修复了
manifold.spectral_embedding
中的一个错误,其中谱归一化使用了除法而不是乘法。 #8129 由 Jan Margeta 、 Guillaume Lemaitre 和 Devansh D. 贡献。API Change Feature 弃用函数
manifold.t_sne.trustworthiness
中的precomputed
参数。取而代之的是,应使用新的参数metric
,该参数可以与任何兼容的度量标准一起使用,包括 ‘precomputed’,在这种情况下,输入矩阵X
应为成对距离或平方距离矩阵。 #9775 由 William de Vazelhes 贡献。API Change 弃用函数
manifold.t_sne.trustworthiness
中的precomputed
参数。取而代之的是,应使用新的参数metric
,该参数可以与任何兼容的度量标准一起使用,包括 ‘precomputed’,在这种情况下,输入矩阵X
应为成对距离或平方距离矩阵。 #9775 由 William de Vazelhes 贡献。
sklearn.metrics
#
Major Feature 添加了
metrics.davies_bouldin_score
度量标准,用于在没有真实标签的情况下评估聚类模型。 #10827 由 Luis Osa 贡献。Major Feature 添加了
metrics.balanced_accuracy_score
度量标准和相应的'balanced_accuracy'
评分器,用于二分类和多分类。 #8066 由 @xyguo 和 Aman Dalmia 贡献,以及 #10587 由 Joel Nothman 贡献。Feature 通过
max_fpr
参数在metrics.roc_auc_score
中提供部分 AUC。 #3840 由 Alexander Niederbühl 贡献。Feature 基于
metrics.brier_score_loss
的评分器也可用。#9521 由 Hanmin Qin 贡献。Feature 通过
average_method
参数增加了对metrics.normalized_mutual_info_score
和metrics.adjusted_mutual_info_score
归一化的控制。在版本 0.22 中,每个函数的默认归一化器将变为每个聚类的熵的*算术*平均值。#11124 由 Arya McCarthy 贡献。Feature 在
metrics.classification_report
中添加了output_dict
参数,以字典形式返回分类统计信息。#11160 由 Dan Barkhorn 贡献。Feature
metrics.classification_report
现在报告给定数据上的所有适用平均值,包括微平均、宏平均和加权平均,以及多标签数据的样本平均。#11679 由 Alexander Pacha 贡献。Feature
metrics.average_precision_score
现在通过pos_label
参数支持二进制y_true
而不是{0, 1}
或{-1, 1}
。#9980 由 Hanmin Qin 贡献。Feature
metrics.label_ranking_average_precision_score
现在支持sample_weight
。#10845 由 Jose Perez-Parras Toledano 贡献。Feature 在
metrics.pairwise.linear_kernel
中添加了dense_output
参数。当为 False 且两个输入都为稀疏时,将返回一个稀疏矩阵。#10999 由 Taylor G Smith 贡献。Efficiency
metrics.silhouette_score
和metrics.silhouette_samples
更加节省内存且运行更快。这避免了某些报告的冻结和内存错误。#11135 由 Joel Nothman 贡献。Fix 修复了在
metrics.precision_recall_fscore_support
中当传递截断的range(n_labels)
作为labels
值时的错误。#10377 由 Gaurav Dhingra 贡献。Fix 修复了由于浮点误差在非整数样本权重下
metrics.roc_auc_score
中的一个错误。#9786 由 Hanmin Qin 修复。Fix 修复了
metrics.roc_curve
有时从 y 轴开始而不是 (0, 0) 的错误,这与文档和其他实现不一致。请注意,这不会影响metrics.roc_auc_score
的结果 #10093 由 alexryndin 和 Hanmin Qin 修复。Fix 修复了一个避免整数溢出的错误。在
metrics.mutual_info_score
中将乘积转换为 64 位整数。#9772 由 Kumar Ashutosh 修复。Fix 修复了当
sample_weight
包含 0 时,metrics.average_precision_score
有时会返回nan
的错误。#9980 由 Hanmin Qin 修复。Fix 修复了
metrics.fowlkes_mallows_score
中的一个错误,以避免整数溢出。将contingency_matrix
的返回值转换为int64
,并计算平方根的乘积而不是乘积的平方根。#9515 由 Alan Liddell 和 Manh Dao 修复。API Change 弃用
metrics.auc
中的reorder
参数,因为它不再需要用于metrics.roc_auc_score
。此外,使用reorder=True
可能会隐藏输入中的浮点误差导致的错误。#9851 由 Hanmin Qin 提出。API Change 在
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 Change
metrics.pairwise_distances_argmin_min
和metrics.pairwise_distances_argmin
中的batch_size
参数已弃用,将在v0.22中移除。它不再有任何效果,因为批次大小由全局working_memory
配置决定。参见 限制工作内存 。#10280 由 Joel Nothman 和 Aman Dalmia 提交。
sklearn.mixture
#
Feature 在
mixture.GaussianMixture
和mixture.GaussianMixture
中添加了 fit_predict 函数,本质上等同于调用 fit 和 predict 。#10336 由 Shu Haoran 和 Andrew Peng 提交。Fix 修复了
mixture.BaseMixture
中的一个错误,其中报告的n_iter_
缺少一次迭代。这影响了mixture.GaussianMixture
和mixture.BayesianGaussianMixture
。#10740 由 Erich Schubert 和 Guillaume Lemaitre 提交。Fix 修复了
mixture.BaseMixture
及其子类mixture.GaussianMixture
和mixture.BayesianGaussianMixture
中的一个错误,其中lower_bound_
不是所有初始化中的最大下界(当n_init > 1
时),而只是最后一次初始化的下界。#10869 由 Aurélien Géron 提交。
sklearn.model_selection
#
Feature 在
model_selection.cross_validate
中添加了return_estimator
参数,以返回在每个分割上拟合的估计器。#9686 由 Aurélien Bellet 提交。Feature 如果
refit
设置为True
,新的refit_time_
属性将存储在model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中。这将允许测量执行完整拟合所需的总时间。 超参数优化和在整个数据集上重新拟合最佳模型。#11310 由 Matthias Feurer 提供。Feature 在
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 提供。Feature
BaseSearchCV
现在有一个实验性的私有接口,通过其_run_search
方法支持自定义参数搜索策略。请参阅model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中的实现,如果您使用此功能,请提供反馈。请注意,我们不保证此 API 在 0.20 版本之外的稳定性。#9599 由 Joel Nothman 提供。Enhancement 当在
scoring
关键字中传递多个指标时,在model_selection.cross_val_score
中添加改进的错误消息。#11006 由 Ming Li 提供。API Change 默认的交叉验证折数
cv
和model_selection.KFold
类分割器中的默认分割数n_splits
将从 3 变为 5,因为 3 折具有较大的方差。#11557 由 Alexandre Boucaud 提供。API Change
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
的iid
参数默认值将从True
变为False
,以对应于交叉验证的标准定义,并且该参数将在 0.24 版本中完全移除。此参数在交叉验证中不同测试集大小非常不均等的情况下具有最大的实际意义,即在基于组的 CV 策略中。#9085 由 Laurent Direr 和 Andreas Müller 提供。API Change
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
中的error_score
参数的默认值将在版本 0.22 中更改为np.NaN
。#10677 由 Kirill Zhdanovich 提交。API Change 在
model_selection.ParameterSampler
中,当实例化时n_iter
的值大于参数网格中的总参数空间时,引发的 ValueError 异常已更改为 UserWarning。现在n_iter
作为迭代次数的上限。#10982 由 Juliet Lawton 提交。API Change
model_selection.ParameterGrid
的无效输入现在会引发 TypeError。#10928 由 Solutus Immensus 提交。
sklearn.multioutput
#
Major Feature 添加了
multioutput.RegressorChain
用于多目标回归。#9257 由 Kumar Ashutosh 提交。
sklearn.naive_bayes
#
Major Feature 添加了
naive_bayes.ComplementNB
,实现了 Rennie 等人在 2003 年描述的 Complement Naive Bayes 分类器。#8190 由 Michael A. Alcorn 提交。Feature 在
naive_bayes.GaussianNB
中添加了var_smoothing
参数,以精确控制方差计算。#9681 由 Dmitry Mottl 提交。Fix 修复了
naive_bayes.GaussianNB
中的一个错误,该错误不正确地对总和为 1 的先验列表引发错误。#10005 由 Gaurav Dhingra 提交。Fix 修复了
naive_bayes.MultinomialNB
中的一个错误,该错误不接受向量值的伪计数(alpha)。#10346 由 Tobias Madsen 提交。
sklearn.neighbors
#
Efficiency
neighbors.RadiusNeighborsRegressor
和neighbors.RadiusNeighborsClassifier
现在 根据n_jobs
并行化,无论algorithm
如何。 #10887 由 Joël Billaud 贡献。Efficiency
sklearn.neighbors
查询方法现在在algorithm='brute'
时更加节省内存。 #11136 由 Joel Nothman 和 Aman Dalmia 贡献。Feature 在
neighbors.KernelDensity
的 fit 方法中添加sample_weight
参数,以在核密度估计中启用加权。 #4394 由 Samuel O. Ronsin 贡献。Feature 使用
neighbors.LocalOutlierFactor
进行新奇检测: 在neighbors.LocalOutlierFactor
中添加novelty
参数。当novelty
设置为 True 时,neighbors.LocalOutlierFactor
可以用于新奇检测,即对新未见数据进行预测。可用的预测方法有predict
、decision_function
和score_samples
。默认情况下,novelty
设置为False
,并且只有fit_predict
方法可用。 由 Albert Thomas 贡献。Fix 修复了
neighbors.NearestNeighbors
中的一个错误,当 a) 使用的距离度量是一个可调用对象且 b) 输入到 NearestNeighbors 模型的数据是稀疏的时,拟合 NearestNeighbors 模型会失败。 #9579 由 Thomas Kober 贡献。Fix 修复了一个错误,使得
neighbors.RadiusNeighborsRegressor
中的predict
方法可以在使用非均匀权重时处理空邻居集。同时,当样本没有找到邻居时会引发一个新的警告。 #9655 由 Andreas Bjerre-Nielsen 贡献。Fix Efficiency 修复了
KDTree
构建中的一个错误,导致构建和查询时间更快。 #11556 由 Jake VanderPlas 贡献。Fix 修复了
neighbors.KDTree
和neighbors.BallTree
中的一个错误,其中序列化的树对象会将它们的类型更改为超类BinaryTree
。 #11774 由 Nicolas Hug 贡献。
sklearn.neural_network
#
Feature 在
neural_network.BaseMultilayerPerceptron
、neural_network.MLPRegressor
和neural_network.MLPClassifier
中添加了n_iter_no_change
参数, 以控制未达到tol
改进的最大周期数。 #9456 由 Nicholas Nadeau 贡献。Fix 修复了
neural_network.BaseMultilayerPerceptron
、neural_network.MLPRegressor
和neural_network.MLPClassifier
中的一个错误, 新的n_iter_no_change
参数现在为 10,之前是硬编码的 2。 #9456 由 Nicholas Nadeau 贡献。Fix 修复了
neural_network.MLPRegressor
中的一个错误, 由于局部最小值或波动,拟合意外提前退出。 #9456 由 Nicholas Nadeau 贡献。
sklearn.pipeline
#
Feature
pipeline.Pipeline
的predict
方法现在将关键字参数传递给管道的最后一个估计器, 从而可以使用return_std
等参数,但需谨慎。 #9304 由 Breno Freitas 贡献。API Change
pipeline.FeatureUnion
现在支持'drop'
作为转换器来丢弃特征。 #11144 由 Thomas Fan 贡献。
sklearn.preprocessing
#
Major Feature 扩展了
preprocessing.OneHotEncoder
,允许将分类字符串特征编码为使用独热(或哑变量)编码方案的数值数组, 并添加了preprocessing.OrdinalEncoder
以转换为序数整数。这两个类现在处理所有特征类型的编码(也处理字符串值特征), 并根据特征中的唯一值推导类别,而不是根据特征中的最大值。 #9151 和 #10521 由 Vighnesh Birodkar 和 Joris Van den Bossche 贡献。Major Feature 新增
preprocessing.KBinsDiscretizer
,用于将连续特征转换为分类特征或独热编码特征。相关问题:#7668 , #9647 , #10195 , #10192 , #11272 , #11467 和 #11505 。由 Henry Lin 、 Hanmin Qin 、 Tom Dupre la Tour 和 Giovanni Giuseppe Costa 贡献。Major Feature 新增
preprocessing.PowerTransformer
,实现了 Yeo-Johnson 和 Box-Cox 幂变换。幂变换尝试找到一组特征参数变换,以近似地将数据映射到以零为中心且具有单位方差的正态分布。这在需要正态性和同方差性的情况下作为方差稳定变换非常有用。相关问题:#10210 由 Eric Chang 和 Maniteja Nandana 贡献,以及 #11520 由 Nicolas Hug 贡献。Major Feature 在以下预处理方法中忽略并处理 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 贡献。Feature
preprocessing.PolynomialFeatures
现在支持稀疏输入。相关问题:#10452 由 Aman Dalmia 和 Joel Nothman 贡献。Feature
preprocessing.RobustScaler
和preprocessing.robust_scale
可以使用稀疏矩阵进行拟合。 #11308 由 Guillaume Lemaitre 提交。Feature
preprocessing.OneHotEncoder
现在支持get_feature_names
方法来获取转换后的特征名称。 #10181 由 Nirvan Anjirbag 和 Joris Van den Bossche 提交。Feature 为
preprocessing.FunctionTransformer
添加了check_inverse
参数,以确保func
和inverse_func
互为逆函数。 #9399 由 Guillaume Lemaitre 提交。Feature
sklearn.preprocessing.MultiLabelBinarizer
的transform
方法现在会忽略任何未知类别。会发出警告,指出被忽略的未知类别。 #10913 由 Rodrigo Agundez 提交。Fix 修复了
preprocessing.LabelEncoder
中的错误,这些错误有时会在调用transform
或inverse_transform
时抛出错误,特别是在处理空数组时。 #10458 由 Mayur Kulkarni 提交。Fix 修复了在使用
inverse_transform
处理未见标签时preprocessing.LabelEncoder
中的 ValueError。 #9816 由 Charlie Newey 提交。Fix 修复了
preprocessing.OneHotEncoder
中的错误,该错误在返回稀疏矩阵输出时会丢弃dtype
。 #11042 由 Daniel Morales 提交。Fix 修复了在
with_mean=False
和with_std=False
的罕见情况下preprocessing.StandardScaler
中的fit
和partial_fit
错误,这些错误会导致多次调用fit
时崩溃,并且对于稀疏或密集矩阵输入的mean_
结果不一致。无论输入是稀疏还是密集矩阵,mean_
都将设置为None
。同时,对于两种输入类型,n_samples_seen_
也将被报告。 #11235 由 Guillaume Lemaitre 提交。API Change 弃用
n_values
和categorical_features
参数以及active_features_
、feature_indices_
和n_values_
属性 ofpreprocessing.OneHotEncoder
。n_values
参数可以用新的categories
参数替代,属性可以用新的categories_
属性替代。使用categorical_features
参数选择分类特征现在可以通过compose.ColumnTransformer
更好地支持。 #10521 by Joris Van den Bossche 。API Change 弃用
preprocessing.Imputer
并将其对应模块移动到impute.SimpleImputer
。 #9726 by Kumar Ashutosh 。API Change
preprocessing.Imputer
中的axis
参数在impute.SimpleImputer
中不再存在。其行为等同于axis=0
(沿列进行插补)。行方向的插补可以通过 FunctionTransformer 实现(例如,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X.T).T)
)。 #10829 by Guillaume Lemaitre 和 Gilberto Olimpio 。API Change
preprocessing.Imputer
和impute.SimpleImputer
之间的缺失值标记已更改。missing_values='NaN'
现在应为missing_values=np.nan
。 #11211 by Jeremie du Boisberranger 。API Change 在
preprocessing.FunctionTransformer
中,validate
的默认值将从True
变为False
在 0.22 版本中。 #10655 by Guillaume Lemaitre 。
sklearn.svm
#
Fix 修复了
svm.SVC
中的一个错误,当kernel
参数在 Python2 中为 Unicode 时,predict_proba
方法在密集输入时会引发意外的 TypeError。 #10412 by Jiongyan Zhang 。API Change 弃用
svm.OneClassSVM
中的random_state
参数,因为
底层实现并非随机。 #9497 由 Albert Thomas 提交。
API Change
svm.SVC
、NuSVC
、SVR
、NuSVR
、OneClassSVM
的gamma
参数默认值将从'auto'
更改为'scale'
在版本 0.22 中, 以更好地适应未缩放的特征。#8361 由 Gaurav Dhingra 和 Ting Neo 提交。
sklearn.tree
#
Enhancement 尽管是私有的(因此不保证 API 稳定性),
tree._criterion.ClassificationCriterion
和tree._criterion.RegressionCriterion
现在可以被 cimport 并扩展。 #10325 由 Camil Staps 提交。Fix 修复了
tree.BaseDecisionTree
中使用splitter="best"
时, 当 X 中的值接近无穷大时,分割阈值可能变为无穷大的错误。 #10536 由 Jonathan Ohayon 提交。Fix 修复了
tree.MAE
中的一个错误,确保在计算树的 MAE 不纯度时使用样本权重。 之前的行为可能导致选择次优分割,因为不纯度计算认为所有样本具有相同的权重重要性。 #11464 由 John Stott 提交。
sklearn.utils
#
Feature
utils.check_array
和utils.check_X_y
现在具有accept_large_sparse
参数,用于控制是否拒绝带有 64 位索引的 scipy.sparse 矩阵。 #11327 由 Karan Dhingra 和 Joel Nothman 提交。Efficiency Fix 当输入数据是 memmap(且
copy=False
)时,避免在utils.check_array
中复制数据。 #10663 由 Arthur Mensch 和 Loïc Estève 提交。API Change
utils.check_array
产生一个FutureWarning
,指示字节/字符串数组将被解释为十进制数。
多个模块#
Feature API Change 更一致的异常检测API: 在
svm.OneClassSVM
、ensemble.IsolationForest
、neighbors.LocalOutlierFactor
、covariance.EllipticEnvelope
中添加了score_samples
方法。它允许访问原始论文中的原始评分函数。 一个新的offset_
参数允许链接score_samples
和decision_function
方法。ensemble.IsolationForest
和neighbors.LocalOutlierFactor
的decision_function
方法中的contamination
参数用于定义这个offset_
, 使得异常值(相应地,正常值)具有负(相应地,正)的decision_function
值。默认情况下,contamination
保持不变为0.1,以进行弃用期。 在0.22版本中,它将被设置为 “auto”,从而使用方法特定的评分偏移。 在covariance.EllipticEnvelope
的decision_function
方法中,raw_values
参数已被弃用,因为在0.22版本中将始终返回偏移的马氏距离。 #9015 由 Nicolas Goix 贡献。Feature API Change 在
ensemble.IsolationForest
中引入了一个behaviour
参数,以确保向后兼容性。 在旧行为中,decision_function
独立于contamination
参数。因此,使用了一个依赖于contamination
参数的阈值属性。 在新行为中,decision_function
依赖于contamination
参数,使得0成为检测异常值的自然阈值。 设置行为为 “old” 已被弃用,并且在0.22版本中将不再可能。此外,行为参数将在0.24版本中被移除。 #11553 由 Nicolas Goix 贡献。API Change 当
verbose
设置为0时,为svm.LinearSVC
和linear_model.LogisticRegression
添加了收敛警告。 #10881 由 Alexandre Sevin 提交。API Change 将警告类型从
UserWarning
改为exceptions.ConvergenceWarning
,适用于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
。 #10306 由 Jonathan Siebert 提交。
杂项#
Major Feature 新增配置参数
working_memory
,用于控制分块操作中的内存消耗限制,例如新的metrics.pairwise_distances_chunked
。参见 限制工作内存 。 #10280 由 Joel Nothman 和 Aman Dalmia 提交。Feature 与 Scikit-learn 捆绑的
joblib
版本现在是 0.12。 这使用了新的默认多进程实现,名为 loky 。 虽然这可能会带来一些内存和通信开销,但它应该比依赖 Python 标准库多进程提供更好的跨平台稳定性。 #11741 由 Joblib 开发者提交,特别是 Thomas Moreau 和 Olivier Grisel 。Feature 新增环境变量以使用站点 joblib 而不是捆绑的 joblib(环境变量 )。 joblib 的主要 API 现在在
sklearn.utils
中公开。 #11166 由 Gael Varoquaux 提交。Feature 增加了对 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 提交。Feature 添加了一个实用方法
sklearn.show_versions
用于打印出与调试相关的信息。它包括用户系统、Python 可执行文件、主要库的版本以及 BLAS 绑定信息。#11596 由 Alexandre Boucaud 提交。Fix 修复了在元估计器上设置参数时的一个错误,涉及被包装的估计器及其参数。#9999 由 Marcus Voss 和 Joel Nothman 提交。
Fix 修复了一个错误,即调用
sklearn.base.clone
时不是线程安全的,可能导致“从空列表弹出”错误。#9569 由 Andreas Müller 提交。API Change
n_jobs
的默认值在所有相关函数和类中从1
更改为None
。n_jobs=None
意味着“未设置”。它通常会被解释为n_jobs=1
,除非当前的joblib.Parallel
后端上下文指定了其他值(参见 Glossary 获取更多信息)。请注意,此更改立即生效(即,没有弃用周期)。#11741 由 Olivier Grisel 提交。Fix 修复了验证助手中的一个错误,即传递 Dask DataFrame 会导致错误。#12462 由 Zachariah Miller 提交。
估计器检查的变更#
这些变更主要影响库开发者。
对于转换器的检查现在适用于实现了 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
检查在估计器初始化期间除了参数外没有私有设置。 #9378 由 Herilalaina Rakotoarison 提交utils.estimator_checks.check_estimator
中的检查集现在包括一个check_set_params
测试,该测试检查set_params
是否等同于在__init__
中传递参数,并在遇到参数验证时发出警告。 #7738 由 Alvin Chiang 提交为聚类指标添加不变性测试。 #8102 由 Ankita Sinha 和 Guillaume Lemaitre 提交
向
check_estimator
添加check_methods_subset_invariance
,该检查确保估计器方法在应用于数据子集时保持不变。 #10428 由 Jonathan Ohayon 提交在
utils.estimator_checks.check_estimator
中添加测试,以检查估计器是否能处理只读的 memmap 输入数据。 #10663 由 Arthur Mensch 和 Loïc Estève 提交check_sample_weights_pandas_series
现在使用 8 而不是 6 个样本来适应cluster.KMeans
中的默认聚类数。 #10933 由 Johannes Hansen 提交现在检查估计器是否
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