版本 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
中的一个bug,该bug无法处理转换器列列表中的负索引。#12946 由 Pierre Tallotte修复。
sklearn.covariance
#
修复 修复了
covariance.graphical_lasso
中的一个回归问题,以便正确处理n_features=2
的情况。#13276 由 Aurélien Bellet修复。
sklearn.decomposition
#
修复 修复了
decomposition.sparse_encode
中的一个bug,当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
中的一个bug,该bug会导致稀疏特征矩阵在非常大的词汇表下具有冲突的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
中的一个bug,当warm_start = True
时,这两个函数会中断。#12360 由 Aakanksha Joshi修复。
sklearn.preprocessing
#
修复 修复了
preprocessing.KBinsDiscretizer
中的一个bug,其中strategy='kmeans'
由于bin边界未排序,在转换过程中会出错。#13134 由 Sandro Casagrande修复。修复 修复了
preprocessing.OneHotEncoder
中的一个bug,其中categorical_features
的弃用与handle_unknown='ignore'
组合时处理不正确。#12881 由 Joris Van den Bossche修复。修复 宽度过小(即 <= 1e-8)的bin会在
preprocessing.KBinsDiscretizer
中发出警告后被移除。#13165 由 Hanmin Qin修复。
sklearn.svm
#
代码和文档贡献者#
感谢
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, Xue Zhuyi, Poh Zijie (ZJ)
版本 0.20.2#
2018年12月20日
这是一个错误修复版本,其中包含一些次要的文档改进以及对 0.20.0 中发布的功能的增强。
模型变更#
使用相同数据和参数拟合的以下估计器和函数,可能会产生与先前版本不同的模型。这通常是由于建模逻辑的更改(错误修复或增强)或随机抽样程序造成的。
sklearn.neighbors
当metric=='jaccard'
(bug修复)在某些情况下使用
'seuclidean'
或'mahalanobis'
度量 (bug修复)
变更日志#
sklearn.compose
#
修复 修复了
compose.make_column_transformer
中的一个问题,当列是pandas Index或pandas Series时,会引发意外错误。#12704 由秦涵敏提交。
sklearn.metrics
#
修复 修复了
metrics.pairwise_distances
和metrics.pairwise_distances_chunked
中的一个bug,其中"seuclidean"
的V
参数和"mahalanobis"
的VI
参数是在数据被分割成块之后计算的,而不是在整个数据上预先计算的。#12701 由Jeremie du Boisberranger提交。
sklearn.neighbors
#
修复 修复了
sklearn.neighbors.DistanceMetric
的Jaccard距离函数,使其在比较两个全零向量时返回0。#12685 由Thomas Fan提交。
sklearn.utils
#
修复 对具有分类数据的
pandas.Series
调用utils.check_array
,在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
(bug修复)
变更日志#
sklearn.cluster
#
效率提升 使得
cluster.MeanShift
不再尝试进行嵌套并行化,因为当n_jobs > 1
时,其开销会显著降低性能。 #12159 由 Olivier Grisel 完成。修复 修复了
cluster.DBSCAN
在使用预计算的稀疏邻域图时的错误,该错误会在即使对角线元素已存在的情况下,显式地添加零值。 #12105 由 Tom Dupre la Tour 完成。
sklearn.compose
#
修复 修复了
compose.ColumnTransformer
在堆叠类型不可转换为数值的列时的错误。 #11912 由 Adrin Jalali 完成。API变更
compose.ColumnTransformer
现在即使所有转换结果都是稀疏的,也会应用sparse_threshold
。 #12304 由 Andreas Müller 完成。API变更
compose.make_column_transformer
现在期望(transformer, columns)
而不是(columns, transformer)
,以保持与compose.ColumnTransformer
的一致性。 #12339 由 Adrin Jalali 完成。
sklearn.datasets
#
修复
datasets.fetch_openml
以正确使用本地缓存。 #12246 由 Jan N. van Rijn 完成。修复
datasets.fetch_openml
以正确处理忽略属性和行 ID 属性。 #12330 由 Jan N. van Rijn 完成。修复 修复了
datasets.make_classification
中的整数溢出问题,该问题在n_informative
参数值大于 64 时出现。 #10811 由 Roman Feldbauer 完成。修复 修复了 olivetti 人脸数据集的
DESCR
属性,使其指向datasets.fetch_olivetti_faces
中的正确位置。 #12441 由 Jérémie du Boisberranger 完成。修复
datasets.fetch_openml
在从本地缓存读取失败时重试下载。 #12517 由 Thomas Fan 完成。
sklearn.decomposition
#
修复 修复了
decomposition.IncrementalPCA
中的回归问题,其中 0.20.0 版本在拟合 IncrementalPCA 的最终批次样本数小于 n_components 时会引发错误。 #12234 由 Ming Li 完成。
sklearn.ensemble
#
修复 修复了一个主要影响
ensemble.RandomForestClassifier
的错误,其中当类别数超过 32 个时,class_weight='balanced_subsample'
会失败。 #12165 由 Joel Nothman 完成。修复 修复了影响
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
的错误,其中max_features
有时会被向下舍入为零。 #12388 由 Connor Tann 完成。
sklearn.feature_extraction
#
修复 修复了 v0.20.0 版本中的一个回归问题,其中
feature_extraction.text.CountVectorizer
和其他文本向量化器在使用自定义预处理器或分词器进行停用词验证时可能会出错。 #12393 由 Roman Yurchak修复。
sklearn.linear_model
#
修复
linear_model.SGDClassifier
和其变体在early_stopping=True
时,在多分类情况下不会使用一致的验证分割,这会导致在将这些估计器用作并行参数搜索或交叉验证的一部分时发生崩溃。 #12122 由 Olivier Grisel修复。修复 修复了影响
linear_model.SGDClassifier
多分类情况下的一个bug。每个一对多步骤都在joblib.Parallel
调用中运行,并修改一个公共参数,如果在使用进程而不是线程的后端中调用,则会导致段错误。我们现在在joblib.Parallel
实例创建时使用require=sharedmem
。 #12518 由 Pierre Glaser 和 Olivier Grisel修复。
sklearn.metrics
#
修复 修复了
metrics.pairwise.pairwise_distances_argmin_min
中的一个bug,当 metric 参数设置为“euclidean”时,它返回的是距离的平方根。 #12481 由 Jérémie du Boisberranger修复。修复 修复了
metrics.pairwise.pairwise_distances_chunked
中的一个bug,它没有确保欧几里得距离的对角线为零。 #12612 由 Andreas Müller修复。API变更
metrics.calinski_harabaz_score
已重命名为metrics.calinski_harabasz_score
,并将从 0.23 版本中移除。 #12211 由 Lisa Thomas,Mark Hannel 和 Melissa Ferrari修复。
sklearn.mixture
#
修复 确保
mixture.GaussianMixture
和mixture.BayesianGaussianMixture
的fit_predict
方法始终产生与fit
后跟predict
一致的赋值,即使收敛标准过于宽松或未满足。 #12451 由 Olivier Grisel修复。
sklearn.neighbors
#
修复 对于Python 2.7中的
neighbors.KDTree
和neighbors.BallTree
,强制将并行后端设置为threading
,以避免由其方法序列化引起的pickle错误。 #12171 由 Thomas Moreau修复。
sklearn.preprocessing
#
修复 修复了在传递手动指定的类别时
preprocessing.OrdinalEncoder
中的bug。 #12365 由 Joris Van den Bossche修复。修复 修复了
preprocessing.KBinsDiscretizer
中的一个bug,其中transform
方法会修改_encoder
属性。transform
方法现在是线程安全的。 #12514 由 Hanmin Qin修复。修复 修复了
preprocessing.PowerTransformer
中的一个bug,其中Yeo-Johnson变换对于[0, 2]
范围外的lambda参数是不正确的。 #12522 由 Nicolas Hug修复。修复 修复了
preprocessing.OneHotEncoder
中的一个bug,该bug在设置为忽略不同长度的未知numpy字符串时,transform方法会失败 #12471 由 Gabriel Marzinotto 修复。API变更
preprocessing.power_transform
中method
参数的默认值将从box-cox
更改为yeo-johnson
,以匹配0.23版本中的preprocessing.PowerTransformer
。使用默认值时会引发 FutureWarning 警告。 #12317 由 Eric Chang 完成。
sklearn.utils
#
修复 使用 float64 作为均值累加器,以避免在使用 float32 数据集时
preprocessing.StandardScaler
和decomposition.IncrementalPCA
中出现的浮点精度问题。 #12338 由 bauks 修复。修复 对
pandas.Series
调用utils.check_array
在 0.20.0 版本中会引发错误,现在再次返回预期的输出。 #12625 由 Andreas Müller 修复。
其他#
修复 通过设置环境变量
SKLEARN_SITE_JOBLIB
使用 site joblib 时,增加了对 joblib 0.11 以及 0.12+ 版本的兼容性。 #12350 由 Joel Nothman 和 Roman Yurchak 修复。修复 确保在使用 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
的向后不兼容性,当shuffle=True
时,由于#7823。
详细信息列在下面的变更日志中。
(虽然我们正在努力通过提供这些信息来更好地告知用户,但我们不能保证此列表完整。)
已知主要错误#
#11924:
linear_model.LogisticRegressionCV
使用solver='lbfgs'
和multi_class='multinomial'
在 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'
支持单链接聚类。 #9372 由 Leland McInnes 和 Steve Astels 完成。功能
cluster.KMeans
和cluster.MiniBatchKMeans
现在通过fit
函数中的新参数sample_weight
支持样本权重。 #10933 由 Johannes Hansen 完成。效率提升 使用
algorithm='full'
的cluster.KMeans
、cluster.MiniBatchKMeans
和cluster.k_means
现在强制使用行优先顺序,提高了运行速度。 #10471 由 Gaurav Dhingra 完成。效率提升
cluster.DBSCAN
现在根据n_jobs
并行化,而不管algorithm
如何。 #8003 由 Joël Billaud 完成。增强 如果发现的独特聚类数量小于
n_clusters
,cluster.KMeans
现在会发出警告。当数据集中的独特点数量实际上小于正在寻找的聚类数量时,可能会发生这种情况。 #10059 由 Christian Braune 完成。修复 修复了一个bug,该bug导致
cluster.AffinityPropagation
的fit
方法在不收敛的情况下将聚类中心存储为 3D 数组而不是 2D 数组。对于同一类,修复了在所有样本相似性都相等的情况下未定义和任意行为的bug。 #9612。由 Jonatan Samoocha 完成。修复 修复了
cluster.spectral_clustering
中的一个bug,该bug导致频谱的归一化使用除法而不是乘法。 #8129 由 Jan Margeta、Guillaume Lemaitre 和 Devansh D. 完成。修复 修复了
cluster.k_means_elkan
中的一个bug,该bug导致返回的iteration
比正确值小 1。还在cluster.KMeans
的文档字符串中添加了缺失的n_iter_
属性。 #11353 由 Jeremie du Boisberranger 完成。修复 修复了
cluster.mean_shift
中的一个bug,该bug导致如果存在多个强度相同的聚类,则分配的标签不确定。 #11901 由 Adrin Jalali 完成。API变更 弃用
cluster.AgglomerativeClustering
中未使用的参数pooling_func
。 #9875 由 Kumar Ashutosh 完成。
sklearn.compose
#
新增模块。
主要功能 添加了
compose.ColumnTransformer
,它允许将不同的转换器应用于数组或 pandas DataFrame 的不同列。 #9012 由 Andreas Müller 和 Joris Van den Bossche 完成,#11315 由 Thomas Fan 完成。主要功能 新增了
compose.TransformedTargetRegressor
,它可以在拟合回归模型之前转换目标变量 y。预测结果通过逆变换映射回原始空间。#9041 由 Andreas Müller 和 Guillaume Lemaitre 完成。
sklearn.covariance
#
效率提升
covariance.GraphicalLasso
的运行时间得到改进。#9858 由 Steven Brown 完成。API变更
covariance.graph_lasso
、covariance.GraphLasso
和covariance.GraphLassoCV
已分别重命名为covariance.graphical_lasso
、covariance.GraphicalLasso
和covariance.GraphicalLassoCV
,并将在 0.22 版本中移除。#9993 由 Artiem Krinitsyn 完成。
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 时,拟合阶段和转换阶段将分别使用训练数据的均值对训练数据和测试数据进行中心化处理。这修复了 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
中的错误,使其对特征重要性进行求和然后归一化,而不是基于每棵树进行归一化。之前的行为会过度加权出现在后期阶段的特征的 Gini 重要性。此问题仅影响特征重要性。 #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
#
新功能 将选择 K 个最佳特征的功能添加到
feature_selection.SelectFromModel
。 #6689 由 Nihar Sheth 和 Quazi Rahman 完成。新功能 将
min_features_to_select
参数添加到feature_selection.RFECV
以限制评估的特征计数。 #11293 由 Brent Yi 完成。新功能
feature_selection.RFECV
的拟合方法现在支持 分组。 #9656 由 Adam Greenhall 完成。错误修复 修复了在
feature_selection.RFECV
中,对于交叉验证分数相同时的极端情况,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
个周期未能改进模型时,将学习率除以 5。 #9043 由 Tom Dupre la Tour 完成。新增功能 为
linear_model.BayesianRidge
的拟合方法添加了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
中的一个bug,该bug导致参数store_cv_values
未实现,尽管在cv_values
中已将其记录为设置不同alpha的交叉验证值存储方式。#10297 由 Mabel Villalba-Jiménez修复。修复 修复了
linear_model.ElasticNet
中的一个bug,当使用参数copy_X=True
和check_input=False
时,会导致输入被覆盖。#10581 由 Yacine Mazari修复。修复 修复了
sklearn.linear_model.Lasso
中的一个bug,当fit_intercept=False
时,系数形状错误。#10687 由 Martin Hahn修复。修复 修复了
sklearn.linear_model.LogisticRegression
中的一个bug,当multi_class='multinomial'
具有二元输出且warm_start=True
时。#10836 由 Aishwarya Srinivasan修复。修复 修复了
linear_model.RidgeCV
中的一个bug,使用整数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
中的一个bug,该bug导致停止准则在算法收敛之前就停止了算法。添加了一个参数n_iter_no_change
,默认设置为5。之前的行为等同于将参数设置为1。#9043 由 Tom Dupre la Tour修复。修复 修复了一个bug,该bug会导致基于liblinear和libsvm的估计器在传递具有64位索引的scipy.sparse矩阵时发生段错误。现在它们会引发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变更 在
linear_model.LogisticRegression
(solver='lbfgs'
)和linear_model.HuberRegressor
中,n_iter_
可能与以前的版本有所不同。对于Scipy <= 1.0.0,优化器可能执行的迭代次数超过请求的最大迭代次数。现在,即使执行了更多迭代,这两个估计器最多也会报告max_iter
次迭代。#10723 由 Joel Nothman修复。
sklearn.manifold
#
效率提升
manifold.TSNE
中“精确”和“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
现在支持二元y_true
, 不仅限于{0, 1}
或{-1, 1}
,通过pos_label
参数实现。#9980 由 Hanmin Qin贡献。新增功能
metrics.label_ranking_average_precision_score
现在支持sample_weight
。#10845 由 Jose Perez-Parras Toledano贡献。新增功能 为
metrics.pairwise.linear_kernel
添加了dense_output
参数。当设置为 False 且两个输入都是稀疏矩阵时,将返回一个稀疏矩阵。#10999 由 Taylor G Smith贡献。效率提升
metrics.silhouette_score
和metrics.silhouette_samples
的内存效率更高,运行速度更快。这避免了一些已报告的冻结和 MemoryError。#11135 由 Joel Nothman贡献。Bug修复 修复了
metrics.precision_recall_fscore_support
中的一个 bug,该 bug 出现在将截断的range(n_labels)
作为labels
的值传递时。#10377 由 Gaurav Dhingra贡献。Bug修复 修复了
metrics.roc_auc_score
中由于浮点错误导致的 bug,该 bug 发生在使用非整数样本权重时。#9786 由 Hanmin Qin贡献。Bug修复 修复了一个 bug,该 bug 导致
metrics.roc_curve
有时从 y 轴开始,而不是从 (0, 0) 开始,这与文档和其他实现不一致。请注意,这不会影响metrics.roc_auc_score
的结果。#10093 由 alexryndin 和 Hanmin Qin贡献。Bug修复 修复了一个 bug 以避免整数溢出。在
metrics.mutual_info_score
中将乘积转换为 64 位整数。#9772 由 Kumar Ashutosh贡献。Bug修复 修复了一个 bug,该 bug 导致
metrics.average_precision_score
在sample_weight
包含 0 时有时返回nan
。#9980 由 Hanmin Qin贡献。Bug修复 修复了
metrics.fowlkes_mallows_score
中的一个 bug 以避免整数溢出。将contingency_matrix
的返回值转换为int64
,并计算平方根的乘积而不是乘积的平方根。#9515 由 Alan Liddell 和 Manh Dao贡献。API变更 弃用
metrics.auc
中的reorder
参数,因为它对于metrics.roc_auc_score
已不再需要。此外,使用reorder=True
可能会隐藏由输入中的浮点错误引起的 bug。#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
添加了函数 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 完成。增强 在
model_selection.cross_val_score
中添加了改进的错误消息,用于在scoring
关键字中传递多个指标的情况。 #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
中引发的 ValueError 异常更改为 UserWarning,用于n_iter
值大于参数网格中参数总数的情况。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 完成。功能 向
neighbors.KernelDensity
的拟合方法添加了sample_weight
参数,以启用核密度估计中的加权。 #4394 由 Samuel O. Ronsin 完成。功能 使用
neighbors.LocalOutlierFactor
进行新颖性检测:向neighbors.LocalOutlierFactor
添加novelty
参数。当novelty
设置为 True 时,neighbors.LocalOutlierFactor
即可用于新颖性检测,即对新的未见数据进行预测。可用的预测方法是predict
、decision_function
和score_samples
。默认情况下,novelty
设置为False
,并且仅fit_predict
方法可用。由 Albert Thomas 完成。修复 修复了
neighbors.NearestNeighbors
中的一个错误,当 a) 使用的距离度量是可调用的,并且 b)neighbors.NearestNeighbors
模型的输入是稀疏的时,拟合 NearestNeighbors 模型会失败。 #9579 由 Thomas Kober 完成。修复 修复了一个错误,以便
neighbors.RadiusNeighborsRegressor
中的predict
可以处理使用非均匀权重时的空邻居集。在找不到样本的邻居时还会发出新的警告。 #9655 由 Andreas Bjerre-Nielsen 完成。修复 效率提升 修复了
KDTree
构造中的一个错误,从而导致更快的构造和查询时间。 #11556 由 Jake VanderPlas 完成。修复 修复了
neighbors.KDTree
和neighbors.BallTree
中的一个错误,其中腌制的树对象会将其类型更改为超类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
中的一个 bug,现在新的n_iter_no_change
参数设置为 10,之前是硬编码为 2。 #9456 由 Nicholas Nadeau 完成。修复 修复了
neural_network.MLPRegressor
中的一个 bug,该 bug 导致拟合过早意外结束,原因是局部最小值或波动。 #9456 由 Nicholas Nadeau 完成。
sklearn.pipeline
#
新增功能
pipeline.Pipeline
的predict
方法现在将关键字参数传递给管道的最后一个估计器,从而允许谨慎使用诸如return_std
之类的参数。 #9304 由 Breno Freitas 完成。API 变更
pipeline.FeatureUnion
现在支持'drop'
作为转换器来删除特征。 #11144 由 Thomas Fan 完成。
sklearn.preprocessing
#
主要功能 扩展了
preprocessing.OneHotEncoder
,允许使用独热 (或虚拟) 编码方案将分类字符串特征编码为数值数组,并添加了preprocessing.OrdinalEncoder
用于转换为序数整数。这两个类现在处理所有特征类型的编码(也处理字符串值特征),并根据特征中的唯一值而不是特征中的最大值来推导类别。 #9151 和 #10521 由 Vighnesh Birodkar 和 Joris Van den Bossche 完成。主要功能 添加了
preprocessing.KBinsDiscretizer
,用于将连续特征转换为分类特征或独热编码特征。 #7668、#9647、#10195、#10192、#11272、#11467 和 #11505。由 Henry Lin、Hanmin Qin、Tom Dupre la Tour 和 Giovanni Giuseppe Costa 完成。主要功能 添加了
preprocessing.PowerTransformer
,它实现了 Yeo-Johnson 和 Box-Cox 幂变换。幂变换尝试找到一组特征级的参数变换,以将数据近似映射到以零为中心且方差为 1 的高斯分布。这在需要正态性和同方差性的情况下,作为方差稳定变换非常有用。 #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
函数分别在 issue #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 完成。功能 一个参数
check_inverse
已添加到preprocessing.FunctionTransformer
以确保func
和inverse_func
互为反函数。 #9399 由 Guillaume Lemaitre 完成。功能
sklearn.preprocessing.MultiLabelBinarizer
的transform
方法现在会忽略任何未知的类别。系统会发出警告,说明已找到并忽略了未知类别。 #10913 由 Rodrigo Agundez 完成。修复 修复了
preprocessing.LabelEncoder
中的错误,这些错误有时会在使用空数组调用transform
或inverse_transform
时引发错误。 #10458 由 Mayur Kulkarni 完成。修复 修复了在对未见过的标签使用
inverse_transform
时,preprocessing.LabelEncoder
中的 ValueError 错误。 #9816 由 Charlie Newey 完成。修复 修复了
preprocessing.OneHotEncoder
中的错误,该错误在返回稀疏矩阵输出时丢弃了dtype
。 #11042 由 Daniel Morales 完成。修复 修复了
fit
和partial_fit
在preprocessing.StandardScaler
中的罕见情况下的错误,当with_mean=False
和with_std=False
时,多次调用fit
会导致崩溃,并为mean_
提供不一致的结果(取决于输入是稀疏矩阵还是稠密矩阵)。对于稀疏和稠密输入,mean_
将被设置为None
。两种类型的输入都将报告n_samples_seen_
。 #11235 由 Guillaume Lemaitre 完成。API变更 弃用
n_values
和categorical_features
参数以及active_features_
、feature_indices_
和n_values_
属性,这些属性属于preprocessing.OneHotEncoder
。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
中的一个错误,在 Python 2 中,当参数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 稳定性),但现在可以 cimport 并扩展
tree._criterion.ClassificationCriterion
和tree._criterion.RegressionCriterion
。 #10325 由 Camil Staps 完成。修复 修复了
tree.BaseDecisionTree
中使用splitter="best"
时的一个 bug,该 bug 会导致当 X 中的值接近无穷大时,分割阈值变为无穷大。 #10536 由 Jonathan Ohayon 完成。修复 修复了
tree.MAE
中的一个 bug,以确保在计算树 MAE 杂质时使用样本权重。之前的行为可能会导致选择次优分割,因为杂质计算认为所有样本的权重都相同。 #11464 由 John Stott 完成。
sklearn.utils
#
功能
utils.check_array
和utils.check_X_y
现在具有accept_large_sparse
参数来控制是否应拒绝具有 64 位索引的 scipy.sparse 矩阵。 #11327 由 Karan Dhingra 和 Joel Nothman 完成。效率 修复 当输入数据为内存映射(且
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
的decision_function
方法的contamination
参数用于定义此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 成为其检测异常值的自然阈值。将 behaviour 设置为“old”已被弃用,在 0.22 版本中将不再支持。此外,behaviour 参数将在 0.24 版本中移除。 #11553 由 Nicolas Goix 完成。API变更 当
verbose
设置为 0 时,为svm.LinearSVC
和linear_model.LogisticRegression
添加了收敛警告。 #10881 由 Alexandre Sevin 完成。API变更 将
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 完成。
其他改进#
主要功能 添加了一个新的配置参数
working_memory
来控制分块操作(例如新的metrics.pairwise_distances_chunked
)中的内存消耗限制。参见 限制工作内存。 #10280 由 Joel Nothman 和 Aman Dalmia 完成。新增功能 Scikit-learn 捆绑的
joblib
版本现在是 0.12。它使用了一个名为 loky 的新的默认多进程实现。虽然这可能会产生一些内存和通信开销,但它应该比依赖 Python 标准库的多进程提供更好的跨平台稳定性。 #11741 由 Joblib 开发人员完成,特别是 Thomas Moreau 和 Olivier Grisel。新增功能 添加了一个环境变量,用于使用站点 joblib 而不是捆绑的 joblib(环境变量)。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 完成。错误修复 修复了在元估计器上设置参数时的一个错误,该错误涉及包装估计器及其参数。 #9999 由 Marcus Voss 和 Joel Nothman 完成。
修复 修复了调用
sklearn.base.clone
不是线程安全的bug,该bug可能导致“pop from empty list”错误。#9569 由Andreas Müller修复。API变更 所有相关函数和类的
n_jobs
默认值已从1
更改为None
。n_jobs=None
表示未设置
。通常情况下,它会被解释为n_jobs=1
,除非当前的joblib.Parallel
后端上下文另有指定(更多信息请参见术语表)。请注意,此更改会立即生效(即,无需弃用周期)。#11741 由Olivier Grisel完成。修复 修复了验证辅助函数中的一个bug,该bug会导致传递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 Wompfer,Freija Descamps,frsi,Gabriele Calvo,Gaël Varoquaux,Gaurav Dhingra,Georgi Peev,Gil Forsyth,Giovanni Giuseppe Costa,gkevinyen5418,goncalo-rodrigues,Gryllos Prokopis,Guillaume Lemaître,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,jakirkam,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,Loïc Estève,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 Melder,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 Mavkal,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