版本 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
中的一个问题,即在fit
和transform
之间列顺序不同的 DataFrames 可能会导致静默地将错误的列传递给remainder
转换器。 #14237 由Andreas Schuderer <schuderer>
提交。
sklearn.decomposition
#
修复 修复了
cross_decomposition.CCA
中的一个错误,提高了当Y
接近零时的数值稳定性。 #13903 由 Thomas Fan 提交。
sklearn.model_selection
#
修复 修复了
model_selection.StratifiedKFold
中的一个错误,该错误使每个类别的样本在相同的random_state
下进行洗牌,导致shuffle=True
失效。 #13124 由 Hanmin Qin 提交。
sklearn.neighbors
#
修复 修复了
neighbors.KernelDensity
中的一个错误,如果使用了sample_weight
,则无法从 pickle 中恢复。 #13772 由 Aditya Vyas 提交。
版本 0.20.3#
2019年3月1日
这是一个错误修复版本,对 0.20.0 中发布的功能进行了一些次要的文档改进和增强。
更新日志#
sklearn.cluster
#
修复 修复了
cluster.KMeans
中的一个错误,当n_jobs > 1
或n_jobs = -1
时,计算是单线程的。 #12949 由 Prabakaran Kumaresshan 提交。
sklearn.compose
#
修复 修复了
compose.ColumnTransformer
中的一个错误,以处理转换器列列表中负索引的情况。 #12946 由 Pierre Tallotte 提交。
sklearn.covariance
#
修复 修复了
covariance.graphical_lasso
中的回归问题,使其正确处理n_features=2
的情况。 #13276 由 Aurélien Bellet 提交。
sklearn.decomposition
#
修复 修复了
decomposition.sparse_encode
中的一个错误,当n_jobs > 1
或n_jobs = -1
时,计算是单线程的。 #13005 由 Prabakaran Kumaresshan 提交。
sklearn.datasets
#
效率
sklearn.datasets.fetch_openml
现在通过流式传输加载数据,避免了高内存使用。 #13312 由 Joris Van den Bossche 提交。
sklearn.feature_extraction
#
修复 修复了
feature_extraction.text.CountVectorizer
中的一个错误,该错误在非常大的词汇表下可能导致稀疏特征矩阵具有冲突的indptr
和indices
精度。 #11295 由 Gabriel Vacaliuc 提交。
sklearn.impute
#
修复 在
sklearn.impute.MissingIndicator
中添加了对非数值数据的支持,而sklearn.impute.SimpleImputer
对某些插补策略支持此功能,但 MissingIndicator 以前不支持。 #13046 由 Guillaume Lemaitre 提交。
sklearn.linear_model
#
修复 修复了
linear_model.MultiTaskElasticNet
和linear_model.MultiTaskLasso
在warm_start = True
时中断的错误。 #12360 由 Aakanksha Joshi 提交。
sklearn.preprocessing
#
修复 修复了
preprocessing.KBinsDiscretizer
中的一个错误,其中strategy='kmeans'
在转换过程中由于分箱边界未排序而失败。 #13134 由 Sandro Casagrande 提交。修复 修复了
preprocessing.OneHotEncoder
中的一个错误,其中categorical_features
的弃用与handle_unknown='ignore'
组合时处理不正确。 #12881 由 Joris Van den Bossche 提交。修复 在
preprocessing.KBinsDiscretizer
中,宽度过小(即 <= 1e-8)的 bin 会被移除并发出警告。 #13165 由 Hanmin Qin 提交。
sklearn.svm
#
修复 修复了
svm.SVC
,svm.NuSVC
,svm.SVR
,svm.NuSVR
和svm.OneClassSVM
中的一个错误,其中参数gamma
的scale
选项被错误地定义为1 / (n_features * X.std())
。它现在被定义为1 / (n_features * X.var())
。 #13221 由 Hanmin Qin 提交。
代码和文档贡献者#
感谢
Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Andreas Mueller, Aurélien Bellet, bertrandhaut, Bharat Raghunathan, Dowon, Emmanuel Arias, Fibinse Xavier, Finn O’Shea, Gabriel Vacaliuc, Gael Varoquaux, Guillaume Lemaitre, Hanmin Qin, joaak, Joel Nothman, Joris Van den Bossche, Jérémie Méhault, kms15, Kossori Aruku, Lakshya KD, maikia, Manuel López-Ibáñez, Marco Gorelli, MarcoGorelli, mferrari3, Mickaël Schoentgen, Nicolas Hug, pavlos kallis, Pierre Glaser, pierretallotte, Prabakaran Kumaresshan, Reshama Shaikh, Rohit Kapoor, Roman Yurchak, SandroCasagrande, Tashay Green, Thomas Fan, Vishaal Kapoor, Zhuyi Xue, Zijie (ZJ) Poh
版本 0.20.2#
2018年12月20日
这是一个错误修复版本,对 0.20.0 中发布的功能进行了一些次要的文档改进和增强。
已更改的模型#
以下估计器和函数,当使用相同数据和参数进行拟合时,可能会产生与以前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
sklearn.neighbors
当metric=='jaccard'
时 (错误修复)在某些情况下使用
'seuclidean'
或'mahalanobis'
度量 (错误修复)
更新日志#
sklearn.compose
#
修复 修复了
compose.make_column_transformer
中的一个问题,当 columns 是 pandas Index 或 pandas Series 时,会引发意外错误。 #12704 由 Hanmin Qin 提交。
sklearn.metrics
#
修复 修复了
metrics.pairwise_distances
和metrics.pairwise_distances_chunked
中的一个错误,其中"seuclidean"
的参数V
和"mahalanobis"
度量的VI
是在数据分割成块之后计算的,而不是在整个数据上预先计算的。 #12701 由 Jeremie du Boisberranger 提交。
sklearn.neighbors
#
修复 修复了
sklearn.neighbors.DistanceMetric
jaccard 距离函数,使其在比较两个全零向量时返回 0。 #12685 由 Thomas Fan 提交。
sklearn.utils
#
修复 在 0.20.0 中,对带有分类数据的
pandas.Series
调用utils.check_array
会引发错误,现在已恢复为返回预期输出。 #12699 由 Joris Van den Bossche 提交。
代码和文档贡献者#
感谢
adanhawth, Adrin Jalali, Albert Thomas, Andreas Mueller, Dan Stine, Feda Curic, Hanmin Qin, Jan S, jeremiedbb, Joel Nothman, Joris Van den Bossche, josephsalmon, Katrin Leinweber, Loic Esteve, Muhammad Hassaan Rafique, Nicolas Hug, Olivier Grisel, Paul Paczuski, Reshama Shaikh, Sam Waterbury, Shivam Kotwalia, Thomas Fan
版本 0.20.1#
2018年11月21日
这是一个错误修复版本,对 0.20.0 中发布的功能进行了一些次要的文档改进和增强。请注意,我们在此版本中也包含了一些 API 更改,因此从 0.20.0 更新到 0.20.1 后,您可能会收到一些额外的警告。
已更改的模型#
以下估计器和函数,当使用相同数据和参数进行拟合时,可能会产生与以前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
decomposition.IncrementalPCA
(错误修复)
更新日志#
sklearn.cluster
#
效率 使
cluster.MeanShift
不再尝试嵌套并行化,因为当n_jobs > 1
时,其开销会显著损害性能。 #12159 由 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 faces 数据集
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
的一个错误。每个一对多步骤都在joblib.Parallel
调用中运行,并修改一个公共参数,如果在后端使用进程而非线程,则会导致段错误。我们现在在joblib.Parallel
实例创建时使用require=sharedmem
。 #12518 由 Pierre Glaser 和 Olivier Grisel 提交。
sklearn.metrics
#
修复 修复了
metrics.pairwise.pairwise_distances_argmin_min
中的一个错误,当 metric 参数设置为“euclidean”时,它返回距离的平方根。 #12481 由 Jérémie du Boisberranger 提交。修复 修复了
metrics.pairwise.pairwise_distances_chunked
中的一个错误,该错误未能确保欧几里得距离的对角线为零。 #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
,以避免由于其方法序列化而导致的 pickling 错误。 #12171 由 Thomas Moreau 提交。
sklearn.preprocessing
#
修复 修复了
preprocessing.OrdinalEncoder
在手动传递指定类别时出现的错误。 #12365 由 Joris Van den Bossche 提交。修复 修复了
preprocessing.KBinsDiscretizer
中的一个错误,其中transform
方法会更改_encoder
属性。现在transform
方法是线程安全的。 #12514 由 Hanmin Qin 提交。修复 修复了
preprocessing.PowerTransformer
中的一个错误,其中 Yeo-Johnson 变换对于超出[0, 2]
范围的 lambda 参数是不正确的。 #12522 由 Nicolas Hug 提交。修复 修复了
preprocessing.OneHotEncoder
中的一个错误,其中当设置为忽略不同长度的未知 numpy 字符串时,转换失败。 #12471 由 Gabriel Marzinotto 提交。API 变更
preprocessing.power_transform
中method
参数的默认值将从box-cox
更改为yeo-johnson
,以与preprocessing.PowerTransformer
在 0.23 版本中保持一致。当使用默认值时,会引发 FutureWarning。 #12317 由 Eric Chang 提交。
sklearn.utils
#
修复 在
preprocessing.StandardScaler
和decomposition.IncrementalPCA
中,使用 float32 数据集时,平均值累加器使用 float64 以避免浮点精度问题。 #12338 由 bauks 提交。修复 在 0.20.0 中,对
pandas.Series
调用utils.check_array
会引发错误,现在已恢复为返回预期输出。 #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 的记忆。
亮点#
我们尝试改进对常见数据科学用例的支持,包括缺失值、分类变量、异构数据以及具有异常分布的特征/目标。特征中的缺失值(由 NaNs 表示)现在在列式预处理(如缩放器)中被接受。每个特征都忽略 NaNs 进行拟合,并且包含 NaNs 的数据可以进行转换。新的 sklearn.impute
模块提供了用于在缺失数据下学习的估计器。
ColumnTransformer
处理了 pandas.DataFrame 的不同特征或列需要不同预处理的情况。字符串或 pandas 分类列现在可以通过 OneHotEncoder
或 OrdinalEncoder
进行编码。
TransformedTargetRegressor
在回归目标需要转换才能建模时提供帮助。PowerTransformer
和 KBinsDiscretizer
加入 QuantileTransformer
作为非线性变换。
除此之外,我们还为多个估计器(包括 KMeans
、 BayesianRidge
和 KernelDensity
)添加了 sample_weight 支持,并改进了其他估计器(包括 MLPRegressor
、 GradientBoostingRegressor
和 SGDRegressor
)的停止准则。
此版本也是第一个附带由 Joel Nothman 开发的常见术语和 API 元素术语表。该术语表是一个参考资源,旨在帮助用户和贡献者熟悉 Scikit-learn 中使用的术语和约定。
如果您的贡献没有被列入亮点,很抱歉。这里还有很多其他内容……
已更改的模型#
以下估计器和函数,当使用相同数据和参数进行拟合时,可能会产生与以前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
cluster.MeanShift
(错误修复)Python 2 中的
decomposition.IncrementalPCA
(错误修复)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 发布说明未能提及
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 位浮点输入上的使用。在 0.18 和 0.19 版本中,当一些算法被更改为避免将 32 位数据转换为 64 位时,这变得更成问题。
更新日志#
已正式停止对 Python 3.3 的支持。
sklearn.cluster
#
主要功能
cluster.AgglomerativeClustering
现在通过linkage='single'
支持单链接聚类。 #9372 由 Leland McInnes 和 Steve Astels 提交。功能
cluster.KMeans
和cluster.MiniBatchKMeans
现在通过fit
函数中的新参数sample_weight
支持样本权重。 #10933 由 Johannes Hansen 提交。效率
cluster.KMeans
、cluster.MiniBatchKMeans
和cluster.k_means
在传入algorithm='full'
时现在强制使用行主序,从而提高运行时性能。 #10471 由 Gaurav Dhingra 提交。效率
cluster.DBSCAN
现在无论algorithm
如何,都根据n_jobs
进行并行化。 #8003 由 Joël Billaud 提交。增强
cluster.KMeans
现在在找到的独立簇数量小于n_clusters
时会发出警告。这可能发生在数据集中的独立点数量实际上小于所寻找的簇数量时。 #10059 由 Christian Braune 提交。修复 修复了
cluster.AffinityPropagation
的fit
方法在不收敛的情况下,将聚类中心存储为3D数组而非2D数组的错误。对于同一类别,修复了训练数据中所有样本相似度相等时出现未定义和任意行为的问题。 #9612。作者:Jonatan Samoocha。修复 修复了
cluster.spectral_clustering
中的一个错误,其中频谱的归一化使用了除法而非乘法。 #8129 作者:Jan Margeta、Guillaume Lemaitre 和 Devansh D.。修复 修复了
cluster.k_means_elkan
中的一个错误,其中返回的iteration
值比正确值少1。还在cluster.KMeans
的文档字符串中添加了缺失的n_iter_
属性。 #11353 作者:Jeremie du Boisberranger。修复 修复了
cluster.mean_shift
中的一个错误,即当存在多个具有相同强度的聚类时,分配的标签不确定。 #11901 作者:Adrin Jalali。API 变更 弃用
cluster.AgglomerativeClustering
中未使用的参数pooling_func
。 #9875 作者:Kumar Ashutosh。
sklearn.compose
#
新模块。
主要特性 添加了
compose.ColumnTransformer
,它允许对数组或 pandas DataFrames 的不同列应用不同的转换器。 #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
中的一个错误,使得特征重要性被求和然后归一化,而不是按每棵树进行归一化。之前的行为会过度加权在后期阶段出现的特征的基尼重要性。此问题仅影响特征重要性。 #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_
将返回一个包含每个自举选定索引的数组列表,而不是包含每个自举选定样本掩码的数组列表。索引允许重复样本,而掩码不允许此功能。 #9524 作者:Guillaume Lemaitre。修复 修复了
ensemble.BaseBagging
中的一个错误,其中在设置random_state
时,无法使用对象属性确定性地重现fit
结果。 #9723 作者:Guillaume Lemaitre。
sklearn.feature_extraction
#
新特性 允许在用词汇表初始化的未拟合
feature_extraction.text.CountVectorizer
中调用get_feature_names
。 #10908 作者:Mohamed Maskani。改进
idf_
现在可以在feature_extraction.text.TfidfTransformer
上设置。 #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
中的一个错误,以支持处理超过2·10⁹个词元(单词或n-gram)的大型数据集所需的64位稀疏数组索引。 #9147 作者:Claes-Fredrik Mannby 和 Roman Yurchak。修复 修复了
feature_extraction.text.TfidfVectorizer
中忽略参数dtype
的错误。此外,feature_extraction.text.TfidfTransformer
将保留浮点数的dtype
,如果请求的dtype
是整数,则会引发警告。 #10441 作者:Mayur Kulkarni 和 Guillaume Lemaitre。
sklearn.feature_selection
#
新特性 为
feature_selection.SelectFromModel
添加了选择K个最佳特征的功能。 #6689 作者:Nihar Sheth 和 Quazi Rahman。新特性 为
feature_selection.RFECV
添加了min_features_to_select
参数,以限制评估的特征数量。 #11293 作者:Brent Yi。新特性
feature_selection.RFECV
的拟合方法现在支持 groups。 #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
个 epoch 未能改善模型时,将学习率除以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
中的一个错误,其中参数store_cv_values
未实现,尽管它在cv_values
中被记录为设置不同 alpha 值的交叉验证值存储方式。 #10297 作者:Mabel Villalba-Jiménez。修复 修复了
linear_model.ElasticNet
中的一个错误,该错误在使用参数copy_X=True
和check_input=False
时会导致输入被覆盖。 #10581 作者:Yacine Mazari。修复 修复了
sklearn.linear_model.Lasso
中的一个错误,当fit_intercept=False
时,系数形状不正确。 #10687 作者:Martin Hahn。修复 修复了
sklearn.linear_model.LogisticRegression
中的一个错误,即当multi_class='multinomial'
且二元输出warm_start=True
时。 #10836 作者:Aishwarya Srinivasan。修复 修复了
linear_model.RidgeCV
中的一个错误,即使用整数alphas
会引发错误。 #10397 作者:Mabel Villalba-Jiménez。修复 修复了
linear_model.Lasso
和linear_model.ElasticNet
在处理稀疏矩阵时触发间隙计算的条件。 #10992 作者:Alexandre Gramfort。修复 修复了
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
和linear_model.Perceptron
中的一个错误,其中停止准则在收敛之前就停止了算法。添加了一个参数n_iter_no_change
,并默认设置为5。之前的行为等同于将参数设置为1。 #9043 作者:Tom Dupre la Tour。修复 修复了一个错误,即如果向 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
中 'exact' 和 'barnes_hut' 方法的速度得到提升。 #10593 和 #10610 作者:Tom Dupre la Tour。新特性
manifold.Isomap.fit
现在支持稀疏输入。 #8554 作者:Leland McInnes。新特性
manifold.t_sne.trustworthiness
除了欧几里得度量外,还接受其他度量。 #9775 作者:William de Vazelhes。修复 修复了
manifold.spectral_embedding
中的一个错误,其中频谱的归一化使用了除法而非乘法。 #8129 作者:Jan Margeta、Guillaume Lemaitre 和 Devansh D.。API 变更 新特性 弃用函数
manifold.t_sne.trustworthiness
中的precomputed
参数。作为替代,应使用新参数metric
及任何兼容的度量(包括 'precomputed'),在这种情况下,输入矩阵X
应是成对距离或平方距离矩阵。 #9775 作者:William de Vazelhes。API 变更 弃用函数
manifold.t_sne.trustworthiness
中的precomputed
参数。作为替代,应使用新参数metric
及任何兼容的度量(包括 'precomputed'),在这种情况下,输入矩阵X
应是成对距离或平方距离矩阵。 #9775 作者:William de Vazelhes。
sklearn.metrics
#
主要特性 添加了
metrics.davies_bouldin_score
度量,用于评估没有真实标签的聚类模型。 #10827 作者:Luis Osa。主要特性 添加了
metrics.balanced_accuracy_score
度量和对应的'balanced_accuracy'
评分器,用于二元和多类别分类。 #8066 作者:@xyguo 和 Aman Dalmia,以及 #10587 作者:Joel Nothman。新特性
metrics.roc_auc_score
中可通过max_fpr
参数获取部分 AUC。 #3840 作者:Alexander Niederbühl。新特性 基于
metrics.brier_score_loss
的评分器也可用。 #9521 作者:Hanmin Qin。新特性 通过
average_method
参数,增加了对metrics.normalized_mutual_info_score
和metrics.adjusted_mutual_info_score
中归一化的控制。在0.22版本中,每个的默认归一化器将变为每个聚类熵的算术平均值。 #11124 作者:Arya McCarthy。新特性 在
metrics.classification_report
中添加了output_dict
参数,以字典形式返回分类统计信息。 #11160 作者:Dan Barkhorn。新特性
metrics.classification_report
现在报告给定数据上所有适用的平均值,包括微平均、宏平均和加权平均,以及多标签数据的样本平均值。 #11679 作者:Alexander Pacha。新特性
metrics.average_precision_score
现在通过pos_label
参数支持除了{0, 1}
或{-1, 1}
之外的二元y_true
。 #9980 作者:Hanmin Qin。新特性
metrics.label_ranking_average_precision_score
现在支持sample_weight
。 #10845 作者:Jose Perez-Parras Toledano。新特性 为
metrics.pairwise.linear_kernel
添加了dense_output
参数。当为 False 且两个输入都是稀疏时,将返回一个稀疏矩阵。 #10999 作者:Taylor G Smith。效率提升
metrics.silhouette_score
和metrics.silhouette_samples
内存效率更高,运行速度更快。这避免了一些报告的卡顿和内存错误。 #11135 作者:Joel Nothman。修复 修复了
metrics.precision_recall_fscore_support
中的一个错误,即当截断的range(n_labels)
作为labels
的值传递时。 #10377 作者:Gaurav Dhingra。修复 修复了
metrics.roc_auc_score
中因非整数样本权重引起的浮点错误。 #9786 作者:Hanmin Qin。修复 修复了
metrics.roc_curve
有时从y轴而不是(0, 0)开始的错误,这与文档和其他实现不一致。请注意,这不会影响metrics.roc_auc_score
的结果 #10093 作者:alexryndin 和 Hanmin Qin。修复 修复了一个避免整数溢出的错误。在
metrics.mutual_info_score
中将乘积转换为64位整数。 #9772,由 Kumar Ashutosh 提交。修复 修复了一个错误,该错误导致当
sample_weight
包含0时,metrics.average_precision_score
有时会返回nan
。 #9980,由 Hanmin Qin 提交。修复 修复了
metrics.fowlkes_mallows_score
中的一个错误,以避免整数溢出。将contingency_matrix
的返回值转换为int64
,并计算平方根的乘积而非乘积的平方根。 #9515,由 Alan Liddell 和 Manh Dao 提交。API 变更 弃用
metrics.auc
中的reorder
参数,因为它不再是metrics.roc_auc_score
所必需的。此外,使用reorder=True
可能会由于输入中的浮点错误而隐藏错误。 #9851,由 Hanmin Qin 提交。API 变更 在
metrics.normalized_mutual_info_score
和metrics.adjusted_mutual_info_score
中,警告average_method
将有一个新的默认值。在0.22版本中,两者的默认归一化器将变为每个聚类熵的*算术*平均值。目前,metrics.normalized_mutual_info_score
默认使用average_method='geometric'
,而metrics.adjusted_mutual_info_score
默认使用average_method='max'
,以与0.19版本中的行为保持一致。 #11124,由 Arya McCarthy 提交。API 变更
metrics.pairwise_distances_argmin_min
和metrics.pairwise_distances_argmin
的batch_size
参数已被弃用,并将在v0.22中移除。它不再有任何效果,因为批处理大小由全局working_memory
配置决定。参见 限制工作内存。 #10280,由 Joel Nothman 和 Aman Dalmia 提交。
sklearn.mixture
#
新功能 为
mixture.GaussianMixture
和mixture.GaussianMixture
添加了 fit_predict 函数,该函数本质上等同于调用 fit 和 predict。 #10336,由 舒浩然 和 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,由 李明 提交。API 变更 在0.22版本中,
model_selection.KFold
类似拆分器中交叉验证折叠的默认数量cv
和拆分的默认数量n_splits
将从3更改为5,因为3折交叉验证的方差较大。 #11557,由 Alexandre Boucaud 提交。API 变更
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
的iid
参数的默认值将在0.22版本中从True
更改为False
,以符合交叉验证的标准定义,并且该参数将在0.24版本中完全移除。该参数在交叉验证中不同测试集大小极不相等(例如基于组的交叉验证策略)的情况下具有最大的实际意义。 #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) 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
改进的最大epochs数量。 #9456,由 Nicholas Nadeau 提交。修复 修复了
neural_network.BaseMultilayerPerceptron
、neural_network.MLPRegressor
和neural_network.MLPClassifier
中的一个错误,新的n_iter_no_change
参数现在为10,而非之前的硬编码值2。 #9456,由 Nicholas Nadeau 提交。修复 修复了
neural_network.MLPRegressor
中的一个错误,即拟合由于局部最小值或波动而过早地意外退出。 #9456,由 Nicholas Nadeau 提交。
sklearn.pipeline
#
新功能
pipeline.Pipeline
的predict
方法现在将关键字参数传递给管道的最后一个估计器,从而谨慎地在管道中使用return_std
等参数。 #9304,由 Breno Freitas 提交。API 变更
pipeline.FeatureUnion
现在支持使用'drop'
作为转换器来删除特征。 #11144,由 Thomas Fan 提交。
sklearn.preprocessing
#
主要功能 扩展了
preprocessing.OneHotEncoder
,允许使用 one-hot(或哑变量)编码方案将分类字符串特征编码为数字数组,并添加了preprocessing.OrdinalEncoder
以转换为序数整数。这两个类现在处理所有特征类型的编码(也处理字符串值特征),并根据特征中的唯一值而不是特征中的最大值推导类别。 #9151 和 #10521,由 Vighnesh Birodkar 和 Joris Van den Bossche 提交。主要功能 添加了
preprocessing.KBinsDiscretizer
,用于将连续特征转换为分类特征或 one-hot 编码特征。 #7668、#9647、#10195、#10192、#11272、#11467 和 #11505,由 Henry Lin、秦汉民、Tom Dupre la Tour 和 Giovanni Giuseppe Costa 提交。主要功能 添加了
preprocessing.PowerTransformer
,它实现了 Yeo-Johnson 和 Box-Cox 幂变换。幂变换尝试找到一组特征级的参数变换,以将数据近似映射到以零为中心、单位方差的高斯分布。这在需要正态性和同方差性的情况下作为方差稳定变换很有用。 #10210,由 Eric Chang 和 Maniteja Nandana 提交,以及 #11520,由 Nicolas Hug 提交。主要功能 在以下预处理方法中,NaN 值被忽略和处理:
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.RobustScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
类以及preprocessing.maxabs_scale
、preprocessing.minmax_scale
、preprocessing.robust_scale
、preprocessing.scale
、preprocessing.power_transform
、preprocessing.quantile_transform
函数,分别在问题 #11011、#11005、#11308、#11206、#11306 和 #10437 中解决。由 Lucija Gregov 和 Guillaume Lemaitre 提交。新功能
preprocessing.PolynomialFeatures
现在支持稀疏输入。 #10452,由 Aman Dalmia 和 Joel Nothman 提交。新功能
preprocessing.RobustScaler
和preprocessing.robust_scale
可以使用稀疏矩阵进行拟合。 #11308,由 Guillaume Lemaitre 提交。新功能
preprocessing.OneHotEncoder
现在支持get_feature_names
方法以获取转换后的特征名称。 #10181,由 Nirvan Anjirbag 和 Joris Van den Bossche 提交。新功能
preprocessing.FunctionTransformer
中添加了一个check_inverse
参数,以确保func
和inverse_func
互为逆函数。 #9399,由 Guillaume Lemaitre 提交。新功能
sklearn.preprocessing.MultiLabelBinarizer
的transform
方法现在会忽略任何未知类别。会发出一个警告,说明发现的未知类别已被忽略。 #10913,由 Rodrigo Agundez 提交。修复 修复了
preprocessing.LabelEncoder
中的错误,该错误有时会在使用空数组调用transform
或inverse_transform
时抛出错误。 #10458,由 Mayur Kulkarni 提交。修复 修复了
preprocessing.LabelEncoder
在使用inverse_transform
处理未见标签时引发 ValueError 的错误。 #9816,由 Charlie Newey 提交。修复 修复了
preprocessing.OneHotEncoder
中的错误,该错误在返回稀疏矩阵输出时会丢弃dtype
。 #11042,由 Daniel Morales 提交。修复 修复了
preprocessing.StandardScaler
中fit
和partial_fit
的错误,在with_mean=False
和with_std=False
的罕见情况下,多次调用fit
会导致崩溃,并且无论输入是稀疏矩阵还是密集矩阵,mean_
的结果都不一致。mean_
对于稀疏和密集输入都将设置为None
。n_samples_seen_
也将报告两种输入类型。 #11235,由 Guillaume Lemaitre 提交。API 变更 弃用
preprocessing.OneHotEncoder
的n_values
和categorical_features
参数,以及active_features_
、feature_indices_
和n_values_
属性。n_values
参数可以用新的categories
参数替换,而属性可以用新的categories_
属性替换。现在使用compose.ColumnTransformer
可以更好地支持使用categorical_features
参数选择分类特征。 #10521,由 Joris Van den Bossche 提交。API 变更 弃用
preprocessing.Imputer
并将相应的模块移至impute.SimpleImputer
。 #9726,由 Kumar Ashutosh 提交。API 变更
preprocessing.Imputer
中的axis
参数不再存在于impute.SimpleImputer
中。该行为等同于axis=0
(沿列进行插补)。行方向的插补可以使用 FunctionTransformer 完成(例如,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X.T).T)
)。 #10829,由 Guillaume Lemaitre 和 Gilberto Olimpio 提交。API 变更
preprocessing.Imputer
和impute.SimpleImputer
之间缺失值的 NaN 标记已更改。missing_values='NaN'
现在应为missing_values=np.nan
。 #11211,由 Jeremie du Boisberranger 提交。API 变更 在
preprocessing.FunctionTransformer
中,validate
的默认值将在0.22版本中从True
变为False
。 #10655,由 Guillaume Lemaitre 提交。
sklearn.svm
#
修复 修复了
svm.SVC
中的一个错误,即在 Python2 中,当参数kernel
是 unicode 时,predict_proba
方法在给定密集输入时会引发意外的 TypeError。 #10412,由 张炯琰 提交。API 变更 弃用
svm.OneClassSVM
中的random_state
参数,因为底层实现不是随机的。 #9497,由 Albert Thomas 提交。API 变更
svm.SVC
、NuSVC
、SVR
、NuSVR
、OneClassSVM
的gamma
参数的默认值将在0.22版本中从'auto'
更改为'scale'
,以便更好地处理未缩放的特征。 #8361,由 Gaurav Dhingra 和 Ting Neo 提交。
sklearn.tree
#
改进 尽管是私有的(因此不保证API稳定性),
tree._criterion.ClassificationCriterion
和tree._criterion.RegressionCriterion
现在可以被 cimport 和扩展。 #10325,由 Camil Staps 提交。修复 修复了
tree.BaseDecisionTree
中使用splitter="best"
时的错误,即当 X 中的值接近无限大时,分裂阈值可能变为无限大。 #10536,由 Jonathan Ohayon 提交。修复 修复了
tree.MAE
中的一个错误,以确保在计算树 MAE 杂质时使用样本权重。之前的行为可能导致选择次优的分裂,因为杂质计算认为所有样本的权重重要性相等。 #11464,由 John Stott 提交。
sklearn.utils
#
新功能
utils.check_array
和utils.check_X_y
现在有了accept_large_sparse
参数,用于控制是否拒绝带有64位索引的 scipy.sparse 矩阵。 #11327,由 Karan Dhingra 和 Joel Nothman 提交。效率 修复 当输入数据是 memmap(且
copy=False
)时,避免在utils.check_array
中复制数据。 #10663,由 Arthur Mensch 和 Loïc Estève 提交。API 变更
utils.check_array
将发出一个FutureWarning
,指出从0.22版本开始,字节/字符串数组将被解释为十进制数字。 #10229,由 Ryan Lee 提交。
多个模块#
新功能 API 变更 更一致的异常检测 API:在
svm.OneClassSVM
、ensemble.IsolationForest
、neighbors.LocalOutlierFactor
、covariance.EllipticEnvelope
中添加了score_samples
方法。它允许访问原始论文中的原始评分函数。新的offset_
参数允许连接score_samples
和decision_function
方法。ensemble.IsolationForest
和neighbors.LocalOutlierFactor
的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 变更 将
linear_model.logistic_regression_path
、linear_model.RANSACRegressor
、linear_model.ridge_regression
、gaussian_process.GaussianProcessRegressor
、gaussian_process.GaussianProcessClassifier
、decomposition.fastica
、cross_decomposition.PLSCanonical
、cluster.AffinityPropagation
和cluster.Birch
中收敛失败的警告类型从UserWarning
更改为exceptions.ConvergenceWarning
。 #10306,由 Jonathan Siebert 提交。
其他#
主要功能 添加了一个新的配置参数
working_memory
,用于控制分块操作中的内存消耗限制,例如新的metrics.pairwise_distances_chunked
。参见 限制工作内存。 #10280,由 Joel Nothman 和 Aman Dalmia 提交。特性 Scikit-learn 捆绑的
joblib
版本现在是 0.12。这使用了一个新的默认多进程实现,名为 loky。虽然这可能会带来一些内存和通信开销,但它应该比依赖 Python 标准库的多进程提供更好的跨平台稳定性。 #11741 由 Joblib 开发者完成,特别是 Thomas Moreau 和 Olivier Grisel。特性 添加了一个环境变量,用于使用站点 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
不是线程安全的,可能导致“从空列表中弹出”错误。 #9569 由 Andreas Müller 完成。API 变更 所有相关函数和类中
n_jobs
的默认值从1
更改为None
。n_jobs=None
表示未设置
。除非当前的joblib.Parallel
后端上下文另有指定,否则它通常会被解释为n_jobs=1
(有关更多信息,请参阅术语表)。请注意,此更改立即生效(即,没有弃用周期)。 #11741 由 Olivier Grisel 完成。修复 修复了验证助手中的一个错误,该错误在传递 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_methods_subset_invariance
添加到check_estimator
,该测试检查估计器方法在应用于数据子集时是否保持不变。 #10428 由 Jonathan Ohayon 完成。在
utils.estimator_checks.check_estimator
中添加测试,检查估计器是否可以处理只读内存映射输入数据。 #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