.. include:: _contributors.rst .. currentmodule:: sklearn ============ 版本 0.21 ============ .. include:: changelog_legend.inc .. _changes_0_21_3: 版本 0.21.3 ============== **2019年7月30日** 变更的模型 -------------- 以下估计器和函数,在相同数据和参数下进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变更(错误修复或增强),或随机抽样过程的变化所导致。 - v0.20.0 发布说明中未能提及当 `needs_proba=True` 且 `y_true` 为二元时,:func:`metrics.make_scorer` 中的向后不兼容性。现在,评分器函数应接受一维 `y_pred` (即,正类的概率,形状为 `(n_samples,)` ),而不是二维 `y_pred` (即,形状为 `(n_samples, 2)` )。 变更日志 --------- :mod:`sklearn.cluster` ...................... - |Fix| 修复了 :class:`cluster.KMeans` 中的一个错误,当 `init='random'` 且 `n_jobs > 1` 或 `n_jobs = -1` 时,计算是单线程的。:pr:`12955` 由 :user:`Prabakaran Kumaresshan ` 贡献。 - |Fix| 修复了 :class:`cluster.OPTICS` 中的一个错误,用户无法传递浮点数 `min_samples` 和 `min_cluster_size` 。:pr:`14496` 由 :user:`Fabian Klopfer ` 和 :user:`Hanmin Qin ` 贡献。 - |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.datasets` ....................... - |Fix| :func:`datasets.fetch_california_housing` , :func:`datasets.fetch_covtype` , :func:`datasets.fetch_kddcup99` , :func:`datasets.fetch_olivetti_faces` , :func:`datasets.fetch_rcv1` , 以及 :func:`datasets.fetch_species_distributions` 尝试使用新的 ``joblib`` 持久化先前缓存的数据,如果缓存数据是使用已弃用的 ``sklearn.externals.joblib`` 持久化的。此行为将被弃用,并在 v0.23 中移除。 :pr:`14197` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.ensemble` ....................... - |Fix| 修复了 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 中的零除错误。 :pr:`14024` 由 `Nicolas Hug ` 提交。 :mod:`sklearn.impute` ..................... - |Fix| 修复了 :class:`impute.SimpleImputer` 和 :class:`impute.IterativeImputer` 中的一个错误,使得在训练数据中存在缺失值时不会抛出错误。 :pr:`13974` 由 `Frank Hoang ` 提交。 :mod:`sklearn.inspection` ......................... - |Fix| 修复了 `inspection.plot_partial_dependence` 中的一个错误,其中 ``target`` 参数在多类问题中未被考虑。 :pr:`14393` 由 :user:`Guillem G. Subies ` 提交。 :mod:`sklearn.linear_model` ........................... - |Fix| 修复了 :class:`linear_model.LogisticRegressionCV` 中的一个错误,其中 ``refit=False`` 会根据 ``'multiclass'`` 和 ``'penalty'`` 参数失败(在 0.21 版本中引入的回归问题)。 :pr:`14087` 由 `Nicolas Hug`_ 提交。 - |Fix| 修复了 :class:`linear_model.ARDRegression` 与 Scipy>=1.3.0 的兼容性问题。适应上游对默认 `pinvh` 截止阈值的更改,否则在某些情况下会导致精度不佳。 :pr:`14067` 由 :user:`Tim Staley ` 提交。 :mod:`sklearn.neighbors` ........................ - |Fix| 修复了 :class:`neighbors.NeighborhoodComponentsAnalysis` 中的一个错误,其中初始参数 ``n_components`` , ``max_iter`` 和 ``tol`` 的验证需要过于严格的类型。 :pr:`14092` 由 :user:`Jérémie du Boisberranger ` . :mod:`sklearn.tree` ................... - |Fix| 修复了当树只有一个特征且传入单个特征名称时,:func:`tree.export_text` 中的错误。:pr:`14053` 由 `Thomas Fan` 提交。 - |Fix| 修复了 :func:`tree.plot_tree` 中的一个问题,该问题在 DecisionTreeClassifiers 中使用 `gini` 准则时仍显示熵计算。:pr:`13947` 由 :user:`Frank Hoang ` 提交。 .. _changes_0_21_2: Version 0.21.2 ============== **2019年5月24日** 更新日志 --------- :mod:`sklearn.decomposition` ............................ - |Fix| 修复了 :class:`cross_decomposition.CCA` 中的一个错误,提高了当 `Y` 接近零时的数值稳定性。:pr:`13903` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 :func:`metrics.pairwise.euclidean_distances` 中的一个错误,该错误导致对于足够大的 float32 数据集,部分距离矩阵未实例化(在 0.21 版本中引入的回归问题)。:pr:`13910` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.preprocessing` ............................ - |Fix| 修复了 :class:`preprocessing.OneHotEncoder` 中的一个错误,其中新的 `drop` 参数未反映在 `get_feature_names` 中。:pr:`13894` 由 :user:`James Myatt ` 提交。 `sklearn.utils.sparsefuncs` ........................... - |Fix| 修复了一个错误, `min_max_axis` 在 32 位系统上对于某些大输入会失败。这影响了 :class:`preprocessing.MaxAbsScaler` 、:func:`preprocessing.normalize` 和 :class:`preprocessing.LabelBinarizer` 。:pr:`13741` 由 :user:`Roddy MacSween ` 提交。 .. _changes_0_21_1: Version 0.21.1 ============== **2019年5月17日** 这是一个错误修复版本,主要是为了解决 0.21.0 版本中的一些打包问题。它还包括一些小的文档改进和一些错误修复。 更新日志 --------- :mod:`sklearn.inspection` ......................... - |Fix| 修复了 :func:`inspection.partial_dependence` 中的一个错误,仅在多类-多输出情况下检查分类器而不是回归器。 :pr:`14309` 由 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 :class:`metrics.pairwise_distances` 中的一个错误,当 ``X`` 具有布尔数据类型且 ``Y == None`` 时会引发 ``AttributeError`` 。 :issue:`13864` 由 :user:`Paresh Mathur ` 提交。 - |Fix| 修复了 :class:`metrics.pairwise_distances` 中的两个错误,当 ``n_jobs > 1`` 时。首先,它以前会返回与输入相同数据类型的距离矩阵,即使是整数数据类型。然后,当 ``Y`` 是 ``X`` 时,欧几里得度量的对角线不是零。 :issue:`13877` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.neighbors` ........................ - |Fix| 修复了 :class:`neighbors.KernelDensity` 中的一个错误,如果使用了 ``sample_weight`` ,则无法从 pickle 中恢复。 :issue:`13772` 由 :user:`Aditya Vyas ` 提交。 .. _changes_0_21: 版本 0.21.0 ============== **2019年5月** 更改的模型 -------------- 以下估计器和函数,当使用相同的数据和参数进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强)或随机抽样过程的变化。 - :class:`discriminant_analysis.LinearDiscriminantAnalysis` 用于多类分类。|Fix| - :class:`discriminant_analysis.LinearDiscriminantAnalysis` 使用 'eigen' 求解器。|Fix| - :class:`linear_model.BayesianRidge` |Fix| - 决策树及其派生集成,当同时设置 `max_depth` 和 `max_leaf_nodes` 时。|Fix| - :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 使用 'saga' 求解器。|Fix| - :class:`ensemble.GradientBoostingClassifier` |Fix| - :class:`sklearn.feature_extraction.text.HashingVectorizer` , :class:`sklearn.feature_extraction.text.TfidfVectorizer` , 以及 :class:`sklearn.feature_extraction.text.CountVectorizer` |Fix| - :class:`neural_network.MLPClassifier` |Fix| - :func:`svm.SVC.decision_function` 和 :func:`multiclass.OneVsOneClassifier.decision_function` . |Fix| - :class:`linear_model.SGDClassifier` 及其衍生分类器。 |Fix| - 任何使用 `linear_model._sag.sag_solver` 函数且种子为 `0` 的模型,包括 :class:`linear_model.LogisticRegression` , :class:`linear_model.LogisticRegressionCV` , :class:`linear_model.Ridge` , 以及使用 'sag' 求解器的 :class:`linear_model.RidgeCV` 。 |Fix| - 当使用留一交叉验证和稀疏输入时,:class:`linear_model.RidgeCV` 。 |Fix| 详细信息列在下面的变更日志中。 (虽然我们正努力通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。) 已知重大错误 ---------------- * :class:`linear_model.LogisticRegression` 的默认 `max_iter` 对于许多求解器来说太小,给定默认的 `tol` 。特别是,我们在版本 0.16 中发布的 :pr:`3591` 中,意外地将 liblinear 求解器的默认 `max_iter` 从 1000 次迭代更改为 100 次迭代。在未来的版本中,我们希望根据求解器启发式地选择更好的默认 `max_iter` 和 `tol` (参见 :pr:`13317` )。 变更日志 --------- 已正式放弃对 Python 3.4 及以下版本的支持。 .. 条目应按模块(按字母顺序)分组,并以前缀标签之一开头:|MajorFeature|、|Feature|、|Efficiency|、|Enhancement|、 |Fix| 或 |API|(参见 whats_new.rst 中的描述)。 条目应按这些标签排序(例如,|Fix| 在 |Efficiency| 之后)。 非特定于某个模块的更改应列在 *多个模块* 或 *杂项* 下。 条目应以以下内容结束: :pr:`123456` 作者::user:`Joe Bloggs ` 。 其中 123456 是 *拉取请求* 编号,而不是问题编号。 :mod:`sklearn.base` ................... - |API| 当在回归器上调用 ``score`` 时使用的 R2 评分将从版本 0.23 开始使用 ``multioutput='uniform_average'`` 以保持与 :func:`metrics.r2_score` 的一致性。这将影响所有多输出回归器的 ``score`` 方法(除了 :class:`multioutput.MultiOutputRegressor` )。 :pr:`13157` 由 :user:`Hanmin Qin ` 提交。 :mod:`sklearn.calibration` .......................... - |Enhancement| 增加了通过分位数而不是在 0 和 1 之间均匀分箱的方式对传递给 :class:`calibration.calibration_curve` 的数据进行分箱的支持。 :pr:`13086` 由 :user:`Scott Cole ` 提交。 - |Enhancement| 允许 `calibration.CalibratedClassifierCV` 接受 n 维数组作为输入。:pr:`13485` 由 :user:`William de Vazelhes ` 提交。 :mod:`sklearn.cluster` ...................... - |MajorFeature| 一种新的聚类算法::class:`cluster.OPTICS` :一种与 :class:`cluster.DBSCAN` 相关的算法,其超参数更易于设置且扩展性更好,由 :user:`Shane ` 、 `Adrin Jalali`_ 、:user:`Erich Schubert ` 、 `Hanmin Qin`_ 和 :user:`Assia Benbihi ` 提交。 - |Fix| 修复了一个 :class:`cluster.Birch` 偶尔会引发 AttributeError 的错误。:pr:`13651` 由 `Joel Nothman`_ 提交。 - |Fix| 修复了 :class:`cluster.KMeans` 中在使用样本权重时,空簇未正确重新定位的错误。:pr:`13486` 由 :user:`Jérémie du Boisberranger ` 提交。 - |API| :class:`cluster.AgglomerativeClustering` 和 :class:`cluster.FeatureAgglomeration` 中的 ``n_components_`` 属性已重命名为 ``n_connected_components_`` 。 :pr:`13427` 由 :user:`Stephane Couvreur ` 提交。 - |Enhancement| :class:`cluster.AgglomerativeClustering` 和 :class:`cluster.FeatureAgglomeration` 现在接受一个 ``distance_threshold`` 参数,该参数可用于查找簇而不是 ``n_clusters`` 。 :issue:`9069` 由 :user:`Vathsala Achar ` 和 `Adrin Jalali`_ 提交。 :mod:`sklearn.compose` ...................... - |API| :class:`compose.ColumnTransformer` 不再是实验性功能。:pr:`13835` 由 :user:`Hanmin Qin ` 提交。 :mod:`sklearn.datasets` ....................... - |Fix| 增加了对 SVMLight 文件中 64 位组 ID 和指针的支持。:pr:`10727` 由 :user:`Bryan K Woods ` 提交。 - |Fix| :func:`datasets.load_sample_images` 返回的图像具有确定性顺序。:pr:`13250` 由 :user:`Thomas Fan ` 提交。 :mod:`sklearn.decomposition` ............................ - |Enhancement| :class:`decomposition.KernelPCA` 现在具有确定性输出(解决了核矩阵特征值分解中的符号歧义)。:pr:`13241` 由 :user:`Aurélien Bellet ` 提交。 - |Fix| 修复了 :class:`decomposition.KernelPCA` 中的一个错误, `fit().transform()` 现在在非移除零特征值( `remove_zero_eig=False` )的情况下产生正确的输出(与 `fit_transform()` 相同)。 `fit_inverse_transform` 也通过使用与 `fit_transform` 相同的技巧来计算 `X` 的变换,从而加速。:pr:`12143` 由 :user:`Sylvain Marié ` 提交。 - |Fix| 修复了 :class:`decomposition.NMF` 中的一个错误,当 `init = 'nndsvd'` 、 `init = 'nndsvda'` 和 `init = 'nndsvdar'` 允许在 `n_components < n_features` 而不是 `n_components <= min(n_samples, n_features)` 时。:pr:`11650` 由 :user:`Hossein Pourbozorg ` 和 :user:`Zijie (ZJ) Poh ` 提交。 - |API| :func:`decomposition.non_negative_factorization` 中 :code:`init` 参数的默认值将从 :code:`random` 变为 :code:`None` (在版本 0.23 中),以使其与 :class:`decomposition.NMF` 一致。当使用默认值时,会引发 FutureWarning。:pr:`12988` 由 :user:`Zijie (ZJ) Poh ` 提交。 :mod:`sklearn.discriminant_analysis` .................................... - |Enhancement| :class:`discriminant_analysis.LinearDiscriminantAnalysis` 现在保留 ``float32`` 和 ``float64`` 数据类型。:pr:`8769` 和 :pr:`11000` 由 :user:`Thibault Sejourne ` 贡献。 - |Fix| 当 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 的参数 ``n_components`` 大于 ``min(n_features, n_classes - 1)`` 时,现在会引发 ``ChangedBehaviourWarning`` ,并且如果需要, ``n_components`` 会被更改为 ``min(n_features, n_classes - 1)`` 。之前这种更改是静默进行的。:pr:`11526` 由 :user:`William de Vazelhes` 贡献。 - |Fix| 修复了 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 中的一个错误,该错误在多类情况下会错误地计算预测概率。:pr:`6848` ,由 :user:`Agamemnon Krasoulis ` 和 `Guillaume Lemaitre ` 贡献。 - |Fix| 修复了 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 中的一个错误,该错误在使用 ``eigen`` 求解器时会错误地计算预测概率。:pr:`11727` ,由 :user:`Agamemnon Krasoulis ` 贡献。 :mod:`sklearn.dummy` .................... - |Fix| 修复了 :class:`dummy.DummyClassifier` 中的一个错误,该错误在 ``stratified`` 策略下 ``predict_proba`` 方法返回的是 int32 数组而不是 float64。:pr:`13266` 由 :user:`Christos Aridas` 贡献。 - |Fix| 修复了 :class:`dummy.DummyClassifier` 中的一个错误,该错误在预测时会抛出维度不匹配的错误,如果在 ``fit`` 时给定的是形状为 ``(n, 1)`` 的列向量 ``y`` 。:pr:`13545` 由 :user:`Nick Sorros ` 和 `Adrin Jalali`_ 贡献。 :mod:`sklearn.ensemble` ....................... - |MajorFeature| 添加了两种新的梯度提升树实现::class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 。这些估计器的实现受到 `LightGBM `_ 的启发,并且可以有数量级的性能提升。 比 :class:`ensemble.GradientBoostingRegressor` 和 :class:`ensemble.GradientBoostingClassifier` 快得多, 当样本数量大于数万个样本时。这些新估计器的API略有不同, 并且 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 的一些功能尚未支持。 这些新估计器是实验性的,这意味着它们的结果或API可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入 ``enable_hist_gradient_boosting`` :: >>> # 显式要求此实验性功能 >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # 现在可以从 sklearn.ensemble 正常导入 >>> from sklearn.ensemble import HistGradientBoostingClassifier .. note:: 更新:自版本1.0起,这些估计器不再是实验性的,您不需要使用 `from sklearn.experimental import enable_hist_gradient_boosting` 。 :pr:`12807` 由 :user:`Nicolas Hug` 贡献。 - |Feature| 添加 :class:`ensemble.VotingRegressor` , 为回归问题提供与 :class:`ensemble.VotingClassifier` 等效的功能。 :pr:`12513` 由 :user:`Ramil Nugmanov ` 和 :user:`Mohamed Ali Jamaoui ` 贡献。 - |Efficiency| 使 :class:`ensemble.IsolationForest` 在运行 ``n_jobs > 1`` 时优先使用线程而非进程,因为底层决策树拟合调用会释放GIL。这一更改减少了内存使用和通信开销。:pr:`12543` 由 :user:`Isaac Storch ` 和 `Olivier Grisel`_ 贡献。 - |Efficiency| 通过避免在内存中保留每个树的预测,使 :class:`ensemble.IsolationForest` 更节省内存。:pr:`13260` 由 `Nicolas Goix`_ 贡献。 - |Efficiency| :class:`ensemble.IsolationForest` 现在在预测步骤中使用数据块,从而限制了内存使用。:pr:`13283` 由 `Nicolas Goix`_ 贡献。 `Nicolas Goix`_ . - |Efficiency| :class:`sklearn.ensemble.GradientBoostingClassifier` 和 :class:`sklearn.ensemble.GradientBoostingRegressor` 现在将输入 ``y`` 保持为 ``float64`` ,以避免内部树对其进行复制。 :pr:`13524` 由 `Adrin Jalali`_ 提交。 - |Enhancement| 最小化了 :class:`ensemble.AdaBoostClassifier` 和 :class:`ensemble.AdaBoostRegressor` 中对 X 的验证 :pr:`13174` 由 :user:`Christos Aridas ` 提交。 - |Enhancement| :class:`ensemble.IsolationForest` 现在暴露了 ``warm_start`` 参数,允许迭代地向隔离森林添加树。 :pr:`13496` 由 :user:`Peter Marko ` 提交。 - |Fix| 所有基于随机森林的模型(即 :class:`ensemble.RandomForestClassifier` , :class:`ensemble.RandomForestRegressor` , :class:`ensemble.ExtraTreesClassifier` , :class:`ensemble.ExtraTreesRegressor` , :class:`ensemble.RandomTreesEmbedding` , :class:`ensemble.GradientBoostingClassifier` , 和 :class:`ensemble.GradientBoostingRegressor` )中的 ``feature_importances_`` 值现在: - 总和为 ``1`` - 在特征重要性计算中忽略所有单节点树 - 如果所有树都只有一个节点(即根节点),特征重要性将是一个全零数组。 :pr:`13636` 和 :pr:`13620` 由 `Adrin Jalali`_ 提交。 - |Fix| 修复了 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 中的一个错误,该错误不支持将 scikit-learn 估计器作为初始估计器。还增加了对不支持样本权重的初始估计器的支持。 :pr:`12436` 由 :user:`Jérémie du Boisberranger ` 提交,以及 :pr:`12983` 由 :user:`Nicolas Hug` 提交。 - |Fix| 修复了 :class:`ensemble.IsolationForest` 中计算的平均路径长度输出,当输入为 0、1 或 2 时。 :pr:`13251` 由 :user:`Albert Thomas ` 和 :user:`joshuakennethjones ` 提交。 - |Fix| 修复了 :class:`ensemble.GradientBoostingClassifier` 中的一个错误,该错误在多类分类问题中会错误地计算梯度。:pr:`12715` 由 :user:`Nicolas Hug` 提交。 - |Fix| 修复了 :class:`ensemble.GradientBoostingClassifier` 中的一个错误,该错误在早停法的验证集采样时未进行分层采样。:pr:`13164` 由 :user:`Nicolas Hug` 提交。 - |Fix| 修复了 :class:`ensemble.GradientBoostingClassifier` 中的一个错误,该错误在多类分类器的默认初始预测中会预测类别的先验概率而不是先验概率的对数。:pr:`12983` 由 :user:`Nicolas Hug` 提交。 - |Fix| 修复了 :class:`ensemble.RandomForestClassifier` 中的一个错误,该错误在多类多输出森林模型中,如果任何目标为字符串, ``predict`` 方法会出错。:pr:`12834` 由 :user:`Elizabeth Sander` 提交。 - |Fix| 修复了 `ensemble.gradient_boosting.LossFunction` 和 `ensemble.gradient_boosting.LeastSquaresError` 中的一个错误,其中 ``update_terminal_regions`` 的 ``learning_rate`` 默认值与文档和调用函数不一致。但请注意,直接使用这些损失函数已被弃用。:pr:`6463` 由 :user:`movelikeriver` 提交。 - |Fix| `ensemble.partial_dependence` (以及新的版本 :func:`sklearn.inspection.partial_dependence` )现在在计算部分依赖时会考虑样本权重,当梯度提升模型使用样本权重进行训练时。:pr:`13193` 由 :user:`Samuel O. Ronsin` 提交。 - |API| `ensemble.partial_dependence` 和 `ensemble.plot_partial_dependence` 现在已被弃用,取而代之的是 :func:`inspection.partial_dependence` 和 `inspection.plot_partial_dependence` 。:pr:`12599` 由 :user:`Trevor Stephens` 和 :user:`Nicolas Hug` 提交。 - |Fix| :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 在其中一个估计器设置为 ``None`` 且 ``sample_weight`` 不为 ``None`` 时,在 ``fit`` 过程中会失败。 :pr:`13779` 由 :user:`Guillaume Lemaitre ` 提交。 - |API| :class:`ensemble.VotingClassifier` 和 :class:`ensemble.VotingRegressor` 接受 ``'drop'`` 来禁用一个估计器,除了 ``None`` 之外,以与其他估计器(例如, :class:`pipeline.FeatureUnion` 和 :class:`compose.ColumnTransformer` )保持一致。 :pr:`13780` 由 :user:`Guillaume Lemaitre ` 提交。 `sklearn.externals` ................... - |API| 由于我们已放弃对 Python 2.7 的支持,因此弃用了 `externals.six` 。 :pr:`12916` 由 :user:`Hanmin Qin ` 提交。 :mod:`sklearn.feature_extraction` ................................. - |Fix| 如果 ``input='file'`` 或 ``input='filename'`` ,并且将可调用对象作为 ``analyzer`` 传递, :class:`sklearn.feature_extraction.text.HashingVectorizer` , :class:`sklearn.feature_extraction.text.TfidfVectorizer` ,以及 :class:`sklearn.feature_extraction.text.CountVectorizer` 现在会从文件中读取数据,然后将数据传递给给定的 ``analyzer`` ,而不是将文件名或文件对象传递给分析器。 :pr:`13641` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.impute` ..................... - |MajorFeature| 添加了 :class:`impute.IterativeImputer` ,这是一种通过循环方式将每个具有缺失值的特征建模为其他特征的函数来填补缺失值的策略。 :pr:`8478` 和 :pr:`12177` 由 :user:`Sergey Feldman ` 和 :user:`Ben Lawson ` 提交。 IterativeImputer 的 API 是实验性的,可能会在没有任何弃用周期的情况下发生变化。要使用它们,您需要显式导入 ``enable_iterative_imputer`` :: >>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # 现在您可以正常从 sklearn.impute 导入 >>> from sklearn.impute import IterativeImputer - |Feature| :class:`impute.SimpleImputer` 和 :class:`impute.IterativeImputer` 新增了一个参数 ``'add_indicator'`` , 该参数简单地将一个 :class:`impute.MissingIndicator` 转换堆叠到 填补器的转换输出中。这允许预测估计器考虑缺失性。:pr:`12583` , :pr:`13601` 由 :user:`Danylo Baibak ` 贡献。 - |Fix| 在 :class:`impute.MissingIndicator` 中,通过在输入为稀疏且 `missing_values` 属性 设置为 0 时抛出异常,避免隐式稠密化。:pr:`13240` 由 :user:`Bartosz Telenczuk ` 贡献。 - |Fix| 修复了 :class:`impute.MissingIndicator` 中的两个错误。首先,当 ``X`` 是稀疏的,所有非零非缺失值在转换后的数据中变成了显式的 False。其次,当 ``features='missing-only'`` 时,如果完全没有缺失值,所有特征都会被保留。:pr:`13562` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.inspection` ......................... (新子包) - |Feature| 部分依赖图 ( `inspection.plot_partial_dependence` ) 现在支持任何回归器或分类器(前提是它们有 `predict_proba` 方法)。:pr:`12599` 由 :user:`Trevor Stephens ` 和 :user:`Nicolas Hug ` 贡献。 :mod:`sklearn.isotonic` ....................... - |Feature| 允许在 :class:`isotonic.IsotonicRegression` 中使用不同的数据类型(如 float32)。 :pr:`8769` 由 :user:`Vlad Niculae ` 贡献。 :mod:`sklearn.linear_model` ........................... - |Enhancement| :class:`linear_model.Ridge` 现在保留 ``float32`` 和 ``float64`` 数据类型。:issue:`8769` 和 :issue:`11000` 由 :user:`Guillaume Lemaitre ` 和 :user:`Joan Massich ` 贡献。 - |Feature| :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 现在支持弹性网络惩罚, 使用 'saga' 求解器。:pr:`11646` 由 :user:`Nicolas Hug ` 贡献。 - |Feature| 添加了 :class:`linear_model.lars_path_gram` ,这是在充分统计模式下的 :class:`linear_model.lars_path` ,允许用户在不提供 ``X`` 和 ``y`` 的情况下计算 :class:`linear_model.lars_path` 。:pr:`11699` 由 :user:`Kuai Yu ` 贡献。 - |Efficiency| `linear_model.make_dataset` 现在保留 ``float32`` 和 ``float64`` 数据类型,减少了随机梯度、SAG 和 SAGA 求解器中的内存消耗。:pr:`8769` 和 :pr:`11000` 由 :user:`Nelle Varoquaux ` 、:user:`Arthur Imbert ` 、:user:`Guillaume Lemaitre ` 和 :user:`Joan Massich ` 贡献。 - |Enhancement| :class:`linear_model.LogisticRegression` 现在支持当传递 ``penalty='none'`` 时使用无正则化目标。这等效于使用 l2 正则化设置 ``C=np.inf`` 。liblinear 求解器不支持此功能。:pr:`12860` 由 :user:`Nicolas Hug ` 贡献。 - |Enhancement| :class:`linear_model.Ridge` 中的 `sparse_cg` 求解器现在支持在输入为稀疏时拟合截距(即 ``fit_intercept=True`` )。:pr:`13336` 由 :user:`Bartosz Telenczuk ` 贡献。 - |Enhancement| `Lasso` 、 `ElasticNet` 等中使用的坐标下降求解器现在在未达到所需容差的情况下完成时会发出 `ConvergenceWarning` 。:pr:`11754` 和 :pr:`13397` 由 :user:`Brent Fagan ` 和 :user:`Adrin Jalali ` 贡献。 - |Fix| 修复了 :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 中使用 'saga' 求解器时权重在某些情况下不会正确更新的错误。:pr:`11646` 由 `Tom Dupre la Tour`_ 贡献。 - |Fix| 修复了 :class:`linear_model.BayesianRidge` 中的后验均值、后验协方差和返回的正则化参数。后验均值和后验协方差不是计算得到的值。 在最后一次更新正则化参数时,返回的正则化参数并非最终值。同时修复了在 `compute_score=True` 时用于计算分数的对数边际似然公式。:pr:`12174` 由 :user:`Albert Thomas ` 贡献。 - |Fix| 修复了 :class:`linear_model.LassoLarsIC` 中的一个错误,其中用户在实例创建时输入的 ``copy_X=False`` 会被 ``fit`` 中的默认参数值 ``copy_X=True`` 覆盖。:pr:`12972` 由 :user:`Lucio Fernandez-Arjona ` 贡献。 - |Fix| 修复了 :class:`linear_model.LinearRegression` 中的一个错误,该错误在 ``fit_intercept=True`` 时,稀疏和密集情况下返回的系数和截距不一致。:pr:`13279` 由 `Alexandre Gramfort`_ 贡献。 - |Fix| 修复了 :class:`linear_model.HuberRegressor` 中的一个错误,当 ``X`` 为布尔类型时会失效。:pr:`13328` 由 `Alexandre Gramfort`_ 贡献。 - |Fix| 修复了在 ``n_jobs > 1`` 且 ``backend="threading"`` 的 :class:`joblib.Parallel` 设置下调用 ``saga`` 和 ``sag`` 求解器时的性能问题,导致它们的表现比顺序情况下更差。:pr:`13389` 由 :user:`Pierre Glaser ` 贡献。 - |Fix| 修复了 `linear_model.stochastic_gradient.BaseSGDClassifier` 中的一个错误,该错误在多类设置下使用多个线程进行训练时不是确定性的。:pr:`13422` 由 :user:`Clément Doumouro ` 贡献。 - |Fix| 修复了 :func:`linear_model.ridge_regression` 、:class:`linear_model.Ridge` 和 :class:`linear_model.RidgeClassifier` 中的错误,这些错误在 ``return_intercept=True`` 和 ``solver=auto`` (默认)或其他不同于 ``sag`` 的求解器时导致未处理的异常。:pr:`13363` 由 :user:`Bartosz Telenczuk ` 贡献。 - |Fix| :func:`linear_model.ridge_regression` 现在会在 ``return_intercept=True`` 且求解器不同于 ``sag`` 时抛出异常。之前仅发出警告。:pr:`13363` 由 :user:`Bartosz Telenczuk ` 贡献。 - |Fix| :func:`linear_model.ridge_regression` 在 ``solver=auto`` 且提供了 ``sample_weight`` 时,对于稀疏输入将选择 ``sparse_cg`` 求解器(之前选择了 `cholesky` 求解器)。:pr:`13363` 由 :user:`Bartosz Telenczuk ` 贡献。 - |API| 在版本 0.21 中,使用 :class:`linear_model.lars_path` 时传入 ``X=None`` 并传递 ``Gram`` 已被弃用,并将在版本 0.23 中移除。请改用 :class:`linear_model.lars_path_gram` 。:pr:`11699` 由 :user:`Kuai Yu ` 贡献。 - |API| `linear_model.logistic_regression_path` 在版本 0.21 中已被弃用,并将在版本 0.23 中移除。:pr:`12821` 由 :user:`Nicolas Hug ` 贡献。 - |Fix| :class:`linear_model.RidgeCV` 在使用留一交叉验证时,当 ``fit_intercept=True`` 且设计矩阵为稀疏矩阵时,现在能正确拟合截距。:issue:`13350` 由 :user:`Jérôme Dockès ` 贡献。 :mod:`sklearn.manifold` ....................... - |Efficiency| 使 :func:`manifold.trustworthiness` 使用倒排索引而不是 `np.where` 查找来找到输入空间中邻居的排名。这在计算大量邻居和小数据集时提高了效率。:pr:`9907` 由 :user:`William de Vazelhes ` 贡献。 :mod:`sklearn.metrics` ...................... - |Feature| 添加了 :func:`metrics.max_error` 指标和相应的 ``'max_error'`` 回归单输出的评分器。:pr:`12232` 由 :user:`Krishna Sangeeth ` 贡献。 - |Feature| 添加了 :func:`metrics.multilabel_confusion_matrix` ,它为每个类别计算一个包含真正例、假正例、假反例和真反例计数的混淆矩阵。这有助于计算集合级别的指标,如召回率、特异性、假阳性率和漏报率。:pr:`11179` 由 :user:`Shangwu Yao ` 和 `Joel Nothman`_ 贡献。 - |Feature| 添加了 :func:`metrics.jaccard_score` 用于计算 Jaccard 相似系数。 Jaccard系数作为二元、多标签和多类任务的评估指标,具有类似于:func:`metrics.f1_score` 的接口。:pr:`13151` 由 :user:`Gaurav Dhingra ` 和 `Joel Nothman`_ 贡献。 - |Feature| 添加了 :func:`metrics.pairwise.haversine_distances` ,可以通过 `metric='pairwise'` 在 :func:`metrics.pairwise_distances` 和估计器中访问。(Haversine距离之前可用于最近邻计算。):pr:`12568` 由 :user:`Wei Xue ` 、:user:`Emmanuel Arias ` 和 `Joel Nothman`_ 贡献。 - |Efficiency| 通过使用基于线程的后端而不是基于进程的后端,当 `n_jobs` > 1 时,:func:`metrics.pairwise_distances` 更快。:pr:`8216` 由 :user:`Pierre Glaser ` 和 :user:`Romuald Menuet ` 贡献。 - |Efficiency| 带有稀疏输入的成对曼哈顿距离现在使用随scipy提供的BLAS,而不是捆绑的BLAS。:pr:`12732` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |Enhancement| 在 :func:`metrics.classification_report` 中使用标签 `accuracy` 而不是 `micro-average` 以避免混淆。 `micro-average` 仅在多标签或多类且子集类的情况下显示,因为它在其他情况下与准确度相同。:pr:`12334` 由 :user:`Emmanuel Arias ` 、 `Joel Nothman`_ 和 `Andreas Müller`_ 贡献。 - |Enhancement| 在 :func:`metrics.homogeneity_completeness_v_measure` 和 :func:`metrics.v_measure_score` 中添加了 `beta` 参数,以配置同质性和完整性之间的权衡。:pr:`13607` 由 :user:`Stephane Couvreur ` 和 :user:`Ivan Sanchez ` 贡献。 - |Fix| 指标 :func:`metrics.r2_score` 在单个样本时退化,现在返回NaN并引发 :class:`exceptions.UndefinedMetricWarning` 。:pr:`12855` 由 :user:`Pawel Sendyk ` 贡献。 - |Fix| 修复了一个错误,即 :func:`metrics.brier_score_loss` 有时会 当 ``y_true`` 中只有一个类别时,返回错误的结果。 :pr:`13628` 由 :user:`Hanmin Qin ` 提交。 - |Fix| 修复了 :func:`metrics.label_ranking_average_precision_score` 中的一个错误, 该错误在标签退化的情况下没有考虑 sample_weight。 :pr:`13447` 由 :user:`Dan Ellis ` 提交。 - |API| :func:`metrics.hamming_loss` 中的参数 ``labels`` 在版本 0.21 中已弃用, 并将在版本 0.23 中移除。:pr:`10580` 由 :user:`Reshama Shaikh ` 和 :user:`Sandra Mitrovic ` 提交。 - |Fix| 函数 :func:`metrics.pairwise.euclidean_distances` 以及 因此使用 ``metric='euclidean'`` 的几个估计器,在 ``float32`` 特征上存在数值精度问题。 精度已提高,但性能略有下降。:pr:`13554` 由 :user:`Celelibi` 和 :user:`Jérémie du Boisberranger ` 提交。 - |API| `metrics.jaccard_similarity_score` 已弃用,取而代之的是 更一致的 :func:`metrics.jaccard_score` 。前者的二进制和多类目标行为已损坏。 :pr:`13151` 由 `Joel Nothman`_ 提交。 :mod:`sklearn.mixture` ...................... - |Fix| 修复了 `mixture.BaseMixture` 中的一个错误,因此基于它的估计器, 即 :class:`mixture.GaussianMixture` 和 :class:`mixture.BayesianGaussianMixture` ,其中 ``fit_predict`` 和 ``fit.predict`` 不一致。:pr:`13142` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.model_selection` .............................. - |Feature| 类 :class:`~model_selection.GridSearchCV` 和 :class:`~model_selection.RandomizedSearchCV` 现在允许 refit=callable, 以增加识别最佳估计器的灵活性。 参见 :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_refit_callable.py` 。 :pr:`11354` 由 :user:`Wenhao Zhang ` 、 `Joel Nothman`_ 和 :user:`Adrin Jalali ` 提交。 - |Enhancement| 类 :class:`~model_selection.GridSearchCV` , :class:`~model_selection.RandomizedSearchCV` 以及方法 :func:`~model_selection.cross_val_score` , :func:`~model_selection.cross_val_predict` , :func:`~model_selection.cross_validate` 现在在 `return_train_scores` 为 True 且 `verbose` > 2 时打印训练分数。对于 :func:`~model_selection.learning_curve` 和 :func:`~model_selection.validation_curve` 仅后者需要。 :pr:`12613` 和 :pr:`12669` 由 :user:`Marc Torrellas ` 贡献。 - |Enhancement| 一些 :term:`CV splitter` 类和 `model_selection.train_test_split` 现在在生成的训练集为空时抛出 ``ValueError`` 。 :pr:`12861` 由 :user:`Nicolas Hug ` 贡献。 - |Fix| 修复了一个 :class:`model_selection.StratifiedKFold` 的 bug,该 bug 使得每个类的样本在相同的 ``random_state`` 下被打乱,导致 ``shuffle=True`` 无效。 :pr:`13124` 由 :user:`Hanmin Qin ` 贡献。 - |Fix| 增加了 :func:`model_selection.cross_val_predict` 处理多标签(以及多输出-多类)目标与 ``predict_proba`` 类型方法的能力。 :pr:`8773` 由 :user:`Stephen Hoover ` 贡献。 - |Fix| 修复了 :func:`~model_selection.cross_val_predict` 中的一个问题,其中 `method="predict_proba"` 在交叉验证折叠中排除某个类别时总是返回 `0.0` 。 :pr:`13366` 由 :user:`Guillaume Fournier ` 贡献。 :mod:`sklearn.multiclass` ......................... - |Fix| 修复了 :func:`multiclass.OneVsOneClassifier.decision_function` 中的一个问题,其中给定样本的 decision_function 值会因 decision_function 是在单个样本上评估还是在包含相同样本的批次上评估而不同,这是由于 decision_function 中使用的缩放导致的。 :pr:`10440` 由 :user:`Jonathan Ohayon ` 贡献。 :mod:`sklearn.multioutput` .......................... - |Fix| 修复了 :class:`multioutput.MultiOutputClassifier` 中的一个 bug,该 bug `predict_proba` 方法错误地检查了估计器对象中的 `predict_proba` 属性。 :pr:`12222` 由 :user:`Rebekah Kim ` 提交。 :mod:`sklearn.neighbors` ........................ - |MajorFeature| 添加了 :class:`neighbors.NeighborhoodComponentsAnalysis` 用于度量学习,实现了邻域成分分析算法。:pr:`10058` 由 :user:`William de Vazelhes ` 和 :user:`John Chiotellis ` 提交。 - |API| :class:`neighbors.NearestNeighbors` 中的方法: :func:`~neighbors.NearestNeighbors.kneighbors` 、 :func:`~neighbors.NearestNeighbors.radius_neighbors` 、 :func:`~neighbors.NearestNeighbors.kneighbors_graph` 、 :func:`~neighbors.NearestNeighbors.radius_neighbors_graph` 现在会在调用前未进行 ``fit`` 时引发 ``NotFittedError`` ,而不是 ``AttributeError`` 。:pr:`12279` 由 :user:`Krishna Sangeeth ` 提交。 :mod:`sklearn.neural_network` ............................. - |Fix| 修复了 :class:`neural_network.MLPClassifier` 和 :class:`neural_network.MLPRegressor` 中的一个错误,其中选项 :code:`shuffle=False` 被忽略。:pr:`12582` 由 :user:`Sam Waterbury ` 提交。 - |Fix| 修复了 :class:`neural_network.MLPClassifier` 中的一个错误,其中早期停止的验证集未进行分层采样。然而,在多标签情况下,分割仍然不是分层的。:pr:`13164` 由 :user:`Nicolas Hug` 提交。 :mod:`sklearn.pipeline` ....................... - |Feature| :class:`pipeline.Pipeline` 现在可以使用索引表示法(例如 ``my_pipeline[0:-1]`` )提取步骤的子序列作为另一个 Pipeline 实例。Pipeline 也可以直接索引以提取特定步骤(例如 ``my_pipeline['svc']`` ),而不是访问 ``named_steps`` 。:pr:`2568` 由 `Joel Nothman`_ 提交。 - |Feature| 在 :class:`pipeline.Pipeline` 、:class:`compose.ColumnTransformer` 和 :class:`pipeline.FeatureUnion` 中添加了可选参数 ``verbose`` 。 以及相应的 ``make_`` 辅助函数,用于显示每个步骤的进度和时间。:pr:`11364` 由 :user:`Baze Petrushev ` 、 :user:`Karan Desai ` 、 `Joel Nothman`_ 和 :user:`Thomas Fan ` 贡献。 - |Enhancement| :class:`pipeline.Pipeline` 现在支持使用 ``'passthrough'`` 作为转换器,效果与 ``None`` 相同。 :pr:`11144` 由 :user:`Thomas Fan ` 贡献。 - |Enhancement| :class:`pipeline.Pipeline` 实现了 ``__len__`` ,因此 ``len(pipeline)`` 返回管道中的步骤数。 :pr:`13439` 由 :user:`Lakshya KD ` 贡献。 :mod:`sklearn.preprocessing` ............................ - |Feature| :class:`preprocessing.OneHotEncoder` 现在支持通过新的 drop 参数每类别丢弃一个特征。:pr:`12908` 由 :user:`Drew Johnston ` 贡献。 - |Efficiency| :class:`preprocessing.OneHotEncoder` 和 :class:`preprocessing.OrdinalEncoder` 现在更高效地处理 pandas DataFrame。 :pr:`13253` 由 :user:`maikia` 贡献。 - |Efficiency| 使 :class:`preprocessing.MultiLabelBinarizer` 缓存类映射,而不是每次实时计算。 :pr:`12116` 由 :user:`Ekaterina Krivich ` 和 `Joel Nothman`_ 贡献。 - |Efficiency| :class:`preprocessing.PolynomialFeatures` 现在支持作为输入的压缩稀疏行(CSR)矩阵,适用于 2 和 3 次幂。这通常比密集情况快得多,因为它随矩阵密度和扩展度(密度^度)缩放,并且比压缩稀疏列(CSC)情况快得多。 :pr:`12197` 由 :user:`Andrew Nystrom ` 贡献。 - |Efficiency| 在密集情况下,:class:`preprocessing.PolynomialFeatures` 的速度提升。还添加了一个新的参数 ``order`` ,用于进一步控制输出顺序以提高性能。:pr:`12251` 由 `Tom Dupre la Tour`_ 贡献。 - |Fix| 修复了使用 float16 dtype 时 :class:`preprocessing.StandardScaler` 的计算溢出问题。 :pr:`13007` 由 :user:`Raffaello Baluyot ` 提交 - |Fix| 修复了 :class:`preprocessing.QuantileTransformer` 和 :func:`preprocessing.quantile_transform` 中的一个错误,强制 `n_quantiles` 最多等于 `n_samples` 。 `n_quantiles` 大于 `n_samples` 的值要么是无用的,要么会导致累积分布函数估计器的错误近似。 :pr:`13333` 由 :user:`Albert Thomas ` 提交。 - |API| :func:`preprocessing.quantile_transform` 中 `copy` 的默认值将从 False 变为 True, 以使其与其他 :mod:`sklearn.preprocessing` 中的函数默认 `copy` 值更加一致,并防止通过原地修改 `X` 值而产生意外的副作用。 :pr:`13459` 由 :user:`Hunter McGushion ` 提交。 :mod:`sklearn.svm` .................. - |Fix| 修复了 :func:`svm.SVC.decision_function` 在 ``decision_function_shape='ovr'`` 时的问题。 由于在 decision_function 中使用的缩放,给定样本的 decision_function 值会因评估是在单个样本上还是在包含相同样本的批次上而有所不同。 :pr:`10440` 由 :user:`Jonathan Ohayon ` 提交。 :mod:`sklearn.tree` ................... - |Feature| 现在可以使用 `tree.plot_tree` 通过 matplotlib 绘制决策树,而不依赖于 ``dot`` 库, 从而移除了一个难以安装的依赖项。:pr:`8508` 由 `Andreas Müller`_ 提交。 - |Feature| 现在可以使用 :func:`tree.export_text` 以人类可读的文本格式导出决策树。 :pr:`6261` 由 `Giuseppe Vettigli ` 提交。 - |Feature| 已向 `tree.BaseDecisionTree` 添加了 ``get_n_leaves()`` 和 ``get_depth()`` 方法, 因此所有基于它的估计器,包括 :class:`tree.DecisionTreeClassifier` 、 :class:`tree.DecisionTreeRegressor` 、:class:`tree.ExtraTreeClassifier` 和 :class:`tree.ExtraTreeRegressor` , 都可以使用这些方法。 :pr:`12300` 由 :user:`Adrin Jalali ` 提交。 - |Fix| 树和森林之前无法在 `predict` 中预测带有字符串标签的多输出分类目标,尽管在 `fit` 中接受它们。:pr:`11458` 由 :user:`Mitar Milutinovic ` 提交。 - |Fix| 修复了 `tree.BaseDecisionTree` 及其所有基于它的估计器(包括 :class:`tree.DecisionTreeClassifier` 、:class:`tree.DecisionTreeRegressor` 、:class:`tree.ExtraTreeClassifier` 和 :class:`tree.ExtraTreeRegressor` )的一个问题,即当用户同时指定 ``max_leaf_nodes`` 和 ``max_depth`` 时,它们在扩展树时会超出给定的 ``max_depth`` 1 层。请注意,这也影响所有使用决策树的集成方法。:pr:`12344` 由 :user:`Adrin Jalali ` 提交。 :mod:`sklearn.utils` .................... - |Feature| :func:`utils.resample` 现在接受一个 ``stratify`` 参数,用于根据类别分布进行采样。:pr:`13549` 由 :user:`Nicolas Hug ` 提交。 - |API| 从 :func:`utils.check_array` 和 :func:`utils.check_X_y` 中弃用了 ``warn_on_dtype`` 参数。在 `check_pairwise_arrays` 中添加了显式的数据类型转换警告,如果传递的 ``metric`` 是成对布尔度量。:pr:`13382` 由 :user:`Prathmesh Savale ` 提交。 多个模块 ................ - |MajorFeature| 所有估计器的 `__repr__()` 方法(在调用 `print(estimator)` 时使用)已完全重写,基于 Python 的漂亮打印标准库。默认情况下打印所有参数,但可以通过 :func:`sklearn.set_config` 中的 ``print_changed_only`` 选项进行更改。:pr:`11705` 由 :user:`Nicolas Hug ` 提交。 - |MajorFeature| 添加估计器标签:这些是估计器的注解,允许程序化检查它们的功能,如稀疏矩阵支持、支持的输出类型和支持的方法。估计器 标签还决定了在调用 `check_estimator` 时对估计器运行的测试。更多信息请参阅 :ref:`用户指南 ` 。:pr:`8022` 由 :user:`Andreas Müller ` 贡献。 - |Efficiency| 在多个估计器中将数组转换为不同数据类型时,避免了内存复制。:pr:`11973` 由 :user:`Roman Yurchak ` 贡献。 - |Fix| 修复了 `our_rand_r` 辅助函数实现中的一个错误,该错误在不同平台上行为不一致。:pr:`13422` 由 :user:`Madhura Parikh ` 和 :user:`Clément Doumouro ` 贡献。 杂项 ............. - |Enhancement| Joblib 不再嵌入在 scikit-learn 中,而是成为了一个依赖项。最低支持版本是 joblib 0.11,但强烈建议使用版本 >= 0.13。:pr:`13531` 由 :user:`Roman Yurchak ` 贡献。 估计器检查的变更 --------------------------- 这些变更主要影响库的开发者。 - 向 :func:`~utils.estimator_checks.check_estimator` 添加了 ``check_fit_idempotent`` ,该检查确保当 `fit` 使用相同数据调用两次时, `predict` 、 `predict_proba` 、 `transform` 和 `decision_function` 的输出不会改变。:pr:`12328` 由 :user:`Nicolas Hug ` 贡献。 - 许多检查现在可以通过 :ref:`estimator_tags` 禁用或配置。:pr:`8022` 由 :user:`Andreas Müller ` 贡献。 .. rubric:: 代码和文档贡献者 感谢自版本 0.20 以来为项目的维护和改进做出贡献的所有人,包括: adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier`, Finn O'Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^