版本 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.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 后,您可能会收到一些额外的警告。
已更改的模型#
以下估计器和函数,当使用相同数据和参数进行拟合时,可能会产生与以前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
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.EllipticEnvelopedecision_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