版本 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支持某些插值策略时未被支持。 #13046 由 Guillaume Lemaitre 提交。
sklearn.linear_model#
修复 修复了
linear_model.MultiTaskElasticNet和linear_model.MultiTaskLasso中的一个错误,当warm_start = True时它们会中断。 #12360 由 Aakanksha Joshi 提交。
sklearn.preprocessing#
修复 修复了
preprocessing.KBinsDiscretizer中的一个错误,其中strategy='kmeans'在转换过程中由于未排序的 bin 边缘而失败。 #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 版本中发布的功能的增强。
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
当
metric=='jaccard'时sklearn.neighbors(bug fix)在某些情况下使用
'seuclidean'或'mahalanobis'指标 (bug fix)
更新日志#
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.DistanceMetricjaccard 距离函数,使其在比较两个全零向量时返回 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 后可能会收到一些额外的警告。
更改的模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
decomposition.IncrementalPCA(bug fix)
更新日志#
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 提交。修复 修复了
datasets.fetch_olivetti_faces中的 olivetti faces 数据集DESCR属性指向错误位置的问题。 #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的一个错误,其中class_weight='balanced_subsample'在超过 32 个类别时失败。 #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,以避免由其方法序列化引起的 pickle 错误。 #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#
修复 使用 float64 进行均值累加器以避免在
preprocessing.StandardScaler和decomposition.IncrementalPCA中使用 float32 数据集时出现浮点精度问题。 #12338 由 bauks 提交。修复 在 0.20.0 中会引发错误的在
pandas.Series上调用utils.check_array,现在再次返回预期输出。 #12625 由 Andreas Müller 提交
杂项#
修复 当通过设置环境变量
SKLEARN_SITE_JOBLIB使用 site joblib 时,除了 0.12+ 之外,还添加了对 joblib 0.11 的兼容性。 #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 作为非线性变换。
除此之外,我们还为多个估计器添加了 sample_weight 支持(包括 KMeans、BayesianRidge 和 KernelDensity),并改进了其他估计器中的停止标准(包括 MLPRegressor、GradientBoostingRegressor 和 SGDRegressor)。
此版本也是第一个附带由 Joel Nothman 开发的 常见术语和 API 元素词汇表。该词汇表是一个参考资源,可帮助用户和贡献者熟悉 Scikit-learn 中使用的术语和约定。
很抱歉,如果您的贡献没有被列入重点。这里有很多内容……
更改的模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
cluster.MeanShift(bug fix)decomposition.IncrementalPCAin Python 2 (bug fix)decomposition.SparsePCA(bug fix)ensemble.GradientBoostingClassifier(bug fix affecting feature importances)isotonic.IsotonicRegression(bug fix)linear_model.ARDRegression(bug fix)linear_model.LogisticRegressionCV(bug fix)linear_model.OrthogonalMatchingPursuit(bug fix)linear_model.PassiveAggressiveClassifier(bug fix)linear_model.PassiveAggressiveRegressor(bug fix)linear_model.Perceptron(bug fix)linear_model.SGDClassifier(bug fix)linear_model.SGDRegressor(bug fix)metrics.roc_auc_score(bug fix)metrics.roc_curve(bug fix)neural_network.BaseMultilayerPerceptron(bug fix)neural_network.MLPClassifier(bug fix)neural_network.MLPRegressor(bug fix)v0.19.0 版本说明未能提及 #7823 导致的
model_selection.StratifiedKFold在shuffle=True时向后不兼容。
详细信息列在下面的更改日志中。
(虽然我们正试图通过提供此信息来更好地告知用户,但我们不能保证此列表完整。)
已知的主要错误#
#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#
主要功能
cluster.AgglomerativeClustering现在通过linkage='single'支持单链接聚类。 #9372 由 Leland McInnes 和 Steve Astels 提交。功能
cluster.KMeans和cluster.MiniBatchKMeans现在通过fit函数中的新参数sample_weight支持样本权重。 #10933 由 Johannes Hansen 提交。效率
cluster.KMeans、cluster.MiniBatchKMeans和使用algorithm='full'传递的cluster.k_means现在强制按行主顺序排列,提高了运行时间。 #10471 由 Gaurav Dhingra 提交。增强
cluster.DBSCAN现在根据n_jobs进行并行化,无论algorithm如何。 #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的 docstring 中添加了缺失的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 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#
Major Feature 添加了
datasets.fetch_openml函数,用于从 OpenML 获取数据集。OpenML 是一个免费的开放数据共享平台,将替代 mldata,因为它提供了更好的服务可用性。 #9908 by Andreas Müller and Jan N. van Rijn.Feature 在
datasets.make_blobs中,现在可以将列表传递给n_samples参数,以指示每个簇要生成的样本数。 #8617 by Maskani Filali Mohamed and Konstantinos Katrioplas.Feature 为具有 CSV 文件的
sklearn.datasets添加filename属性。 #9101 by alex-33 and Maskani Filali Mohamed.Feature
return_X_y参数已添加到多个数据集加载器中。 #10774 by Chris Catalfo.Fix 修复了
datasets.load_boston中的一个错误,该错误包含一个错误的数据点。 #10795 by Takeshi Yoshizawa.Fix 修复了
datasets.load_iris中的一个错误,该错误包含两个错误的数据点。 #11082 by Sadhana Srinivasan and Hanmin Qin.Fix 修复了
datasets.fetch_kddcup99中的一个错误,其中数据未正确打乱。 #9731 by Nicolas Goix.Fix 修复了
datasets.make_circles中的一个错误,其中无法生成奇数个数据点。 #10045 by Christian Braune.API Change 弃用了
sklearn.datasets.fetch_mldata,将在版本 0.22 中移除。mldata.org 已不再运行。在移除之前,仍然可以加载缓存的数据集。 #11466 by Joel Nothman.
sklearn.decomposition#
Feature
decomposition.dict_learning函数和模型现在支持正性约束。这适用于字典和稀疏代码。 #6374 by John Kirkham.Feature Fix
decomposition.SparsePCA现在公开了normalize_components参数。当设置为 True 时,训练数据和测试数据分别在拟合阶段和转换阶段使用训练均值进行中心化。这修复了 SparsePCA 的行为。当设置为 False 时(默认值),以前的异常行为仍然存在。False 值是为了向后兼容,不应使用。 #11585 by Ivan Panico.Efficiency 提高了
decomposition.dict_learning的效率。 #11420 and others by John Kirkham.Fix 修复了
decomposition.IncrementalPCA中非 informative 错误的问题:如果组件数量大于所选批量大小,现在会引发错误。n_components=None的情况也相应进行了调整。 #6452. By Wally Gauze.Fix 修复了
decomposition.IncrementalPCA的partial_fit方法在 Python 2 上使用整数除法而非浮点除法的错误。 #9492 by James Bourbeau.Fix 在
decomposition.PCA中,选择大于样本数的 n_components 参数现在会引发错误。同样,n_components=None的情况现在会选择n_samples和n_features中的最小值。 #8484 by Wally Gauze.Fix 修复了
decomposition.PCA中的一个错误,当使用n_components='mle'在 Python 3 上处理大型数据集时,用户会遇到意外错误。 #9886 by Hanmin Qin.Fix 修复了
decomposition.NMF计算 KL 散度时的下溢问题。 #10142 by Tom Dupre la Tour.Fix 修复了
decomposition.SparseCoder中的一个错误,该错误在使用只读内存映射数据结构并行运行 OMP 稀疏编码时发生。 #5956 by Vighnesh Birodkar and Olivier Grisel.
sklearn.discriminant_analysis#
Efficiency 提高了
sklearn.discriminant_analysis中_class_means和_class_cov的内存使用效率。 #10898 by Nanxin Chen.
sklearn.dummy#
Feature
dummy.DummyRegressor的predict方法现在有一个return_std选项。返回的标准差将为零。Feature
dummy.DummyClassifieranddummy.DummyRegressor现在只需要 X 是一个具有有限长度或形状的对象。 #9832 by Vrishank Bhardwaj.Feature
dummy.DummyClassifieranddummy.DummyRegressor现在可以在不提供测试样本的情况下进行评分。 #11951 by Rüdiger Busche.
sklearn.ensemble#
Feature
ensemble.BaggingRegressorandensemble.BaggingClassifier现在可以使用 X 中缺失/非有限值和/或多输出 Y 进行拟合,以支持包装执行自己的 imputed 的管道。 #9707 by Jimmy Wan.Feature
ensemble.GradientBoostingClassifierandensemble.GradientBoostingRegressor现在支持通过n_iter_no_change、validation_fraction和tol进行早期停止。 #7071 by Raghav RVFeature 在
ensemble.VotingClassifier中添加了named_estimators_参数,用于访问已拟合的估计器。 #9157 by Herilalaina Rakotoarison.Fix 修复了使用
warm_start=True拟合ensemble.GradientBoostingClassifier或ensemble.GradientBoostingRegressor时的一个错误,该错误先前会因为 CSC 矩阵未转换为decision_function所需的 CSR 格式而导致分段错误。同样,Fortran 顺序数组在密集情况下被转换为 C 顺序数组。 #9991 by Guillaume Lemaitre.Fix 修复了
ensemble.GradientBoostingRegressorandensemble.GradientBoostingClassifier中的一个错误,该错误现在将特征重要性求和然后标准化,而不是按每棵树进行标准化。以前的行为会过度加权后期阶段出现的特征的 Gini 重要性。此问题仅影响特征重要性。 #11176 by Gil Forsyth.API Change
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor和ensemble.RandomTreesEmbedding的n_estimators参数的默认值将从版本 0.20 中的 10 更改为 0.22 中的 100。当使用默认值时,会引发 FutureWarning。 #11542 by Anna Ayzenshtat.API Change 派生自
ensemble.BaseBagging的类。属性estimators_samples_将返回一个数组列表,其中包含为每个引导程序选择的索引,而不是包含为每个引导程序选择的样本掩码的数组列表。索引允许重复样本,而掩码不允许此功能。 #9524 by Guillaume Lemaitre.Fix
ensemble.BaseBagging修复了当设置random_state时无法使用对象属性确定性地重现fit结果的问题。 #9723 by Guillaume Lemaitre.
sklearn.feature_extraction#
Feature 允许在未拟合的
feature_extraction.text.CountVectorizer中调用get_feature_names,前提是使用词汇表进行初始化。 #10908 by Mohamed Maskani.Enhancement
idf_现在可以设置在feature_extraction.text.TfidfTransformer上。 #10899 by Sergey Melderis.Fix 修复了
feature_extraction.image.extract_patches_2d中的一个错误,该错误会在max_patches大于或等于所有可能补丁数时抛出异常,而不是简单地返回可能的补丁数。 #10101 by Varun AgrawalFix 修复了
feature_extraction.text.CountVectorizer、feature_extraction.text.TfidfVectorizer、feature_extraction.text.HashingVectorizer中的一个错误,以支持处理超过 2·10⁹ 个 token(单词或 n-gram)的大型数据集所需的 64 位稀疏数组索引。 #9147 by Claes-Fredrik Mannby and Roman Yurchak.Fix 修复了
feature_extraction.text.TfidfVectorizer中忽略参数dtype的错误。此外,feature_extraction.text.TfidfTransformer将保留浮点dtype,如果请求的dtype是整数,则会引发警告。 #10441 by Mayur Kulkarni and Guillaume Lemaitre.
sklearn.feature_selection#
Feature 添加了
feature_selection.SelectFromModel的选择 K 个最佳特征功能。 #6689 by Nihar Sheth and Quazi Rahman.Feature 为
feature_selection.RFECV添加了min_features_to_select参数,以限制评估的特征计数。 #11293 by Brent Yi.Feature
feature_selection.RFECV的拟合方法现在支持 groups。 #9656 by Adam Greenhall.Fix 修复了
feature_selection.RFECV中 CV 分数平分时的n_features_to_compute边缘情况计算。 #9222 by Nick Hoh.
sklearn.gaussian_process#
Efficiency 在
gaussian_process.GaussianProcessRegressor中,当使用return_std=True时,predict方法更快,特别是连续多次调用时。 #9234 by andrewww and Minghui Liu.
sklearn.impute#
新模块,采用
preprocessing.Imputer作为impute.SimpleImputer,并进行了微小更改(请参阅下面的 preprocessing)。Major Feature 添加了
impute.MissingIndicator,用于生成缺失值的二进制指示符。 #8075 by Maniteja Nandana and Guillaume Lemaitre.Feature
impute.SimpleImputer有一个新的策略'constant',用于使用fill_value参数给定的固定值填充缺失值。此策略支持数字和非数字数据,'most_frequent'策略现在也支持。 #11211 by Jeremie du Boisberranger.
sklearn.isotonic#
Fix 修复了
isotonic.IsotonicRegression中的一个错误,该错误在将模型拟合到涉及具有相同 X 值的点的数据时错误地合并了权重。 #9484 by 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个 epoch 未能改进模型时将学习率除以 5。 #9043 by Tom Dupre la Tour.Feature 在
linear_model.BayesianRidge的拟合方法中添加了sample_weight参数,用于加权线性回归。 #10112 by Peter St. John.Fix 修复了
logistic.logistic_regression_path中的一个错误,确保当multiclass='multinomial'时返回的系数正确。以前,某些系数会相互覆盖,导致linear_model.LogisticRegressionCV中的结果不正确。 #11724 by Nicolas Hug.Fix 修复了
linear_model.LogisticRegression中的一个错误,其中当使用参数multi_class='multinomial'时,predict_proba方法在二元结果情况下返回不正确的概率。 #9939 by Roger Westover.Fix 修复了
linear_model.LogisticRegressionCV中的一个错误,其中score方法总是计算准确率,而不是scoring参数给定的指标。 #10998 by Thomas Fan.Fix 修复了
linear_model.LogisticRegressionCV中的一个错误,其中在多类设置中,即使设置了'multinomial',交叉验证分数也始终使用 'ovr' 策略计算。 #8720 by William de Vazelhes.Fix 修复了
linear_model.OrthogonalMatchingPursuit中的一个错误,该错误在设置normalize=False时会中断。 #10071 by Alexandre Gramfort.Fix 修复了
linear_model.ARDRegression中的一个错误,该错误导致标准差和系数的估计更新不正确。 #10153 by Jörg Döpfert.Fix 修复了
linear_model.ARDRegression和linear_model.BayesianRidge中的一个错误,该错误导致在拟合常量目标时出现 NaN 预测。 #10095 by Jörg Döpfert.Fix 修复了
linear_model.RidgeClassifierCV中的一个错误,其中参数store_cv_values未实现,尽管它在cv_values中被记录为设置交叉验证值存储的方法,用于不同的 alpha 值。 #10297 by Mabel Villalba-Jiménez.Fix 修复了
linear_model.ElasticNet中的一个错误,该错误在使用参数copy_X=True和check_input=False时导致输入被覆盖。 #10581 by Yacine Mazari.Fix 修复了
sklearn.linear_model.Lasso中的一个错误,其中当fit_intercept=False时,系数的形状不正确。 #10687 by Martin Hahn.Fix 修复了
sklearn.linear_model.LogisticRegression中的一个错误,其中multi_class='multinomial'与二元输出和warm_start=True一起使用时出现问题。 #10836 by Aishwarya Srinivasan.Fix 修复了
linear_model.RidgeCV中的一个错误,其中使用整数alphas会引发错误。 #10397 by Mabel Villalba-Jiménez.Fix 修复了
linear_model.Lasso和linear_model.ElasticNet中在处理稀疏矩阵时触发间隙计算的条件。 #10992 by 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 by Tom Dupre la Tour.Fix 修复了一个错误,即基于 liblinear 和 libsvm 的估计器如果传递具有 64 位索引的 scipy.sparse 矩阵,则会发生段错误。它们现在会引发 ValueError。 #11327 by Karan Dhingra and Joel Nothman.
API Change
linear_model.LogisticRegression的solver和multi_class参数的默认值将分别从版本 0.20 中的'liblinear'和'ovr'更改为版本 0.22 中的'lbfgs'和'auto'。当使用默认值时,会引发 FutureWarning。 #11905 by Tom Dupre la Tour and Joel Nothman.API Change 弃用了
linear_model.Lars中的positive=True选项,因为底层实现已损坏。请改用linear_model.Lasso。 #9837 by Alexandre Gramfort.API Change 在
linear_model.LogisticRegression中,使用solver='lbfgs'和linear_model.HuberRegressor时,n_iter_可能会与以前的版本有所不同。对于 Scipy <= 1.0.0,优化器执行的迭代次数可能超过请求的最大迭代次数。现在,即使执行了更多迭代,这两个估计器最多只会报告max_iter次迭代。 #10723 by Joel Nothman.
sklearn.manifold#
Efficiency 提高了
manifold.TSNE中 'exact' 和 'barnes_hut' 方法的速度。 #10593 and #10610 by Tom Dupre la Tour.Feature
manifold.Isomap.fit支持稀疏输入。 #8554 by Leland McInnes.Feature
manifold.t_sne.trustworthiness接受除欧几里得之外的其他指标。 #9775 by William de Vazelhes.Fix 修复了
manifold.spectral_embedding中的一个错误,其中谱的归一化使用了除法而不是乘法。 #8129 by Jan Margeta, Guillaume Lemaitre, and Devansh D..API Change Feature 弃用了函数
manifold.t_sne.trustworthiness中的precomputed参数。相反,应使用新参数metric和任何兼容的指标,包括 'precomputed',在这种情况下,输入矩阵X应为成对距离或平方距离矩阵。 #9775 by William de Vazelhes.API Change 弃用了函数
manifold.t_sne.trustworthiness中的precomputed参数。相反,应使用新参数metric和任何兼容的指标,包括 'precomputed',在这种情况下,输入矩阵X应为成对距离或平方距离矩阵。 #9775 by William de Vazelhes.
sklearn.metrics#
Major Feature 添加了
metrics.davies_bouldin_score指标,用于评估没有地面真相的聚类模型。 #10827 by Luis Osa.Major Feature 添加了
metrics.balanced_accuracy_score指标和相应的'balanced_accuracy'评分器,用于二元和多类分类。 #8066 by @xyguo and Aman Dalmia, and #10587 by Joel Nothman.Feature 通过
metrics.roc_auc_score中的max_fpr参数可以使用部分 AUC。 #3840 by Alexander Niederbühl.Feature 基于
metrics.brier_score_loss的评分器也可用。 #9521 by Hanmin Qin.Feature 通过
average_method参数添加了对metrics.normalized_mutual_info_scoreandmetrics.adjusted_mutual_info_score中归一化的控制。在版本 0.22 中,每个的默认归一化器将成为每个聚类熵的算术平均值。 #11124 by Arya McCarthy.Feature 在
metrics.classification_report中添加了output_dict参数,将分类统计信息作为字典返回。 #11160 by Dan Barkhorn.Feature
metrics.classification_report现在报告给定数据上的所有适用平均值,包括微平均、宏平均和加权平均,以及多标签数据的样本平均值。 #11679 by Alexander Pacha.Feature
metrics.average_precision_score现在通过pos_label参数支持y_true为除{0, 1}或{-1, 1}之外的二元输出。 #9980 by Hanmin Qin.Feature
metrics.label_ranking_average_precision_score现在支持sample_weight。 #10845 by Jose Perez-Parras Toledano.Feature 为
metrics.pairwise.linear_kernel添加了dense_output参数。当设置为 False 且两个输入都是稀疏时,将返回一个稀疏矩阵。 #10999 by Taylor G Smith.Efficiency
metrics.silhouette_scoreandmetrics.silhouette_samples内存效率更高,运行速度更快。这避免了一些报告的冻结和 MemoryErrors。 #11135 by Joel Nothman.Fix 修复了
metrics.precision_recall_fscore_support中的一个错误,当截断的range(n_labels)作为labels的值传递时。 #10377 by Gaurav Dhingra.Fix 修复了
metrics.roc_auc_score中非整数样本权重导致的浮点错误。 #9786 by Hanmin Qin.Fix 修复了一个错误,即
metrics.roc_curve有时从 y 轴而不是 (0, 0) 开始,这与文档和其他实现不一致。请注意,这不会影响metrics.roc_auc_score的结果。 #10093 by alexryndin and Hanmin Qin.Fix 修复了一个避免整数溢出的错误。将
metrics.mutual_info_score中的乘积转换为 64 位整数。 #9772 by Kumar Ashutosh.Fix 修复了一个错误,即当
sample_weight包含 0 时,metrics.average_precision_score有时会返回nan。 #9980 by Hanmin Qin.Fix 修复了
metrics.fowlkes_mallows_score中的一个错误,避免了整数溢出。将contingency_matrix的返回值转换为int64,并计算平方根的乘积而不是乘积的平方根。 #9515 by Alan Liddell and Manh Dao.API Change 弃用了
metrics.auc中的reorder参数,因为metrics.roc_auc_score不再需要它。此外,使用reorder=True可能会隐藏由于输入中的浮点错误导致的错误。 #9851 by 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中的一个错误,即当n_init > 1时,lower_bound_不是所有初始化中最大下界,而只是最后一次初始化的下界。#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 在
model_selection.cross_val_score中,当在scoring关键字中传递多个指标时,添加了改进的错误消息。#11006 由 Ming Li 提供。API Change 在 0.22 中,交叉验证折叠的默认数量
cv和model_selection.KFold样式的分割器中的默认分割数量n_splits将从 3 更改为 5,因为 3 折叠具有很大的方差。#11557 由 Alexandre Boucaud 提供。API Change
model_selection.GridSearchCV和model_selection.RandomizedSearchCV的iid参数的默认值将在版本 0.22 中从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中引发的 ValueError 异常,对于使用大于参数网格中总参数空间的n_iter值实例化类的情况,更改为 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 当
algorithm='brute'时,sklearn.neighbors查询方法现在更节省内存。#11136 由 Joel Nothman 和 Aman Dalmia 提供。Feature 在
neighbors.KernelDensity的拟合方法中添加了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改进的最大 epoch 数。#9456 由 Nicholas Nadeau 提供。Fix 修复了
neural_network.BaseMultilayerPerceptron、neural_network.MLPRegressor和neural_network.MLPClassifier中的一个错误,其中新的n_iter_no_change参数现在从以前的硬编码值 2 更改为 10。#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,允许使用 one-hot(或虚拟)编码方案将分类字符串特征编码为数字数组,并添加了preprocessing.OrdinalEncoder以转换为序数整数。这两个类现在处理所有特征类型的编码(也处理字符串值特征),并根据特征中的唯一值而不是特征中的最大值推导类别。#9151 和 #10521 由 Vighnesh Birodkar 和 Joris Van den Bossche 提供。Major Feature 添加了
preprocessing.KBinsDiscretizer,用于将连续特征转换为分类或 one-hot 编码特征。#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 修复了
preprocessing.LabelEncoder在对未见标签使用inverse_transform时引发 ValueError 的问题。#9816 由 Charlie Newey 提供。Fix 修复了
preprocessing.OneHotEncoder中的一个错误,该错误在返回稀疏矩阵输出时丢弃了dtype。#11042 由 Daniel Morales 提供。Fix 修复了
preprocessing.StandardScaler中的fit和partial_fit中的一个错误,该错误在with_mean=False和with_std=False的罕见情况下,通过多次调用fit会崩溃,并且无论输入是稀疏矩阵还是密集矩阵,mean_的结果都不一致。mean_将在稀疏和密集输入时均设置为None。n_samples_seen_也将报告两种输入类型。#11235 由 Guillaume Lemaitre 提供。API Change 弃用了
preprocessing.OneHotEncoder的n_values和categorical_features参数以及active_features_、feature_indices_和n_values_属性。可以使用新的categories参数替换n_values参数,并使用新的categories_属性替换这些属性。现在使用compose.ColumnTransformer可以更好地支持使用categorical_features参数选择分类特征。#10521 由 Joris Van den Bossche 提供。API Change 弃用了
preprocessing.Imputer并将其相应的模块移动到impute.SimpleImputer。#9726 由 Kumar Ashutosh 提供。API Change
preprocessing.Imputer中的axis参数不再出现在impute.SimpleImputer中。其行为等同于axis=0(沿列插值)。可以通过 FunctionTransformer 执行按行插值(例如,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X.T).T))。#10829 由 Guillaume Lemaitre 和 Gilberto Olimpio 提供。API Change
preprocessing.Imputer和impute.SimpleImputer之间缺失值的 NaN 标记已更改。missing_values='NaN'现在应为missing_values=np.nan。#11211 由 Jeremie du Boisberranger 提供。API Change 在
preprocessing.FunctionTransformer中,validate的默认值将在 0.22 中从True更改为False。#10655 由 Guillaume Lemaitre 提供。
sklearn.svm#
Fix 修复了
svm.SVC中的一个错误,即在 Python2 中当参数kernel为 unicode 时,predict_proba方法在给定密集输入时会引发意外的 TypeError。#10412 由 Jiongyan Zhang 提供。API Change 弃用了
svm.OneClassSVM中的random_state参数,因为底层实现不是随机的。#9497 由 Albert Thomas 提供。API Change
svm.SVC、NuSVC、SVR、NuSVR、OneClassSVM的gamma参数的默认值将在版本 0.22 中从'auto'更改为'scale',以便更好地处理未缩放的特征。#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,指示从版本 0.22 开始,字节/字符串数组将被解释为十进制数字。#10229 由 Ryan Lee 提供。
多个模块#
Feature API Change 更一致的异常值检测 API:在
svm.OneClassSVM、ensemble.IsolationForest、neighbors.LocalOutlierFactor、covariance.EllipticEnvelope中添加了score_samples方法。它允许访问原始论文中的原始分数函数。一个新的offset_参数允许关联score_samples和decision_function方法。ensemble.IsolationForest和neighbors.LocalOutlierFactordecision_function方法的contamination参数用于定义此offset_,使得异常值(或正常值)具有负(或正)的decision_function值。默认情况下,contamination在弃用期内保持不变为 0.1。在 0.22 中,它将设置为“auto”,从而使用特定于方法的得分偏移量。在covariance.EllipticEnvelopedecision_function方法中,raw_values参数已弃用,因为在 0.22 中将始终返回偏移后的马氏距离。#9015 由 Nicolas Goix 提供。Feature API Change 在
ensemble.IsolationForest中引入了一个behaviour参数,以确保向后兼容性。在旧行为中,decision_function独立于contamination参数。因此,使用一个取决于contamination参数的阈值属性。在新行为中,decision_function取决于contamination参数,使得 0 成为检测异常值的自然阈值。将 behaviour 设置为“old”已被弃用,在版本 0.22 中将不再可能。此外,behaviour 参数将在 0.24 中移除。#11553 由 Nicolas Goix 提供。API Change 在
svm.LinearSVC和linear_model.LogisticRegression中,当verbose设置为 0 时,添加了收敛警告。#10881 由 Alexandre Sevin 提供。API Change 将
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 提供。
杂项#
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不是线程安全,可能导致“pop from empty list”错误的问题。#9569 由 Andreas Müller 提供。API Change 所有相关函数和类中
n_jobs的默认值从1更改为None。n_jobs=None表示unset。它通常被解释为n_jobs=1,除非当前的joblib.Parallel后端上下文另有指定(请参阅 词汇表 以获取更多信息)。请注意,此更改立即生效(即没有弃用周期)。#11741 由 Olivier Grisel 提供。Fix 修复了验证助手中的一个错误,即传递 Dask DataFrame 会导致错误。#12462 由 Zachariah Miller 提供。
估计器检查的更改#
这些更改主要影响库开发人员。
现在,无论估计器是否继承自
sklearn.base.TransformerMixin,只要它实现了 transform,就会应用转换器检查。#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