.. include:: _contributors.rst .. currentmodule:: sklearn .. _release_notes_1_1: =========== 版本 1.1 =========== 有关此版本主要亮点简要描述,请参阅 :ref:`sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_1_0.py` 。 .. include:: changelog_legend.inc .. _changes_1_1_3: 版本 1.1.3 ============= **2022年10月** 此修复版本仅包括与最新 SciPy 版本 >= 1.9.2 的兼容性修复。显著变化包括: - |Fix| 由于最新 SciPy 轮子中已移除 `msvcp140.dll` ,将其包含在 scikit-learn 轮子中。 :pr:`24631` 由 :user:`Chiara Marmo ` 贡献。 - |Enhancement| 为 Python 3.11 创建轮子。 :pr:`24446` 由 :user:`Chiara Marmo ` 贡献。 其他错误修复将在即将发布的 1.2 版本中提供,该版本将在未来几周内发布。 请注意,此版本已放弃对 Windows 上 32 位 Python 的支持。这是由于 SciPy 1.9.2 也放弃了该平台的支持。建议 Windows 用户安装 64 位版本的 Python。 .. _changes_1_1_2: 版本 1.1.2 ============= **2022年8月** 更改的模型 -------------- 以下估计器和函数,当使用相同的数据和参数进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化所致。 - |Fix| :class:`manifold.TSNE` 现在在拟合 `perplexity>=n_samples` 时会抛出 `ValueError` ,以确保算法的数学正确性。 :pr:`10805` 由 :user:`Mathias Andersen ` 和 :pr:`23471` 由 :user:`Meekail Zain ` 贡献。 变更日志 --------- - |Fix| 对于参数无效的元估计器,显示默认的 HTML 表示。:pr:`24015` 由 `Thomas Fan`_ 贡献。 - |Fix| 为后端在 1.1 中已更改的估计器和函数添加对 F 连续数组的支持。 :pr:`23990` 由 :user:`Julien Jerphanion ` 提交。 - |Fix| 现在为 MacOS 10.9 及以上版本提供了 Wheels。:pr:`23833` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.base` ................... - |Fix| :class:`base.BaseEstimator` 类的 `get_params` 方法现在支持具有 `type` 类型参数的估计器,这些参数具有 `get_params` 方法。:pr:`24017` 由 :user:`Henry Sorsky ` 提交。 :mod:`sklearn.cluster` ...................... - |Fix| 修复了 :class:`cluster.Birch` 中的一个错误,该错误在数据集中存在重复项时可能导致节点分裂时触发错误。:pr:`23395` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.feature_selection` ................................ - |Fix| :class:`feature_selection.SelectFromModel` 默认选择阈值为 1e-5,当估计器是 :class:`linear_model.ElasticNet` 或 :class:`linear_model.ElasticNetCV` 且 `l1_ratio` 等于 1 或 :class:`linear_model.LassoCV` 时。:pr:`23636` 由 :user:`Hao Chun Chang ` 提交。 :mod:`sklearn.impute` ..................... - |Fix| :class:`impute.SimpleImputer` 在 `transform` 时使用 `fit` 中看到的 dtype,当 dtype 为对象时。:pr:`22063` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.linear_model` ........................... - |Fix| 使用 dtype 感知的容差来验证 gram 矩阵(由用户传递或预计算)。:pr:`22059` 由 :user:`Malte S. Kurz ` 提交。 - |Fix| 修复了 :class:`linear_model.LogisticRegression` 中使用 `solver="newton-cg"` 、 `fit_intercept=True` 和一个特征时的错误。:pr:`23608` 由 `Tom Dupre la Tour`_ 提交。 :mod:`sklearn.manifold` ....................... - |Fix| :class:`manifold.TSNE` 现在在拟合时抛出 `ValueError` ,当 `perplexity>=n_samples` 以确保算法的数学正确性。:pr:`10805` 由 :user:`Mathias Andersen ` 和 :pr:`23471` 由 :user:`Meekail Zain ` 提交。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 :class:`metrics.coverage_error` 对于一维数组输入的错误消息。 :pr:`23548` 由 :user:`Hao Chun Chang ` 提交。 :mod:`sklearn.preprocessing` ............................ - |Fix| :meth:`preprocessing.OrdinalEncoder.inverse_transform` 正确处理了 `unknown_value` 或 `encoded_missing_value` 为 `nan` 的情况。:pr:`24087` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.tree` ................... - |Fix| 修复了 :class:`tree.DecisionTreeRegressor` 和 :class:`tree.DecisionTreeClassifier` 在拟合过程中的无效内存访问错误。:pr:`23273` 由 `Thomas Fan`_ 提交。 .. _changes_1_1_1: 版本 1.1.1 ========= **2022年5月** 更新日志 -------- - |Enhancement| 改进了导入 :class:`model_selection.HalvingGridSearchCV` 、 :class:`model_selection.HalvingRandomSearchCV` 或 :class:`impute.IterativeImputer` 时未导入实验标志的错误消息。 :pr:`23194` 由 `Thomas Fan`_ 提交。 - |Enhancement| 在 doc/conf.py 中添加了一个扩展,以自动生成处理 NaN 值的估计器列表。 :pr:`23198` 由 :user:`Lise Kleiber ` 、:user:`Zhehao Liu ` 和 :user:`Chiara Marmo ` 提交。 :mod:`sklearn.datasets` ....................... - |Fix| 通过不传递 `timeout` 参数,避免了 :func:`datasets.fetch_openml` 中的超时问题。 :pr:`23358` 由 :user:`Loïc Estève ` 提交。 :mod:`sklearn.decomposition` ............................ - |Fix| 避免了 :class:`decomposition.IncrementalPCA` 在 `n_samples == n_components` 时的虚假警告。 :pr:`23264` 由 :user:`Lucy Liu ` 提交。 :mod:`sklearn.feature_selection` ................................ - |Fix| :class:`feature_selection.SelectFromModel` 的 `partial_fit` 方法现在对 `max_features` 和 `feature_names_in` 参数进行验证。:pr:`23299` 由 :user:`Long Bao ` 提交。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了 :func:`metrics.precision_recall_curve` 以在100%召回率下计算精确度-召回率。现在,精确度-召回率曲线显示了对应于始终预测正类的分类器的最后一个点:召回率=100%,精确度=类别平衡。 :pr:`23214` 由 :user:`Stéphane Collot ` 和 :user:`Max Baak ` 贡献。 :mod:`sklearn.preprocessing` ............................ - |Fix| 当 ``degree`` 等于 0 时,:class:`preprocessing.PolynomialFeatures` 在 ``include_bias`` 设置为 False 时会引发错误,而在 ``include_bias`` 设置为 True 时会输出一个单一的常量数组。 :pr:`23370` 由 :user:`Zhehao Liu ` 贡献。 :mod:`sklearn.tree` ................... - |Fix| 修复了低基数特征对 :class:`tree.DecisionTreeClassifier` 、 :class:`tree.DecisionTreeRegressor` 、 :class:`ensemble.RandomForestClassifier` 、 :class:`ensemble.RandomForestRegressor` 、 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 的性能回归问题。 :pr:`23410` 由 :user:`Loïc Estève ` 贡献。 :mod:`sklearn.utils` .................... - |Fix| :func:`utils.class_weight.compute_sample_weight` 现在可以处理稀疏的 `y` 。 :pr:`23115` 由 :user:`kernc ` 贡献。 .. _changes_1_1: 版本 1.1.0 ============= **2022年5月** 最小依赖 -------------------- scikit-learn 1.1.0 版本需要 python 3.8+、numpy 1.17.3+ 和 scipy 1.3.2+。可选的最小依赖是 matplotlib 3.1.2+。 更改的模型 -------------- 以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强)或随机抽样过程的变化。 - |Efficiency| :class:`cluster.KMeans` 现在默认使用 ``algorithm="lloyd"`` 而不是 ``algorithm="auto"`` ,后者等效于 - ``algorithm="elkan"`` 。Lloyd算法和Elkan算法收敛到相同的解,直到数值舍入误差,但通常Lloyd算法使用更少的内存,并且往往更快。 - |Efficiency| 拟合 :class:`tree.DecisionTreeClassifier` 、 :class:`tree.DecisionTreeRegressor` 、 :class:`ensemble.RandomForestClassifier` 、 :class:`ensemble.RandomForestRegressor` 、 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 平均比以前版本快15%,这得益于一个新的排序算法来找到最佳分割。 模型可能会有所不同,因为对具有相同准则值的分割处理方式不同:旧的和新的排序算法都是不稳定的排序算法。:pr:`22868` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`cluster.SpectralClustering` 和 :class:`manifold.SpectralEmbedding` 的特征向量初始化现在在使用 `'amg'` 或 `'lobpcg'` 求解器时从高斯分布中采样。这一更改提高了求解器的数值稳定性,但可能导致不同的模型。 - |Fix| :func:`feature_selection.f_regression` 和 :func:`feature_selection.r_regression` 现在默认返回有限分数,而不是在一些极端情况下返回 `np.nan` 和 `np.inf` 。如果你确实想要获取非有限值并保持旧的行为,可以使用 `force_finite=False` 。 - |Fix| 包含所有非字符串列(如MultiIndex)的Panda's DataFrame在传递给估计器时不再发出警告。估计器将继续忽略DataFrame中非字符串列的列名。要定义 `feature_names_in_` ,列必须全部为字符串。:pr:`22410` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`preprocessing.KBinsDiscretizer` 对箱边界的处理稍有变化,这可能导致相同数据的不同编码。 - |Fix| :func:`calibration.calibration_curve` 对箱的处理方式有所改变, 边缘略有变化,这可能导致在相同数据下产生不同的输出曲线。 - |Fix| :class:`discriminant_analysis.LinearDiscriminantAnalysis` 现在使用正确的方差缩放系数,这可能导致不同的模型行为。 - |Fix| :meth:`feature_selection.SelectFromModel.fit` 和 :meth:`feature_selection.SelectFromModel.partial_fit` 现在可以在 `prefit=True` 的情况下调用。当 `prefit=True` 时, `estimators_` 将是 `estimator` 的深拷贝。:pr:`23271` 由 :user:`Guillaume Lemaitre ` 贡献。 更新日志 -------- .. 条目应按模块(按字母顺序)分组,并以前缀标签之一开头:|MajorFeature|、|Feature|、|Efficiency|、|Enhancement|、|Fix| 或 |API|(参见 whats_new.rst 中的描述)。 条目应按这些标签排序(例如,|Fix| 在 |Efficiency| 之后)。 非特定于某个模块的更改应列在 *多个模块* 或 *杂项* 下。 条目应以以下内容结束: :pr:`123456` 由 :user:`Joe Bloggs ` 贡献。 其中 123456 是 *拉取请求* 编号,而不是问题编号。 - |Efficiency| 针对密集 float64 数据集的成对距离缩减的底层例程已重构。以下函数和估计器现在在硬件可扩展性和速度提升方面受益于改进的性能: - :func:`sklearn.metrics.pairwise_distances_argmin` - :func:`sklearn.metrics.pairwise_distances_argmin_min` - :class:`sklearn.cluster.AffinityPropagation` - :class:`sklearn.cluster.Birch` - :class:`sklearn.cluster.MeanShift` - :class:`sklearn.cluster.OPTICS` - :class:`sklearn.cluster.SpectralClustering` - :func:`sklearn.feature_selection.mutual_info_regression` - :class:`sklearn.neighbors.KNeighborsClassifier` - :class:`sklearn.neighbors.KNeighborsRegressor` - :class:`sklearn.neighbors.RadiusNeighborsClassifier` - :class:`sklearn.neighbors.RadiusNeighborsRegressor` - :class:`sklearn.neighbors.LocalOutlierFactor` - :class:`sklearn.neighbors.NearestNeighbors` - :class:`sklearn.manifold.Isomap` - :class:`sklearn.manifold.LocallyLinearEmbedding` - :class:`sklearn.manifold.TSNE` - :func:`sklearn.manifold.trustworthiness` - :class:`sklearn.semi_supervised.LabelPropagation` - :class:`sklearn.semi_supervised.LabelSpreading` 例如 :class:`sklearn.neighbors.NearestNeighbors.kneighbors` 和 :class:`sklearn.neighbors.NearestNeighbors.radius_neighbors` 在笔记本电脑上的速度分别可以比之前快至20倍和5倍。 此外,这两种算法的实现现在适用于多核机器,使得它们可以用于包含数百万样本的数据集。 :pr:`21987` , :pr:`22064` , :pr:`22065` , :pr:`22288` 和 :pr:`22320` 由 :user:`Julien Jerphanion ` 贡献。 - |Enhancement| 所有scikit-learn模型现在在某些输入包含意外的 `NaN` 或无限值时生成更具信息性的错误消息。 特别是消息包含输入名称("X"、"y"或"sample_weight"),并且如果在 `X` 中发现意外的 `NaN` 值,错误消息会建议潜在的解决方案。 :pr:`21219` 由 :user:`Olivier Grisel ` 贡献。 - |Enhancement| 所有scikit-learn模型现在在通过 `set_params` 设置无效超参数时生成更具信息性的错误消息。 :pr:`21542` 由 :user:`Olivier Grisel ` 贡献。 - |Enhancement| 移除了HTML表示中的随机唯一标识符。 通过这一更改,只要单元格按相同顺序运行,Jupyter笔记本就是可重现的。:pr:`23098` 由 `Thomas Fan`_ 贡献。 - |Fix| 将 `non_deterministic` 标签设置为 `True` 的估计器将跳过 `check_methods_sample_order_invariance` 和 `check_methods_subset_invariance` 测试。 :pr:`22318` 由 :user:`Zhehao Liu ` 贡献。 - |API| 通过 `loss` 参数已变得更加一致。推荐的方式是通过设置值为 `"log_loss"` 。旧的选项名称仍然有效并产生相同的模型,但已被弃用,并将在 1.3 版本中移除。 - 对于 :class:`ensemble.GradientBoostingClassifier` , `loss` 参数名称 "deviance" 已被弃用,取而代之的是新的名称 "log_loss",现在这是默认值。 :pr:`23036` 由 :user:`Christian Lorentzen ` 提交。 - 对于 :class:`ensemble.HistGradientBoostingClassifier` , `loss` 参数名称 "auto"、"binary_crossentropy" 和 "categorical_crossentropy" 已被弃用,取而代之的是新的名称 "log_loss",现在这是默认值。 :pr:`23040` 由 :user:`Christian Lorentzen ` 提交。 - 对于 :class:`linear_model.SGDClassifier` , `loss` 参数名称 "log" 已被弃用,取而代之的是新的名称 "log_loss"。 :pr:`23046` 由 :user:`Christian Lorentzen ` 提交。 - |API| 在 Jupyter 笔记本中,估计器的富 HTML 表示现在默认启用。可以通过在 :func:`sklearn.set_config` 中设置 `display='text'` 来停用。 :pr:`22856` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.calibration` .......................... - |Enhancement| :func:`calibration.calibration_curve` 接受一个参数 `pos_label` 来指定正类标签。 :pr:`21032` 由 :user:`Guillaume Lemaitre ` 提交。 - |Enhancement| :meth:`calibration.CalibratedClassifierCV.fit` 现在支持传递 `fit_params` ,这些参数会被路由到 `base_estimator` 。 :pr:`18170` 由 :user:`Benjamin Bossan ` 提交。 - |Enhancement| :class:`calibration.CalibrationDisplay` 接受一个参数 `pos_label` 来在图中添加此信息。 :pr:`21038` 由 :user:`Guillaume Lemaitre ` 提交。 - |Fix| :func:`calibration.calibration_curve` 现在更一致地处理 bin 边缘。 :pr:`14975` 由 `Andreas Müller`_ 和 :pr:`22526` 由 :user:`Meekail Zain ` 提交。 - |API| :func:`calibration.calibration_curve` 的 `normalize` 参数现已弃用,并将在版本 1.3 中移除。建议使用适当的概率(即分类器的 :term:`predict_proba` 正类)作为 `y_prob` 。 :pr:`23095` 由 :user:`Jordan Silke ` 提交。 :mod:`sklearn.cluster` ...................... - |MajorFeature| :class:`cluster.BisectingKMeans` 引入了二分 K-Means 算法 :pr:`20031` 由 :user:`Michal Krawczyk ` 、 :user:`Tom Dupre la Tour ` 和 :user:`Jérémie du Boisberranger ` 提交。 - |Enhancement| :class:`cluster.SpectralClustering` 和 :func:`cluster.spectral_clustering` 现在包含新的 `'cluster_qr'` 方法,该方法在嵌入空间中对样本进行聚类,作为现有 `'kmeans'` 和 `'discrete'` 方法的替代方案。更多详情请参见 :func:`cluster.spectral_clustering` 。 :pr:`21148` 由 :user:`Andrew Knyazev ` 提交。 - |Enhancement| 为 :class:`cluster.Birch` 、 :class:`cluster.FeatureAgglomeration` 、:class:`cluster.KMeans` 、 :class:`cluster.MiniBatchKMeans` 添加了 :term:`get_feature_names_out` 。 :pr:`22255` 由 `Thomas Fan`_ 提交。 - |Enhancement| :class:`cluster.SpectralClustering` 现在在传递 `n_clusters` 、 `n_init` 、 `gamma` 、 `n_neighbors` 、 `eigen_tol` 或 `degree` 的无效值时会引发一致的错误消息。 :pr:`21881` 由 :user:`Hugo Vassard ` 提交。 - |Enhancement| :class:`cluster.AffinityPropagation` 现在即使模型未完全收敛,也会返回聚类中心和标签(如果存在)。在返回这些可能退化的聚类中心和标签时,会显示一条新的警告消息。如果没有构建聚类中心,则聚类中心保持为空列表,标签设置为 `-1` ,并显示原始警告消息。 :pr:`22217` 由 :user:`Meekail Zain ` 提交。 - |Efficiency| 在 :class:`cluster.KMeans` 中,默认的 ``algorithm`` 现在是 ``"lloyd"`` ,这是完整的经典 EM 风格算法。 ``"auto"`` 和 ``"full"`` 已被弃用,并将在版本 1.3 中移除。它们现在都是 ``"lloyd"`` 的别名。之前的默认值是 ``"auto"`` ,它依赖于 Elkan 的算法。Lloyd 的算法比 Elkan 的算法使用更少的内存,它在许多数据集上更快,并且结果相同,因此进行了更改。:pr:`21735` 由 :user:`Aurélien Geron ` 贡献。 - |Fix| :class:`cluster.KMeans` 的 `init` 参数现在正确支持类似数组的输入和 NumPy 字符串标量。:pr:`22154` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.compose` ...................... - |Fix| :class:`compose.ColumnTransformer` 现在从 `__init__` 和 `set_params` 方法中移除了验证错误。:pr:`22537` 由 :user:`iofall ` 和 :user:`Arisa Y. ` 贡献。 - |Fix| 当使用 `slice` 指定列时,:class:`compose.ColumnTransformer` 中的 :term:`get_feature_names_out` 功能被破坏。这在 :pr:`22775` 和 :pr:`22913` 中由 :user:`randomgeek78 ` 修复。 :mod:`sklearn.covariance` ......................... - |Fix| :class:`covariance.GraphicalLassoCV` 现在接受 NumPy 数组作为参数 `alphas` 。:pr:`22493` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.cross_decomposition` .................................. - |Enhancement| :class:`cross_decomposition.PLSRegression` 、:class:`cross_decomposition.PLSCanonical` 和 :class:`cross_decomposition.CCA` 的 `inverse_transform` 方法现在允许在给定 `Y` 参数时重建 `X` 目标。:pr:`19680` 由 :user:`Robin Thibaut ` 贡献。 - |Enhancement| 为 :mod:`~sklearn.cross_decomposition` 模块中的所有转换器添加了 :term:`get_feature_names_out` ::class:`cross_decomposition.CCA` 、:class:`cross_decomposition.PLSSVD` 、:class:`cross_decomposition.PLSRegression` 。 和 :class:`cross_decomposition.PLSCanonical` 。:pr:`22119` 由 `Thomas Fan`_ 提交。 - |Fix| :class:`cross_decomposition.CCA` 、:class:`cross_decomposition.PLSCanonical` 和 :class:`cross_decomposition.PLSRegression` 的 :term:`coef_` 属性的形状将在版本 1.3 中更改,从 `(n_features, n_targets)` 变为 `(n_targets, n_features)` ,以与其他线性模型保持一致,并使其能够与期望特定 `coef_` 形状的接口(例如 :class:`feature_selection.RFE` )一起工作。:pr:`22016` 由 :user:`Guillaume Lemaitre ` 提交。 - |API| 为 :class:`cross_decomposition.PLSCanonical` 、:class:`cross_decomposition.PLSRegression` 和 :class:`cross_decomposition.CCA` 添加了拟合属性 `intercept_` 。方法 `predict` 实际上等同于 `Y = X @ coef_ + intercept_` 。:pr:`22015` 由 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.datasets` ....................... - |Feature| :func:`datasets.load_files` 现在接受基于文件扩展名的忽略列表和允许列表。:pr:`19747` 由 :user:`Tony Attalla ` 提交,以及 :pr:`22498` 由 :user:`Meekail Zain ` 提交。 - |Enhancement| :func:`datasets.make_swiss_roll` 现在支持可选参数 `hole` ;当设置为 True 时,返回 swiss-hole 数据集。:pr:`21482` 由 :user:`Sebastian Pujalte ` 提交。 - |Enhancement| :func:`datasets.make_blobs` 在生成过程中不再复制数据,因此使用更少的内存。:pr:`22412` 由 :user:`Zhehao Liu ` 提交。 - |Enhancement| :func:`datasets.load_diabetes` 现在接受参数 `scaled` ,以允许加载未缩放的数据。此数据集的缩放版本现在从未缩放数据计算得出,并且可能产生与之前版本略有不同的结果(在 1e-4 绝对容差范围内)。:pr:`16605` 由 :user:`Mandy Gu ` 提交。 - |Enhancement| :func:`datasets.fetch_openml` 现在有两个可选参数 `n_retries` 和 `delay` 。默认情况下,:func:`datasets.fetch_openml` 会在网络故障时重试 3 次,每次尝试之间有延迟。 :pr:`21901` 由 :user:`Rileran ` 提交。 - |Fix| :func:`datasets.fetch_covtype` 现在是并发安全的:数据在移动到数据目录之前会下载到临时目录。 :pr:`23113` 由 :user:`Ilion Beyst ` 提交。 - |API| :func:`datasets.make_sparse_coded_signal` 现在接受一个参数 `data_transposed` 来明确指定矩阵 `X` 的形状。默认行为 `True` 是返回一个转置的矩阵 `X` ,对应于 `(n_features, n_samples)` 的形状。默认值将在版本 1.3 中更改为 `False` 。 :pr:`21425` 由 :user:`Gabriel Stefanini Vicente ` 提交。 :mod:`sklearn.decomposition` ............................ - |MajorFeature| 新增了一个估计器 :class:`decomposition.MiniBatchNMF` 。它是一个更快但准确度较低的非负矩阵分解版本,更适合大型数据集。 :pr:`16948` 由 :user:`Chiara Marmo ` 、:user:`Patricio Cerda ` 和 :user:`Jérémie du Boisberranger ` 提交。 - |Enhancement| :func:`decomposition.dict_learning` 、:func:`decomposition.dict_learning_online` 和 :func:`decomposition.sparse_encode` 保留 `numpy.float32` 的数据类型。 :class:`decomposition.DictionaryLearning` 、:class:`decomposition.MiniBatchDictionaryLearning` 和 :class:`decomposition.SparseCoder` 保留 `numpy.float32` 的数据类型。 :pr:`22002` 由 :user:`Takeshi Oura ` 提交。 - |Enhancement| :class:`decomposition.PCA` 暴露了一个参数 `n_oversamples` 来调整 :func:`utils.extmath.randomized_svd` ,当特征数量较大时获得准确结果。 :pr:`21109` 由 :user:`Smile ` 提交。 - |Enhancement| :class:`decomposition.MiniBatchDictionaryLearning` 和 :func:`decomposition.dict_learning_online` 已被重构,现在具有更好的性能和更清晰的代码结构。 基于字典或目标函数的小变化停止准则,由新的 `max_iter` 、 `tol` 和 `max_no_improvement` 参数控制。此外,它们的一些参数和属性已被弃用。 - `n_iter` 参数在两者中均已被弃用。请改用 `max_iter` 。 - `iter_offset` 、 `return_inner_stats` 、 `inner_stats` 和 `return_n_iter` 参数在 :func:`decomposition.dict_learning_online` 中用于内部目的,已被弃用。 - `inner_stats_` 、 `iter_offset_` 和 `random_state_` 属性在 :class:`decomposition.MiniBatchDictionaryLearning` 中用于内部目的,已被弃用。 - `batch_size` 参数的默认值将在版本 1.3 中从 3 更改为 256。 :pr:`18975` 由 :user:`Jérémie du Boisberranger ` 提供。 - |Enhancement| :class:`decomposition.SparsePCA` 和 :class:`decomposition.MiniBatchSparsePCA` 保留 `numpy.float32` 的数据类型。 :pr:`22111` 由 :user:`Takeshi Oura ` 提供。 - |Enhancement| :class:`decomposition.TruncatedSVD` 现在允许 `n_components == n_features` ,如果 `algorithm='randomized'` 。 :pr:`22181` 由 :user:`Zach Deane-Mayer ` 提供。 - |Enhancement| 在 :mod:`~sklearn.decomposition` 模块中的所有转换器中添加了 :term:`get_feature_names_out` : :class:`decomposition.DictionaryLearning` 、 :class:`decomposition.FactorAnalysis` 、 :class:`decomposition.FastICA` 、 :class:`decomposition.IncrementalPCA` 、 :class:`decomposition.KernelPCA` 、 :class:`decomposition.LatentDirichletAllocation` 、 :class:`decomposition.MiniBatchDictionaryLearning` 、 :class:`decomposition.MiniBatchSparsePCA` 、 :class:`decomposition.NMF` 、 :class:`decomposition.PCA` 、 :class:`decomposition.SparsePCA` , 以及 :class:`decomposition.TruncatedSVD` 。:pr:`21334` 由 `Thomas Fan`_ 提供。 - |Enhancement| :class:`decomposition.TruncatedSVD` 公开了参数 `n_oversamples` 和 `power_iteration_normalizer` 以进行调整。 - |Enhancement| :func:`utils.extmath.randomized_svd` 在特征数量大、矩阵秩高或其他矩阵特性使得低秩近似困难时,能够获得更准确的结果。 :pr:`21705` 由 :user:`Jay S. Stanley III ` 贡献。 - |Enhancement| :class:`decomposition.PCA` 公开了参数 `power_iteration_normalizer` ,用于调整 :func:`utils.extmath.randomized_svd` ,在低秩近似困难时获得更准确的结果。 :pr:`21705` 由 :user:`Jay S. Stanley III ` 贡献。 - |Fix| :class:`decomposition.FastICA` 现在在 `fit` 方法中验证输入参数,而不是在 `__init__` 中。 :pr:`21432` 由 :user:`Hannah Bohle ` 和 :user:`Maren Westermann ` 贡献。 - |Fix| :class:`decomposition.FastICA` 现在接受 `np.float32` 数据而不进行静默向上转换。 `fit` 和 `fit_transform` 方法保留了数据类型,并且主要拟合属性使用与训练数据相同精度的数据类型。 :pr:`22806` 由 :user:`Jihane Bennis ` 和 :user:`Olivier Grisel ` 贡献。 - |Fix| :class:`decomposition.FactorAnalysis` 现在在 `fit` 方法中验证输入参数,而不是在 `__init__` 中。 :pr:`21713` 由 :user:`Haya ` 和 :user:`Krum Arnaudov ` 贡献。 - |Fix| :class:`decomposition.KernelPCA` 现在在 `fit` 方法中验证输入参数,而不是在 `__init__` 中。 :pr:`21567` 由 :user:`Maggie Chege ` 贡献。 - |Fix| :class:`decomposition.PCA` 和 :class:`decomposition.IncrementalPCA` 在 `self.noise_variance_` 为零时,更安全地使用协方差矩阵的逆来计算精度。 :pr:`22300` 由 :user:`Meekail Zain ` 贡献,以及 :pr:`15948` 由 :user:`sysuresh` 贡献。 - |Fix| 在调用 `fit` 或 `fit_transform` 时,:class:`decomposition.PCA` 的峰值内存使用量大幅减少。 :pr:`22553` 由 :user:`Meekail Zain ` 贡献。 - |API| :func:`decomposition.FastICA` 现在支持白化时的单位方差。 其 `whiten` 参数的默认值将从 `True` (其行为类似于 `'arbitrary-variance'` )在版本 1.3 中更改为 `'unit-variance'` 。:pr:`19490` 由 :user:`Facundo Ferrin ` 和 :user:`Julien Jerphanion ` 贡献。 :mod:`sklearn.discriminant_analysis` .................................... - |Enhancement| 为 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 添加了 :term:`get_feature_names_out` 。:pr:`22120` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`discriminant_analysis.LinearDiscriminantAnalysis` 现在使用了正确的方差缩放系数,这可能导致不同的模型行为。:pr:`15984` 由 :user:`Okon Samuel ` 贡献,:pr:`22696` 由 :user:`Meekail Zain ` 贡献。 :mod:`sklearn.dummy` .................... - |Fix| :class:`dummy.DummyRegressor` 在 `fit` 过程中不再覆盖 `constant` 参数。:pr:`22486` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.ensemble` ....................... - |MajorFeature| 为 :class:`ensemble.HistGradientBoostingRegressor` 添加了额外的选项 `loss="quantile"` 用于建模分位数。分位数水平可以通过新的参数 `quantile` 指定。:pr:`21800` 和 :pr:`20567` 由 :user:`Christian Lorentzen ` 贡献。 - |Efficiency| :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 的 `fit` 方法现在在非初始热启动运行时调用 :func:`utils.check_array` 并设置参数 `force_all_finite=False` ,因为之前已经检查过了。:pr:`22159` 由 :user:`Geoffrey Paris ` 贡献。 - |Enhancement| :class:`ensemble.HistGradientBoostingClassifier` 在二分类和多分类问题上更快,这得益于新的私有损失函数模块。:pr:`20811` 、:pr:`20567` 和 :pr:`21814` 由 :user:`Christian Lorentzen ` 贡献。 - |Enhancement| 添加了对使用预拟合模型与 `cv="prefit"` 的支持。 在 :class:`ensemble.StackingClassifier` 和 :class:`ensemble.StackingRegressor` 中。 :pr:`16748` 由 :user:`Siqi He ` 和 :pr:`22215` 由 :user:`Meekail Zain ` 提交。 - |Enhancement| :class:`ensemble.RandomForestClassifier` 和 :class:`ensemble.ExtraTreesClassifier` 新增了 `criterion="log_loss"` ,该选项 等同于 `criterion="entropy"` 。 :pr:`23047` 由 :user:`Christian Lorentzen ` 提交。 - |Enhancement| 为 :class:`ensemble.VotingClassifier` 、:class:`ensemble.VotingRegressor` 、 :class:`ensemble.StackingClassifier` 和 :class:`ensemble.StackingRegressor` 添加了 :term:`get_feature_names_out` 。 :pr:`22695` 和 :pr:`22697` 由 `Thomas Fan`_ 提交。 - |Enhancement| :class:`ensemble.RandomTreesEmbedding` 现在有一个包含树索引和叶索引的 信息性 :term:`get_feature_names_out` 函数。 :pr:`21762` 由 :user:`Zhehao Liu ` 和 `Thomas Fan`_ 提交。 - |Efficiency| 在多进程设置中,拟合 :class:`ensemble.RandomForestClassifier` 、 :class:`ensemble.RandomForestRegressor` 、:class:`ensemble.ExtraTreesClassifier` 、 :class:`ensemble.ExtraTreesRegressor` 和 :class:`ensemble.RandomTreesEmbedding` 现在更快,尤其是在启用 `warm_start` 的后续拟合中。 :pr:`22106` 由 :user:`Pieter Gijsbers ` 提交。 - |Fix| 更改了 :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 中的参数 `validation_fraction` , 如果传入的参数不是浮点数,则会引发错误。 :pr:`21632` 由 :user:`Genesis Valencia ` 提交。 - |Fix| 在 CPU 资源使用受限的情况下,例如在 Docker 容器中使用 cgroups 配额时, 移除了 :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 中可能导致 CPU 过度订阅的潜在来源。 :pr:`22566` 由 :user:`Jérémie du Boisberranger ` 提交。 - |Fix| :class:`ensemble.HistGradientBoostingClassifier` 和 :class:`ensemble.HistGradientBoostingRegressor` 在启用 `early_stopping` 并使用非默认 `scoring` 参数拟合 pandas DataFrame 时不再发出警告。:pr:`22908` 由 `Thomas Fan`_ 贡献。 - |Fix| 修复了 :class:`ensemble.StackingClassifier` 和 :class:`ensemble.StackingRegressor` 的 HTML 表示。:pr:`23097` 由 `Thomas Fan`_ 贡献。 - |API| :class:`ensemble.GradientBoostingClassifier` 和 :class:`ensemble.GradientBoostingRegressor` 的 `loss_` 属性已被弃用,并将在版本 1.3 中移除。 :pr:`23079` 由 :user:`Christian Lorentzen ` 贡献。 - |API| 将 :class:`ensemble.RandomForestRegressor` 的 `max_features` 默认值更改为 1.0,并将 :class:`ensemble.RandomForestClassifier` 的默认值更改为 `"sqrt"` 。请注意,这些更改与之前的拟合结果相同,但更易于理解。旧的默认值 `"auto"` 已被弃用,并将在版本 1.3 中移除。同样的变化也适用于 :class:`ensemble.ExtraTreesRegressor` 和 :class:`ensemble.ExtraTreesClassifier` 。 :pr:`20803` 由 :user:`Brian Sun ` 贡献。 - |Efficiency| 通过跳过重复的输入检查,提高了 :class:`ensemble.IsolationForest` 的运行时性能。:pr:`23149` 由 :user:`Zhehao Liu ` 贡献。 :mod:`sklearn.feature_extraction` ................................. - |Feature| :class:`feature_extraction.FeatureHasher` 现在支持 PyPy。 :pr:`23023` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`feature_extraction.FeatureHasher` 现在在 `transform` 中验证输入参数,而不是在 `__init__` 中。:pr:`21573` 由 :user:`Hannah Bohle ` 和 :user:`Maren Westermann ` 贡献。 - |Fix| :class:`feature_extraction.text.TfidfVectorizer` 现在不会在 `__init__` 中创建 :class:`feature_extraction.text.TfidfTransformer` ,这是我们 API 所要求的。 :pr:`21832` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.feature_selection` ................................ - |Feature| 为 :class:`feature_selection.SequentialFeatureSelector` 添加了自动模式。 如果参数 `n_features_to_select` 为 `'auto'` ,则选择特征直到分数改进不超过参数 `tol` 。 `n_features_to_select` 的默认值在 1.1 版本中从 `None` 改为 `'warn'` ,并将在 1.3 版本中变为 `'auto'` 。 `None` 和 `'warn'` 将在 1.3 版本中移除。:pr:`20145` 由 :user:`murata-yu ` 贡献。 - |Feature| 增加了向 :class:`feature_selection.SelectFromModel` 的 `max_features` 参数传递可调用对象的能力。 同时引入了新的属性 `max_features_` ,该属性在 `fit` 过程中根据 `max_features` 和数据推断得出。 如果 `max_features` 是整数,则 `max_features_ = max_features` 。 如果 `max_features` 是可调用对象,则 `max_features_ = max_features(X)` 。 :pr:`22356` 由 :user:`Meekail Zain ` 贡献。 - |Enhancement| :class:`feature_selection.GenericUnivariateSelect` 保留了 float32 数据类型。 :pr:`18482` 由 :user:`Thierry Gameiro ` 和 :user:`Daniel Kharsa ` 贡献, 以及 :pr:`22370` 由 :user:`Meekail Zain ` 贡献。 - |Enhancement| 为 :func:`feature_selection.f_regression` 和 :func:`feature_selection.r_regression` 添加了参数 `force_finite` 。 该参数允许在特征或目标为常数或特征与目标完全相关(仅适用于 F 统计量)的情况下强制输出为有限值。 :pr:`17819` 由 :user:`Juan Carlos Alfaro Jiménez ` 贡献。 - |Efficiency| 提高了 :func:`feature_selection.chi2` 处理布尔数组时的运行时性能。 :pr:`22235` 由 `Thomas Fan`_ 贡献。 - |Efficiency| 减少了 :func:`feature_selection.chi2` 的内存使用。 :pr:`21837` 由 :user:`Louis Wagner ` 贡献。 :mod:`sklearn.gaussian_process` ............................... - |Fix| :class:`gaussian_process.GaussianProcessRegressor` 的 `predict` 和 `sample_y` 方法现在返回 在单目标和多目标情况下,以及对于 `normalize_y=False` 和 `normalize_y=True` 两种情况,数组的正确形状。 :pr:`22199` 由 :user:`Guillaume Lemaitre ` 、 :user:`Aidar Shakerimoff ` 和 :user:`Tenavi Nakamura-Zimmerer ` 贡献。 - |Fix| :class:`gaussian_process.GaussianProcessClassifier` 如果在 `kernel` 中传递 `CompoundKernel` ,会引发更详细的信息错误。 :pr:`22223` 由 :user:`MarcoM ` 贡献。 :mod:`sklearn.impute` ..................... - |Enhancement| :class:`impute.SimpleImputer` 现在会在训练集中由于缺乏任何观测值而被跳过的特征名称时发出警告。 :pr:`21617` 由 :user:`Christian Ritter ` 贡献。 - |Enhancement| 增加了对 `pd.NA` 在 :class:`impute.SimpleImputer` 中的支持。 :pr:`21114` 由 :user:`Ying Xiong ` 贡献。 - |Enhancement| 为 :class:`impute.SimpleImputer` 、:class:`impute.KNNImputer` 、 :class:`impute.IterativeImputer` 和 :class:`impute.MissingIndicator` 添加了 :term:`get_feature_names_out` 。 :pr:`21078` 由 `Thomas Fan`_ 贡献。 - |API| :class:`impute.SimpleImputer` 的 `verbose` 参数已被弃用。 在移除空列时总是会发出警告。 :pr:`21448` 由 :user:`Oleh Kozynets ` 和 :user:`Christian Ritter ` 贡献。 :mod:`sklearn.inspection` ......................... - |Feature| 添加了一个显示,通过使用方法 :func:`inspection.DecisionBoundaryDisplay.from_estimator` 绘制分类器的决策边界。 :pr:`16061` 由 `Thomas Fan`_ 贡献。 - |Enhancement| 在 :meth:`inspection.PartialDependenceDisplay.from_estimator` 中,允许 `kind` 接受一个字符串列表,以指定每种特征交互的绘图类型。 :pr:`19438` 由 :user:`Guillaume Lemaitre ` 贡献。 - |Enhancement| :meth:`inspection.PartialDependenceDisplay.from_estimator` 、 :meth:`inspection.PartialDependenceDisplay.plot` 和 `inspection.plot_partial_dependence` 现在支持绘制中心化的个体条件期望(cICE)和中心化的PDP曲线,通过设置参数 `centered` 来控制。 :pr:`18310` 由 :user:`Johannes Elfner ` 和 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.isotonic` ....................... - |Enhancement| 为 :class:`isotonic.IsotonicRegression` 添加了 :term:`get_feature_names_out` 。 :pr:`22249` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.kernel_approximation` ................................... - |Enhancement| 为 :class:`kernel_approximation.AdditiveChi2Sampler` 、 :class:`kernel_approximation.Nystroem` 、 :class:`kernel_approximation.PolynomialCountSketch` 、 :class:`kernel_approximation.RBFSampler` 和 :class:`kernel_approximation.SkewedChi2Sampler` 添加了 :term:`get_feature_names_out` 。 :pr:`22137` 和 :pr:`22694` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.linear_model` ........................... - |Feature| :class:`linear_model.ElasticNet` 、:class:`linear_model.ElasticNetCV` 、 :class:`linear_model.Lasso` 和 :class:`linear_model.LassoCV` 支持稀疏输入 `X` 的 `sample_weight` 。 :pr:`22808` 由 :user:`Christian Lorentzen ` 贡献。 - |Feature| 使用 `solver="lsqr"` 的 :class:`linear_model.Ridge` 现在支持在 `fit_intercept=True` 时拟合稀疏输入。 :pr:`22950` 由 :user:`Christian Lorentzen ` 贡献。 - |Enhancement| :class:`linear_model.QuantileRegressor` 支持基于高阶求解器的稀疏输入。 :pr:`21086` 由 :user:`Venkatachalam Natchiappan ` 贡献。 此外,这些求解器现在从一开始就使用CSC矩阵,从而加快了拟合速度。 :pr:`22206` 由 :user:`Christian Lorentzen ` 贡献。 - |Enhancement| :class:`linear_model.LogisticRegression` 对于 ``solvers="lbfgs"`` 和 ``solver="newton-cg"`` 更快,特别是在二分类和多分类问题上,这得益于新的私有损失函数模块。在多分类 在这种情况下,由于目标现在是标签编码(映射为整数)而不是标签二值化(独热编码),这些求解器的内存消耗也减少了。类别越多,受益越大。:pr:`21808` , :pr:`20567` 和 :pr:`21814` 由 :user:`Christian Lorentzen ` 贡献。 - |Enhancement| :class:`linear_model.GammaRegressor` , :class:`linear_model.PoissonRegressor` 和 :class:`linear_model.TweedieRegressor` 对于 ``solvers="lbfgs"`` 更快。 :pr:`22548` , :pr:`21808` 和 :pr:`20567` 由 :user:`Christian Lorentzen ` 贡献。 - |Enhancement| 在 :class:`linear_model.RANSACRegressor` 中将参数 `base_estimator` 重命名为 `estimator` ,以提高可读性和一致性。 `base_estimator` 已弃用,将在 1.3 版本中移除。 :pr:`22062` 由 :user:`Adrian Trujillo ` 贡献。 - |Enhancement| :func:`linear_model.ElasticNet` 和 使用坐标下降法的其他线性模型类在产生非有限参数权重时显示错误消息。:pr:`22148` 由 :user:`Christian Ritter ` 和 :user:`Norbert Preining ` 贡献。 - |Enhancement| :class:`linear_model.ElasticNet` 和 :class:`linear_model.Lasso` 现在在传递 `l1_ratio` , `alpha` , `max_iter` 和 `tol` 的无效值时引发一致的错误消息。 :pr:`22240` 由 :user:`Arturo Amor ` 贡献。 - |Enhancement| :class:`linear_model.BayesianRidge` 和 :class:`linear_model.ARDRegression` 现在保留 float32 数据类型。:pr:`9087` 由 :user:`Arthur Imbert ` 贡献,:pr:`22525` 由 :user:`Meekail Zain ` 贡献。 - |Enhancement| :class:`linear_model.RidgeClassifier` 现在支持多标签分类。 :pr:`19689` 由 :user:`Guillaume Lemaitre ` 贡献。 - |Enhancement| :class:`linear_model.RidgeCV` 和 :class:`linear_model.RidgeClassifierCV` 现在在传递 `alphas` 的无效值时引发一致的错误消息。 :pr:`21606` 由 :user:`Arturo Amor ` 贡献。 - |Enhancement| :class:`linear_model.Ridge` 和 :class:`linear_model.RidgeClassifier` 现在在传递无效的 `alpha` 、 `max_iter` 和 `tol` 值时会引发一致的错误消息。 :pr:`21341` 由 :user:`Arturo Amor ` 贡献。 - |Enhancement| :func:`linear_model.orthogonal_mp_gram` 保留 `numpy.float32` 的数据类型。 :pr:`22002` 由 :user:`Takeshi Oura ` 贡献。 - |Fix| :class:`linear_model.LassoLarsIC` 现在正确计算 AIC 和 BIC。当 `n_features > n_samples` 且未提供噪声方差时,现在会引发错误。 :pr:`21481` 由 :user:`Guillaume Lemaitre ` 和 :user:`Andrés Babino ` 贡献。 - |Fix| :class:`linear_model.TheilSenRegressor` 现在在 `fit` 方法中验证输入参数 ``max_subpopulation`` ,而不是在 `__init__` 中。 :pr:`21767` 由 :user:`Maren Westermann ` 贡献。 - |Fix| :class:`linear_model.ElasticNetCV` 现在在 `l1_ratio=0` 时产生正确的警告。 :pr:`21724` 由 :user:`Yar Khine Phyo ` 贡献。 - |Fix| :class:`linear_model.LogisticRegression` 和 :class:`linear_model.LogisticRegressionCV` 现在设置 `n_iter_` 属性时,其形状符合文档字符串,并且在 one-vs-rest 设置中与其他求解器一致。以前,它只会记录每个二元子问题迭代次数的最大值,而现在会记录所有这些值。:pr:`21998` 由 :user:`Olivier Grisel ` 贡献。 - |Fix| :class:`linear_model.TweedieRegressor` 的 `family` 属性不再在 `__init__` 中进行验证。相反,这个(私有)属性在 :class:`linear_model.GammaRegressor` 、:class:`linear_model.PoissonRegressor` 和 :class:`linear_model.TweedieRegressor` 中被弃用,并将在 1.3 版本中移除。:pr:`22548` 由 :user:`Christian Lorentzen ` 贡献。 - |Fix| :class:`linear_model.LinearRegression` 的 `coef_` 和 `intercept_` 属性现在在存在 当输入为稀疏时,样本权重的处理。 :pr:`22891` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |Fix| 当输入为稀疏时,使用 `solver="sparse_cg"` 和 `solver="lbfgs"` 的 :class:`linear_model.Ridge` 的 `coef_` 和 `intercept_` 属性现在能正确计算样本权重。 :pr:`22899` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |Fix| :class:`linear_model.SGDRegressor` 和 :class:`linear_model.SGDClassifier` 现在能在启用早期停止时正确计算验证误差。 :pr:`23256` 由 :user:`Zhehao Liu ` 贡献。 - |API| :class:`linear_model.LassoLarsIC` 现在公开了 `noise_variance` 作为参数,以便提供噪声方差的估计。 这在 `n_features > n_samples` 且无法计算噪声方差估计时特别相关。 :pr:`21481` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.manifold` ....................... - |Feature| :class:`manifold.Isomap` 现在通过 `radius` 参数支持基于半径的邻居。 :pr:`19794` 由 :user:`Zhehao Liu ` 贡献。 - |Enhancement| :func:`manifold.spectral_embedding` 和 :class:`manifold.SpectralEmbedding` 支持 `np.float32` 数据类型并会保留此数据类型。 :pr:`21534` 由 :user:`Andrew Knyazev ` 贡献。 - |Enhancement| 为 :class:`manifold.Isomap` 和 :class:`manifold.LocallyLinearEmbedding` 添加了 :term:`get_feature_names_out` 。 :pr:`22254` 由 `Thomas Fan`_ 贡献。 - |Enhancement| 在 :class:`manifold.TSNE` 构造函数中添加了 `metric_params` ,用于在优化中使用的距离度量的附加参数。 :pr:`21805` 由 :user:`Jeanne Dionisi ` 和 :pr:`22685` 由 :user:`Meekail Zain ` 贡献。 - |Enhancement| :func:`manifold.trustworthiness` 在 `n_neighbours >= n_samples / 2` 时引发错误,以确保函数正确支持。 :pr:`18832` 由 :user:`Hong Shao Yang ` 和 :pr:`23033` 由 :user:`Meekail Zain ` . - |Fix| :func:`manifold.spectral_embedding` 现在使用高斯分布而不是之前的均匀分布在 [0, 1] 上的随机初始近似特征向量,以提高 `lobpcg` 和 `amg` 的数值稳定性。:pr:`21565` 由 :user:`Andrew Knyazev ` 贡献。 :mod:`sklearn.metrics` ...................... - |Feature| :func:`metrics.r2_score` 和 :func:`metrics.explained_variance_score` 新增了 `force_finite` 参数。将此参数设置为 `False` 将在完美预测或常数 `y_true` 情况下返回实际的非有限分数,而不是默认返回的有限近似值(分别为 `1.0` 和 `0.0` )。:pr:`17266` 由 :user:`Sylvain Marié ` 贡献。 - |Feature| :func:`metrics.d2_pinball_score` 和 :func:`metrics.d2_absolute_error_score` 计算了针对分位数损失和绝对误差的 :math:`D^2` 回归分数。:func:`metrics.d2_absolute_error_score` 是 :func:`metrics.d2_pinball_score` 的一个特例,固定分位数参数 `alpha=0.5` ,以方便使用和发现。:math:`D^2` 分数是 `r2_score` 的泛化,可以解释为解释的偏差比例。:pr:`22118` 由 :user:`Ohad Michel ` 贡献。 - |Enhancement| :func:`metrics.top_k_accuracy_score` 在 `y_true` 为二值且 `y_score` 为二维时,提升了错误消息。:pr:`22284` 由 `Thomas Fan`_ 贡献。 - |Enhancement| :func:`metrics.roc_auc_score` 现在在多类情况下支持 ``average=None`` 当 ``multiclass='ovr'`` 时,将返回每个类的分数。:pr:`19158` 由 :user:`Nicki Skafte ` 贡献。 - |Enhancement| 在 :meth:`metrics.ConfusionMatrixDisplay.from_estimator` 、:meth:`metrics.ConfusionMatrixDisplay.from_predictions` 和 :meth:`metrics.ConfusionMatrixDisplay.plot` 中添加了 `im_kw` 参数。 `im_kw` 参数被传递 在绘制混淆矩阵时,对 `matplotlib.pyplot.imshow` 调用进行了调整。 :pr:`20753` 由 `Thomas Fan`_ 提交。 - |Fix| :func:`metrics.silhouette_score` 现在支持预计算距离的整数输入。 :pr:`22108` 由 `Thomas Fan`_ 提交。 - |Fix| 修复了 :func:`metrics.normalized_mutual_info_score` 中的一个错误,该错误可能导致返回无界值。 :pr:`22635` 由 :user:`Jérémie du Boisberranger ` 提交。 - |Fix| 修复了当真实标签全为负时,:func:`metrics.precision_recall_curve` 和 :func:`metrics.average_precision_score` 的问题。 :pr:`19085` 由 :user:`Varun Agrawal ` 提交。 - |API| `metrics.SCORERS` 现已弃用,并将在 1.3 版本中移除。请使用 :func:`metrics.get_scorer_names` 来检索所有可用评分器的名称。 :pr:`22866` 由 `Adrin Jalali`_ 提交。 - |API| :func:`metrics.mean_absolute_percentage_error` 的参数 ``sample_weight`` 和 ``multioutput`` 现在仅支持关键字参数,与 `SLEP009 `_ 一致。 引入了弃用周期。 :pr:`21576` 由 :user:`Paul-Emile Dugnat ` 提交。 - |API| :class:`metrics.DistanceMetric` 的 `"wminkowski"` 度量已弃用,并将在 1.3 版本中移除。取而代之的是现有的 `"minkowski"` 度量现在接受一个可选的 `w` 参数作为权重。这一弃用旨在与 SciPy 1.8 约定保持一致。 :pr:`21873` 由 :user:`Yar Khine Phyo ` 提交。 - |API| :class:`metrics.DistanceMetric` 已从 :mod:`sklearn.neighbors` 移动到 :mod:`sklearn.metrics` 。 使用 `neighbors.DistanceMetric` 进行导入仍然有效,以保持向后兼容性,但此别名将在 1.3 版本中移除。 :pr:`21177` 由 :user:`Julien Jerphanion ` 提交。 :mod:`sklearn.mixture` ...................... - |Enhancement| :class:`mixture.GaussianMixture` 和 :class:`mixture.BayesianGaussianMixture` 现在可以使用 k-means++ 和随机数据点。:pr:`20408` 由 :user:`Gordon Walsh ` 、:user:`Alberto Ceballos` 和 :user:`Andres Rios` 贡献。 - |Fix| 修复了一个错误,当提供 `precisions_init` 时,正确初始化 :class:`mixture.GaussianMixture` 中的 `precisions_cholesky_` ,通过取其平方根。:pr:`22058` 由 :user:`Guillaume Lemaitre ` 贡献。 - |Fix| :class:`mixture.GaussianMixture` 现在更安全地归一化 `weights_` ,防止在调用 :meth:`mixture.GaussianMixture.sample` 时出现舍入错误,当 `n_components=1` 时。:pr:`23034` 由 :user:`Meekail Zain ` 贡献。 :mod:`sklearn.model_selection` .............................. - |Enhancement| 现在可以将 `scoring="matthews_corrcoef"` 传递给所有带有 `scoring` 参数的模型选择工具,以使用 Matthews 相关系数(MCC)。:pr:`22203` 由 :user:`Olivier Grisel ` 贡献。 - |Enhancement| 在交叉验证期间,当所有分区的拟合都失败时,会引发错误。类似地,在网格搜索期间,当所有模型和所有分区的拟合都失败时,会引发错误。:pr:`21026` 由 :user:`Loïc Estève ` 贡献。 - |Fix| :class:`model_selection.GridSearchCV` 、:class:`model_selection.HalvingGridSearchCV` 现在在 `fit` 中验证输入参数,而不是在 `__init__` 中。:pr:`21880` 由 :user:`Mrinal Tyagi ` 贡献。 - |Fix| :func:`model_selection.learning_curve` 现在支持带有回归器的 `partial_fit` 。:pr:`22982` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.multiclass` ......................... - |Enhancement| :class:`multiclass.OneVsRestClassifier` 现在支持 `verbose` 参数,以便可以看到拟合进度。:pr:`22508` 由 :user:`Chris Combs ` 贡献。 - |Fix| :meth:`multiclass.OneVsOneClassifier.predict` 在内部分类器只有 :term:`predict_proba` 时返回正确的预测。:pr:`22604` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.neighbors` ........................ - |Enhancement| 为 :class:`neighbors.RadiusNeighborsTransformer` 、 :class:`neighbors.KNeighborsTransformer` 和 :class:`neighbors.NeighborhoodComponentsAnalysis` 添加了 :term:`get_feature_names_out` 。:pr:`22212` 由 :user:`Meekail Zain ` 贡献。 - |Fix| :class:`neighbors.KernelDensity` 现在在 `fit` 方法中验证输入参数, 而不是在 `__init__` 中。:pr:`21430` 由 :user:`Desislava Vasileva ` 和 :user:`Lucy Jimenez ` 贡献。 - |Fix| :func:`neighbors.KNeighborsRegressor.predict` 现在在给定类数组输入时 能够正常工作,前提是 `KNeighborsRegressor` 首先使用传递给 `weights` 参数的可调用对象构造。 :pr:`22687` 由 :user:`Meekail Zain ` 贡献。 :mod:`sklearn.neural_network` ............................. - |Enhancement| :func:`neural_network.MLPClassifier` 和 :func:`neural_network.MLPRegressor` 在优化器产生非有限参数权重时显示错误消息。 :pr:`22150` 由 :user:`Christian Ritter ` 和 :user:`Norbert Preining ` 贡献。 - |Enhancement| 为 :class:`neural_network.BernoulliRBM` 添加了 :term:`get_feature_names_out` 。 :pr:`22248` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.pipeline` ....................... - |Enhancement| 在 :class:`pipeline.FeatureUnion` 中增加了对 "passthrough" 的支持。 将转换器设置为 "passthrough" 将使特征保持不变。 :pr:`20860` 由 :user:`Shubhraneel Pal ` 贡献。 - |Fix| :class:`pipeline.Pipeline` 现在不在 `__init__` 中验证超参数,而是在 `.fit()` 中验证。 :pr:`21888` 由 :user:`iofall ` 和 :user:`Arisa Y. ` 贡献。 - |Fix| :class:`pipeline.FeatureUnion` 不在 `__init__` 中验证超参数。 验证现在在 `.fit()` 和 `.fit_transform()` 中处理。 :pr:`21954` 由 :user:`iofall ` 和 :user:`Arisa Y. ` 贡献。 - |Fix| 在 :class:`pipeline.FeatureUnion` 中定义了 `__sklearn_is_fitted__` , 以便与 :func:`utils.validation.check_is_fitted` 返回正确的结果。 :pr:`22953` 由 :user:`randomgeek78 ` 提交。 :mod:`sklearn.preprocessing` ............................ - |Feature| :class:`preprocessing.OneHotEncoder` 现在支持将不频繁的类别分组为一个特征。通过指定如何选择不频繁的类别(使用 `min_frequency` 或 `max_categories` )来启用分组不频繁的类别。:pr:`16018` 由 `Thomas Fan`_ 提交。 - |Enhancement| 为 :class:`preprocessing.KBinsDiscretizer` 添加了 `subsample` 参数。这允许在拟合模型时指定要使用的最大样本数。该选项仅在 `strategy` 设置为 `quantile` 时可用。:pr:`21445` 由 :user:`Felipe Bidu ` 和 :user:`Amanda Dsouza ` 提交。 - |Enhancement| 为 :class:`preprocessing.OrdinalEncoder` 添加了 `encoded_missing_value` ,用于配置缺失数据的编码值。:pr:`21988` 由 `Thomas Fan`_ 提交。 - |Enhancement| 为 :class:`preprocessing.FunctionTransformer` 添加了 `get_feature_names_out` 方法和一个新的参数 `feature_names_out` 。你可以将 `feature_names_out` 设置为 'one-to-one' 以使用输入特征名称作为输出特征名称,或者将其设置为一个返回输出特征名称的可调用对象。这在变换器改变特征数量时特别有用。如果 `feature_names_out` 为 None(默认值),则 `get_output_feature_names` 未定义。:pr:`21569` 由 :user:`Aurélien Geron ` 提交。 - |Enhancement| 为 :class:`preprocessing.Normalizer` 、:class:`preprocessing.KernelCenterer` 、:class:`preprocessing.OrdinalEncoder` 和 :class:`preprocessing.Binarizer` 添加了 :term:`get_feature_names_out` 。:pr:`21079` 由 `Thomas Fan`_ 提交。 - |Fix| 使用 `method='yeo-johnson'` 的 :class:`preprocessing.PowerTransformer` 在搜索最佳 lambda 时更好地支持显著非高斯数据。:pr:`20653` 由 `Thomas Fan`_ 提交。 - |Fix| :class:`preprocessing.LabelBinarizer` 现在验证输入参数。 `fit` 而不是 `__init__` 。 :pr:`21434` 由 :user:`Krum Arnaudov ` 提供。 - |Fix| :class:`preprocessing.FunctionTransformer` 在 `check_inverse=True` 时,当输入具有混合数据类型时,现在提供信息性的错误消息。:pr:`19916` 由 :user:`Zhehao Liu ` 提供。 - |Fix| :class:`preprocessing.KBinsDiscretizer` 现在更一致地处理 bin 边缘。:pr:`14975` 由 `Andreas Müller`_ 和 :pr:`22526` 由 :user:`Meekail Zain ` 提供。 - |Fix| 添加了 :meth:`preprocessing.KBinsDiscretizer.get_feature_names_out` 支持,当 `encode="ordinal"` 时。:pr:`22735` 由 `Thomas Fan`_ 提供。 :mod:`sklearn.random_projection` ................................ - |Enhancement| 为 :class:`random_projection.GaussianRandomProjection` 和 :class:`random_projection.SparseRandomProjection` 添加了 `inverse_transform` 方法和一个 `compute_inverse_transform` 参数。当该参数设置为 True 时,在 `fit` 期间计算组件的伪逆并存储为 `inverse_components_` 。:pr:`21701` 由 :user:`Aurélien Geron ` 提供。 - |Enhancement| :class:`random_projection.SparseRandomProjection` 和 :class:`random_projection.GaussianRandomProjection` 保留了 `numpy.float32` 的数据类型。:pr:`22114` 由 :user:`Takeshi Oura ` 提供。 - |Enhancement| 为 :mod:`sklearn.random_projection` 模块中的所有转换器添加了 :term:`get_feature_names_out` ::class:`random_projection.GaussianRandomProjection` 和 :class:`random_projection.SparseRandomProjection` 。:pr:`21330` 由 :user:`Loïc Estève ` 提供。 :mod:`sklearn.svm` .................. - |Enhancement| :class:`svm.OneClassSVM` 、:class:`svm.NuSVC` 、:class:`svm.NuSVR` 、:class:`svm.SVC` 和 :class:`svm.SVR` 现在公开了 `n_iter_` ,即 libsvm 优化例程的迭代次数。:pr:`21408` 由 :user:`Juan Martín Loyola ` 提供。 - |Enhancement| :func:`svm.SVR` 、:func:`svm.SVC` 、:func:`svm.NuSVR` 、:func:`svm.OneClassSVM` 、:func:`svm.NuSVC` 现在会引发错误 当双间隙估计产生非有限参数权重时。 :pr:`22149` 由 :user:`Christian Ritter ` 和 :user:`Norbert Preining ` 贡献。 - |Fix| :class:`svm.NuSVC` , :class:`svm.NuSVR` , :class:`svm.SVC` , :class:`svm.SVR` , :class:`svm.OneClassSVM` 现在在 `fit` 方法中验证输入 参数,而不是在 `__init__` 中。 :pr:`21436` 由 :user:`Haidar Almubarak ` 贡献。 :mod:`sklearn.tree` ................... - |Enhancement| :class:`tree.DecisionTreeClassifier` 和 :class:`tree.ExtraTreeClassifier` 新增了 `criterion="log_loss"` ,它等同于 `criterion="entropy"` 。 :pr:`23047` 由 :user:`Christian Lorentzen ` 贡献。 - |Fix| 修复了 :class:`tree.DecisionTreeRegressor` 中泊松分裂准则的一个错误。 :pr:`22191` 由 :user:`Christian Lorentzen ` 贡献。 - |API| 更改了 :class:`tree.ExtraTreeRegressor` 的 `max_features` 默认值为 1.0, 以及 :class:`tree.ExtraTreeClassifier` 的 `max_features` 默认值为 `"sqrt"` ,这将不会改变拟合结果。 原始默认值 `"auto"` 已被弃用,并将在版本 1.3 中移除。 为 :class:`tree.DecisionTreeClassifier` 和 :class:`tree.DecisionTreeRegressor` 设置 `max_features` 为 `"auto"` 也已被弃用。 :pr:`22476` 由 :user:`Zhehao Liu ` 贡献。 :mod:`sklearn.utils` .................... - |Enhancement| :func:`utils.check_array` 和 :func:`utils.multiclass.type_of_target` 现在接受一个 `input_name` 参数,以便在传递无效输入数据(例如包含 NaN 或无限值)时提供更具信息性的错误消息。 :pr:`21219` 由 :user:`Olivier Grisel ` 贡献。 - |Enhancement| :func:`utils.check_array` 在传递包含 `pd.NA` 的 `Float32` 或 `Float64` pandas 扩展数组时返回一个包含 `np.nan` 的浮点型 ndarray。 :pr:`21278` 由 `Thomas Fan`_ 贡献。 - |Enhancement| :func:`utils.estimator_html_repr` 在运行于未受信任的 Jupyter 笔记本时显示更具帮助性的错误消息。 :pr:`21316` 由 `Thomas Fan`_ 提供。 - |Enhancement| :func:`utils.estimator_html_repr` 在 HTML 表示的左上角显示一个箭头,以显示元素是可点击的。:pr:`21298` 由 `Thomas Fan`_ 提供。 - |Enhancement| 当传入具有混合数据类型的 pandas DataFrame 时,:func:`utils.check_array` 在 `dtype=None` 的情况下返回数值数组。 `dtype="numeric"` 也会在 DataFrame 具有混合数据类型时更好地推断数据类型。:pr:`22237` 由 `Thomas Fan`_ 提供。 - |Enhancement| :func:`utils.check_scalar` 现在在显示类型时具有更好的消息。:pr:`22218` 由 `Thomas Fan`_ 提供。 - |Fix| 当 y 为 None 时,:func:`utils.check_X_y` 引发的 `ValidationError` 的错误消息已更改,以便与 `check_requires_y_none` 估计器检查兼容。:pr:`22578` 由 :user:`Claudio Salvatore Arcidiacono ` 提供。 - |Fix| :func:`utils.class_weight.compute_class_weight` 现在仅要求 `y` 中的所有类别在 `class_weight` 中都有一个权重。当 `y` 中存在一个类别但不在 `class_weight` 中时,仍会引发错误。:pr:`22595` 由 `Thomas Fan`_ 提供。 - |Fix| :func:`utils.estimator_html_repr` 对嵌套的元估计器有改进的视觉效果。:pr:`21310` 由 `Thomas Fan`_ 提供。 - |Fix| 当 `include_boundaries={"left", "right"}` 且边界未设置时,:func:`utils.check_scalar` 会引发错误。:pr:`22027` 由 :user:`Marie Lanternier ` 提供。 - |Fix| :func:`utils.metaestimators.available_if` 正确返回一个可以被序列化的绑定方法。:pr:`23077` 由 `Thomas Fan`_ 提供。 - |API| :func:`utils.estimator_checks.check_estimator` 的参数现在称为 `estimator` (之前的名称是 `Estimator` )。:pr:`22188` 由 :user:`Mathurin Massias ` 提供。 - |API| ``utils.metaestimators.if_delegate_has_method`` 已弃用,并将在版本 1.3 中移除。请改用 :func:`utils.metaestimators.available_if` 。:pr:`22830` 由 :user:`Jérémie du Boisberranger ` 提供。 .. rubric:: 代码和文档贡献者 感谢自版本1.0以来为项目的维护和改进做出贡献的每一个人,包括: 2357juan, Abhishek Gupta, adamgonzo, Adam Li, adijohar, Aditya Kumawat, Aditya Raghuwanshi, Aditya Singh, Adrian Trujillo Duron, Adrin Jalali, ahmadjubair33, AJ Druck, aj-white, Alan Peixinho, Alberto Mario Ceballos-Arroyo, Alek Lefebvre, Alex, Alexandr, Alexandre Gramfort, alexanmv, almeidayoel, Amanda Dsouza, Aman Sharma, Amar pratap singh, Amit, amrcode, András Simon, Andreas Grivas, Andreas Mueller, Andrew Knyazev, Andriy, Angus L'Herrou, Ankit Sharma, Anne Ducout, Arisa, Arth, arthurmello, Arturo Amor, ArturoAmor, Atharva Patil, aufarkari, Aurélien Geron, avm19, Ayan Bag, baam, Bardiya Ak, Behrouz B, Ben3940, Benjamin Bossan, Bharat Raghunathan, Bijil Subhash, bmreiniger, Brandon Truth, Brenden Kadota, Brian Sun, cdrig, Chalmer Lowe, Chiara Marmo, Chitteti Srinath Reddy, Chloe-Agathe Azencott, Christian Lorentzen, Christian Ritter, christopherlim98, Christoph T. Weidemann, Christos Aridas, Claudio Salvatore Arcidiacono, combscCode, Daniela Fernandes, darioka, Darren Nguyen, Dave Eargle, David Gilbertson, David Poznik, Dea María Léon, Dennis Osei, DessyVV, Dev514, Dimitri Papadopoulos Orfanos, Diwakar Gupta, Dr. Felix M. Riese, drskd, Emiko Sano, Emmanouil Gionanidis, EricEllwanger, Erich Schubert, Eric Larson, Eric Ndirangu, ErmolaevPA, Estefania Barreto-Ojeda, eyast, Fatima GASMI, Federico Luna, Felix Glushchenkov, fkaren27, Fortune Uwha, FPGAwesome, francoisgoupil, Frans Larsson, ftorres16, Gabor Berei, Gabor Kertesz, Gabriel Stefanini Vicente, Gabriel S Vicente, Gael Varoquaux, GAURAV CHOUDHARY, Gauthier I, genvalen, Geoffrey-Paris, Giancarlo Pablo, glennfrutiz, gpapadok, Guillaume Lemaitre, Guillermo Tomás Fernández Martín, Gustavo Oliveira, Haidar Almubarak, Hannah Bohle, Hansin Ahuja, Haoyin Xu, Haya, Helder Geovane Gomes de Lima, henrymooresc, Hideaki Imamura, Himanshu Kumar, Hind-M, hmasdev, hvassard, i-aki-y, iasoon, Inclusive Coding Bot, Ingela, iofall, Ishan Kumar, Jack Liu, Jake Cowton, jalexand3r, J Alexander, Jauhar, Jaya Surya Kommireddy, Jay Stanley, Jeff Hale, je-kr, JElfner, Jenny Vo, Jérémie du Boisberranger, Jihane, Jirka Borovec, Joel Nothman, Jon Haitz Legarreta Gorroño, Jordan Silke, Jorge Ciprián, Jorge Loayza, Joseph Chazalon, Joseph Schwartz-Messing, Jovan Stojanovic, JSchuerz, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, katotten, Kaushik Roy Chowdhury, Ken4git, Kenneth Prabakaran, kernc, Kevin Doucet, KimAYoung, Koushik Joshi, Kranthi Sedamaki, krishna kumar, krumetoft, lesnee, Lisa Casino, Logan Thomas, Loic Esteve, Louis Wagner, LucieClair, Lucy Liu, Luiz Eduardo Amaral, Magali, MaggieChege, Mai, mandjevant, Mandy Gu, Manimaran, MarcoM, Marco Wurps, Maren Westermann, Maria Boerner, MarieS-WiMLDS, Martel Corentin, martin-kokos, mathurinm, Matías, matjansen, Matteo Francia, Maxwell, Meekail Zain, Megabyte, Mehrdad Moradizadeh, melemo2, Michael I Chen, michalkrawczyk, Micky774, milana2, millawell, Ming-Yang Ho, Mitzi, miwojc, Mizuki, mlant, Mohamed Haseeb, Mohit Sharma, Moonkyung94, mpoemsl, MrinalTyagi, Mr. Leu, msabatier, murata-yu, N, Nadirhan Şahin, Naipawat Poolsawat, NartayXD, nastegiano, nathansquan, nat-salt, Nicki Skafte Detlefsen, Nicolas Hug, Niket Jain, Nikhil Suresh, Nikita Titov, Nikolay Kondratyev, Ohad Michel, Oleksandr Husak, Olivier Grisel, partev, Patrick Ferreira, Paul, pelennor, PierreAttard, Piet Brömmel, Pieter Gijsbers, Pinky, poloso, Pramod Anantharam, puhuk, Purna Chandra Mansingh, QuadV, Rahil Parikh, Randall Boyes, randomgeek78, Raz Hoshia, Reshama Shaikh, Ricardo Ferreira, Richard Taylor, Rileran, Rishabh, Robin Thibaut, Rocco Meli, Roman Feldbauer, Roman Yurchak, Ross Barnowski, rsnegrin, Sachin Yadav, sakinaOuisrani, Sam Adam Day, Sanjay Marreddi, Sebastian Pujalte, SEELE, SELEE, Seyedsaman (Sam) Emami, ShanDeng123, Shao Yang Hong, sharmadharmpal, shaymerNaturalint, Shuangchi He, Shubhraneel Pal, siavrez, slishak, Smile, spikebh, sply88, Srinath Kailasa, Stéphane Collot, Sultan Orazbayev, Sumit Saha, Sven Eschlbeck, Sven Stehle, Swapnil Jha, Sylvain Marié, Takeshi Oura, Tamires Santana, Tenavi, teunpe, Theis Ferré Hjortkjær, Thiruvenkadam, Thomas J. Fan, t-jakubek, toastedyeast, Tom Dupré la Tour, Tom McTiernan, TONY GEORGE, Tyler Martin, Tyler Reddy, Udit Gupta, Ugo Marchand, Varun Agrawal, Venkatachalam N, Vera Komeyer, victoirelouis, Vikas Vishwakarma, Vikrant khedkar, Vladimir Chernyy, Vladimir Kim, WeijiaDu, Xiao Yuan, Yar Khine Phyo, Ying Xiong, yiyangq, Yosshi999, Yuki Koyama, Zach Deane-Mayer, Zeel B Patel, zempleni, zhenfisher, 赵丰 (Zhao Feng)