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