.. include:: _contributors.rst .. currentmodule:: sklearn .. _release_notes_1_3: =========== 版本 1.3 =========== 有关本次发布主要亮点简要描述,请参阅 :ref:`sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_3_0.py` 。 .. include:: changelog_legend.inc .. _changes_1_3_2: 版本 1.3.2 ============= **2023年10月** 更新日志 --------- :mod:`sklearn.datasets` ....................... - |Fix| 所有数据集获取器现在接受 `data_home` 为任何实现 :class:`os.PathLike` 接口的对象,例如 :class:`pathlib.Path` 。 :pr:`27468` 由 :user:`Yao Xiao ` 贡献。 :mod:`sklearn.decomposition` ............................ - |Fix| 修复了 :class:`decomposition.KernelPCA` 中的一个错误,通过强制内部 :class:`preprocessing.KernelCenterer` 的输出为默认数组。当使用 arpack 求解器时,它期望一个具有 `dtype` 属性的数组。 :pr:`27583` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.metrics` ...................... - |Fix| 修复了在并行循环中使用 `zero_division=np.nan` 的指标(例如 :func:`~metrics.precision_score` )的错误,其中 `np.nan` 的单例在子进程中会有所不同。 :pr:`27573` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.tree` ................... - |Fix| 修复了决策树 pickle 文件中通过未初始化内存泄露数据的错误,并使这些文件的生成具有确定性。 :pr:`27580` 由 :user:`Loïc Estève ` 贡献。 .. _changes_1_3_1: 版本 1.3.1 ============= **2023年9月** 变更模型 -------------- 以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或在随机抽样过程中的变化。 - |Fix| 使用 `solver='sparse_cg'` 的 Ridge 模型在 scipy>=1.12 下可能会有稍微不同的结果,这是由于 scipy 求解器底层的变化(更多详情请参见 `scipy#18488 `_ ) :pr:`26814` 由 :user:`Loïc Estève ` 提交 影响所有模块的更改 ------------------ - |Fix| `set_output` API 现在可以正确处理列表输入。:pr:`27044` 由 `Thomas Fan`_ 提交。 变更日志 --------- :mod:`sklearn.calibration` .......................... - |Fix| :class:`calibration.CalibratedClassifierCV` 现在可以处理产生较大预测分数的模型。之前它在数值上不稳定。 :pr:`26913` 由 :user:`Omar Salman ` 提交。 :mod:`sklearn.cluster` ...................... - |Fix| :class:`cluster.BisectingKMeans` 在预测与用于拟合模型的数据不同尺度的数据时可能会崩溃。 :pr:`27167` 由 `Olivier Grisel`_ 提交。 - |Fix| :class:`cluster.BisectingKMeans` 现在可以处理只有一个特征的数据。 :pr:`27243` 由 :user:`Jérémie du Boisberranger ` 提交。 :mod:`sklearn.cross_decomposition` .................................. - |Fix| :class:`cross_decomposition.PLSRegression` 现在会自动展平 `predict` 的输出,如果用一维 `y` 拟合的话。 :pr:`26602` 由 :user:`Yao Xiao ` 提交。 :mod:`sklearn.ensemble` ....................... - |Fix| 修复了 :class:`ensemble.AdaBoostClassifier` 中使用 `algorithm="SAMME"` 时每个弱学习器的决策函数应该是对称的(即样本的分数总和应该为零)的错误。 :pr:`26521` 由 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.feature_selection` ................................ - |Fix| :func:`feature_selection.mutual_info_regression` 现在可以正确计算当 `X` 是整数类型时的结果。 :pr:`26748` 由 :user:`Yao Xiao ` 提交。 :mod:`sklearn.impute` ..................... - |Fix| :class:`impute.KNNImputer` 现在在 ``transform`` 过程中正确添加缺失指示列,当 ``add_indicator`` 设置为 ``True`` 并且在 ``fit`` 过程中观察到缺失值时。:pr:`26600` 由 :user:`Shreesha Kumar Bhat ` 贡献。 :mod:`sklearn.metrics` ...................... - |Fix| 与 :func:`metrics.get_scorer` 一起使用的评分器现在能够正确处理多标签指示矩阵。 :pr:`27002` 由 :user:`Guillaume Lemaitre ` 贡献。 :mod:`sklearn.mixture` ...................... - |Fix| 从用户提供的 `precisions_init` 初始化 :class:`mixture.GaussianMixture` 对于 `covariance_type` 为 `full` 或 `tied` 时存在问题,现已修复。 :pr:`26416` 由 :user:`Yang Tao ` 贡献。 :mod:`sklearn.neighbors` ........................ - |Fix| :meth:`neighbors.KNeighborsClassifier.predict` 不再对 `pandas.DataFrames` 输入引发异常。 :pr:`26772` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |Fix| 重新引入 `sklearn.neighbors.BallTree.valid_metrics` 和 `sklearn.neighbors.KDTree.valid_metrics` 作为公共类属性。 :pr:`26754` 由 :user:`Julien Jerphanion ` 贡献。 - |Fix| :class:`sklearn.model_selection.HalvingRandomSearchCV` 不再在 `param_distributions` 参数输入为字典列表时引发异常。 :pr:`26893` 由 :user:`Stefanie Senger ` 贡献。 - |Fix| 基于邻居的估计器现在在 `metric="minkowski"` 且度量参数 `p` 在范围 `0 < p < 1` 内时,无论 `X` 的 `dtype` 如何,都能正确工作。 :pr:`26760` 由 :user:`Shreesha Kumar Bhat ` 贡献。 :mod:`sklearn.preprocessing` ............................ - |Fix| :class:`preprocessing.LabelEncoder` 正确接受 `y` 作为关键字参数。:pr:`26940` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`preprocessing.OneHotEncoder` 在 `sparse_output=True` 且输出配置为 pandas 时显示更具信息性的错误消息。 :pr:`26931` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.tree` ................... - |Fix| :func:`tree.plot_tree` 现在接受 `class_names=True` 如文档所述。 :pr:`26903` 由 :user:`Thomas Roehr <2maz>` 提供 - |Fix| :func:`tree.plot_tree` 的 `feature_names` 参数现在接受任何类型的 类似数组的对象,而不仅仅是列表。:pr:`27292` 由 :user:`Rahil Parikh ` 提供。 .. _changes_1_3: 版本 1.3.0 ============= **2023年6月** 更改的模型 -------------- 以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或随机抽样过程的变化。 - |Enhancement| :meth:`multiclass.OutputCodeClassifier.predict` 现在使用更高效的成对距离缩减。因此,打破平局的策略不同,预测的标签可能也会不同。 :pr:`25196` 由 :user:`Guillaume Lemaitre ` 提供。 - |Enhancement| :class:`decomposition.DictionaryLearning` 的 `fit_transform` 方法更高效,但在 `transform_algorithm` 与 `fit_algorithm` 不同且迭代次数较少时,可能会产生与之前版本不同的结果。 :pr:`24871` 由 :user:`Omar Salman ` 提供。 - |Enhancement| `sample_weight` 参数现在将用于 :class:`cluster.KMeans` 、:class:`cluster.BisectingKMeans` 和 :class:`cluster.MiniBatchKMeans` 的质心初始化。 这一更改将破坏向后兼容性,因为从相同的随机种子生成的数字将会不同。 :pr:`25752` 由 :user:`Gleb Levitski ` 、 :user:`Jérémie du Boisberranger ` 、 :user:`Guillaume Lemaitre ` 提供。 - |Fix| 在 :class:`decomposition.NMF` 和 :class:`decomposition.MiniBatchNMF` 的 `fit` 和 `transform` 步骤中,对 `W` 和 `H` 矩阵中的小值进行更一致的处理,这可能会产生与之前版本不同的结果。 版本更新: :pr:`25438` 由 :user:`Yotam Avidar-Constantini ` 提交。 - |Fix| :class:`decomposition.KernelPCA` 在 `gamma` 为 `None` 时,通过 `inverse_transform` 可能产生不同的结果。现在它会正确选择为拟合数据特征数的倒数 `1/n_features` ,而之前可能会错误地选择为传递给 `inverse_transform` 的数据特征数的倒数。新增了一个属性 `gamma_` ,用于揭示每次调用核函数时实际使用的 `gamma` 值。 :pr:`26337` 由 :user:`Yao Xiao ` 提交。 显示变更 -------- - |Enhancement| :class:`model_selection.LearningCurveDisplay` 默认显示训练和测试曲线。你可以设置 `score_type="test"` 以保持过去的行为。 :pr:`25120` 由 :user:`Guillaume Lemaitre ` 提交。 - |Fix| :class:`model_selection.ValidationCurveDisplay` 现在接受传递一个列表给 `param_range` 参数。 :pr:`27311` 由 :user:`Arturo Amor ` 提交。 影响所有模块的变更 ------------------ - |Enhancement| 以下类的 `get_feature_names_out` 方法现在会在实例未拟合时引发 `NotFittedError` 。这确保了所有具有 `get_feature_names_out` 方法的估计器中的错误一致性。 - :class:`impute.MissingIndicator` - :class:`feature_extraction.DictVectorizer` - :class:`feature_extraction.text.TfidfTransformer` - :class:`feature_selection.GenericUnivariateSelect` - :class:`feature_selection.RFE` - :class:`feature_selection.RFECV` - :class:`feature_selection.SelectFdr` - :class:`feature_selection.SelectFpr` - :class:`feature_selection.SelectFromModel` - :class:`feature_selection.SelectFwe` - :class:`feature_selection.SelectKBest` - :class:`feature_selection.SelectPercentile` - :class:`feature_selection.SequentialFeatureSelector` - :class:`feature_selection.VarianceThreshold` - :class:`kernel_approximation.AdditiveChi2Sampler` - :class:`impute.IterativeImputer` - :class:`impute.KNNImputer` - :class:`impute.SimpleImputer` - :class:`isotonic.IsotonicRegression` - :class:`preprocessing.Binarizer` - :class:`preprocessing.KBinsDiscretizer` - :class:`preprocessing.MaxAbsScaler` - :class:`preprocessing.MinMaxScaler` - :class:`preprocessing.Normalizer` - :class:`preprocessing.OrdinalEncoder` - :class:`preprocessing.PowerTransformer` - :class:`preprocessing.QuantileTransformer` - :class:`preprocessing.RobustScaler` - :class:`preprocessing.SplineTransformer` - :class:`preprocessing.StandardScaler` - :class:`random_projection.GaussianRandomProjection` - :class:`random_projection.SparseRandomProjection` `NotFittedError` 显示一个信息性的消息,要求使用适当的参数拟合实例。 :pr:`25294` , :pr:`25308` , :pr:`25291` , :pr:`25367` , :pr:`25402` , 由 :user:`John Pangas ` , :user:`Rahil Parikh ` , 和 :user:`Alex Buzenet ` 贡献。 - |Enhancement| 为计算平方欧氏距离(有时紧随融合归约操作)添加了一个多线程的 Cython 例程,适用于由稀疏 CSR 矩阵和密集 NumPy 组成的一对数据集。 这可以提高以下函数和估计器的性能: - :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` 性能提升的一个典型例子是当传递一个稀疏的CSR矩阵给依赖于密集NumPy表示来存储其拟合参数(或反之)的估计器的 `predict` 或 `transform` 方法时。 例如,:meth:`sklearn.neighbors.NearestNeighbors.kneighbors` 现在在这种常见情况下在普通笔记本电脑上速度提高了2倍。 :pr:`25044` 由 :user:`Julien Jerphanion ` 贡献。 - |Enhancement| 所有内部依赖于OpenMP多线程(通过Cython)的估计器现在默认使用与物理核心数相等的线程数(而不是逻辑核心数)。过去,我们观察到在SMT主机上使用与逻辑核心数相等的线程有时会根据算法和数据形状导致严重的性能问题。请注意,仍然可以手动调整OpenMP使用的线程数,如:ref:`parallelism` 中所述。 :pr:`26082` 由 :user:`Jérémie du Boisberranger ` 和 :user:`Olivier Grisel ` 贡献。 实验性 / 开发中 ---------------- - |MajorFeature| :ref:`元数据路由 ` 的相关基础方法包含在此版本中。此功能仅可通过 `enable_metadata_routing` 功能标志启用,可以使用 :func:`sklearn.set_config` 和 :func:`sklearn.config_context` 启用。目前,此功能主要对第三方开发者有用,以便为元数据路由准备其代码库,我们强烈建议他们也将其隐藏在同一功能标志后面,而不是默认启用。 :pr:`24027` 由 `Adrin Jalali`_ , :user:`Benjamin Bossan ` , 和 :user:`Omar Salman ` 贡献。 更新日志 -------- .. 条目应按模块(按字母顺序)分组,并以前缀标签之一开头:|MajorFeature|、|Feature|、|Efficiency|、|Enhancement|、 |Fix| 或 |API|(描述见 whats_new.rst)。 条目应按这些标签排序(例如 |Fix| 在 |Efficiency| 之后)。 非特定于某个模块的更改应列在 *多个模块* 或 *杂项* 下。 条目应以以下内容结束: :pr:`123456` 由 :user:`Joe Bloggs ` 贡献。 其中 123456 是 *拉取请求* 编号,而非问题编号。 `sklearn` ......... - |Feature| 在函数 :func:`sklearn.set_config` 和上下文管理器 :func:`sklearn.config_context` 中添加了一个新选项 `skip_parameter_validation` , 允许跳过传递给估计器和公共函数的参数验证。这可以加快代码速度,但应谨慎使用,因为设置无效参数时可能导致意外行为或引发难以理解的错误消息。 :pr:`25815` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.base` ................... - |Feature| 现在可以使用 `__sklearn_clone__` 协议来覆盖 :func:`base.clone` 的默认行为。:pr:`24568` 由 `Thomas Fan`_ 贡献。 - |Fix| :class:`base.TransformerMixin` 现在在 `transform` 返回命名元组时保留其类。:pr:`26121` 由 `Thomas Fan`_ 贡献。 :mod:`sklearn.calibration` .......................... - |Fix| :class:`calibration.CalibratedClassifierCV` 现在不强制 `fit_params` 的样本对齐。:pr:`25805` 由 `Adrin Jalali`_ 贡献。 :mod:`sklearn.cluster` ...................... - |MajorFeature| 添加了 :class:`cluster.HDBSCAN` ,一种现代的基于密度的层次聚类算法。类似于 :class:`cluster.OPTICS` ,它可以被视为一种 对:class:`cluster.DBSCAN` 的泛化,允许进行层次聚类而非平面聚类,然而它与:class:`cluster.OPTICS` 的方法有所不同。该算法在超参数值方面非常稳健,并且可以在不需要过多调整的情况下广泛应用于各种数据。 此实现是对 `scikit-learn-contrib/hdbscan `_ 中原始HDBSCAN实现的改编,由:user:`Leland McInnes ` 等人完成。 :pr:`26385` 由 :user:`Meekail Zain ` 提交。 - |Enhancement| `sample_weight` 参数现在将用于:class:`cluster.KMeans` 、:class:`cluster.BisectingKMeans` 和:class:`cluster.MiniBatchKMeans` 的质心初始化。这一更改将破坏向后兼容性,因为从相同的随机种子生成的数字将不同。:pr:`25752` 由 :user:`Gleb Levitski ` 、:user:`Jérémie du Boisberranger ` 、:user:`Guillaume Lemaitre ` 提交。 - |Fix| :class:`cluster.KMeans` 、:class:`cluster.MiniBatchKMeans` 和:func:`cluster.k_means` 现在正确处理了 `n_init="auto"` 和 `init` 为数组类型的组合,在这种情况下运行一次初始化。:pr:`26657` 由 :user:`Binesh Bannerjee ` 提交。 - |API| `predict` 方法中的 `sample_weight` 参数在:meth:`cluster.KMeans.predict` 和:meth:`cluster.MiniBatchKMeans.predict` 中已弃用,并将在v1.5中移除。:pr:`25251` 由 :user:`Gleb Levitski ` 提交。 - |API| :func:`cluster.FeatureAgglomeration.inverse_transform` 中的 `Xred` 参数已重命名为 `Xt` ,并将在v1.5中移除。:pr:`26503` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.compose` ...................... - |Fix| 当:class:`compose.ColumnTransformer` 的单个转换器输出带有索引的pandas数据帧时,会引发一个信息性的错误。 不一致,并且输出配置为pandas。 :pr:`26286` 由 `Thomas Fan`_ 提交。 - |Fix| :class:`compose.ColumnTransformer` 在调用 `set_output` 时正确设置了余数的输出。 :pr:`26323` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.covariance` ......................... - |Fix| 允许在 :class:`covariance.GraphicalLasso` 中使用 `alpha=0` ,与 :func:`covariance.graphical_lasso` 保持一致。 :pr:`26033` 由 :user:`Genesis Valencia ` 提交。 - |Fix| :func:`covariance.empirical_covariance` 现在在输入不合适时给出信息性的错误消息。 :pr:`26108` 由 :user:`Quentin Barthélemy ` 提交。 - |API| 在1.3版本中弃用 :func:`covariance.graphical_lasso` 中的 `cov_init` 参数,因为该参数没有效果。将在1.5版本中移除。 :pr:`26033` 由 :user:`Genesis Valencia ` 提交。 - |API| 在 :class:`covariance.GraphicalLasso` 和 :class:`covariance.GraphicalLassoCV` 中添加 `costs_` 拟合属性。 :pr:`26033` 由 :user:`Genesis Valencia ` 提交。 - |API| 在 :class:`covariance.GraphicalLasso` 中添加 `covariance` 参数。 :pr:`26033` 由 :user:`Genesis Valencia ` 提交。 - |API| 在 :class:`covariance.GraphicalLasso` 、:func:`covariance.graphical_lasso` 和 :class:`covariance.GraphicalLassoCV` 中添加 `eps` 参数。 :pr:`26033` 由 :user:`Genesis Valencia ` 提交。 :mod:`sklearn.datasets` ....................... - |Enhancement| 允许在使用pandas解析器时,通过 :func:`datasets.fetch_openml` 中的参数 `read_csv_kwargs` 覆盖用于打开ARFF文件的参数。 :pr:`26433` 由 :user:`Guillaume Lemaitre ` 提交。 - |Fix| :func:`datasets.fetch_openml` 在 `as_frame=True` 且 `parser="liac-arff"` 时返回改进的数据类型。 :pr:`26386` 由 `Thomas Fan`_ 提交。 - |Fix| 根据ARFF规范,仅标记 `"?"` 现在被视为打开使用 :func:`datasets.fetch_openml` 获取的ARFF文件时的缺失值。 pandas解析器。参数 `read_csv_kwargs` 允许覆盖此行为。 :pr:`26551` 由 :user:`Guillaume Lemaitre ` 提供。 - |Fix| :func:`datasets.fetch_openml` 将一致使用 `np.nan` 作为缺失标记 与解析器 `"pandas"` 和 `"liac-arff"` 。 :pr:`26579` 由 :user:`Guillaume Lemaitre ` 提供。 - |API| :func:`datasets.make_sparse_coded_signal` 的 `data_transposed` 参数 已弃用,并将在 v1.5 中移除。 :pr:`25784` 由 :user:`Jérémie du Boisberranger` 提供。 :mod:`sklearn.decomposition` ............................ - |Efficiency| :class:`decomposition.MiniBatchDictionaryLearning` 和 :class:`decomposition.MiniBatchSparsePCA` 现在对于小批量大小更快, 通过避免重复验证。 :pr:`25490` 由 :user:`Jérémie du Boisberranger ` 提供。 - |Enhancement| :class:`decomposition.DictionaryLearning` 现在接受参数 `callback` ,与函数 :func:`decomposition.dict_learning` 一致。 :pr:`24871` 由 :user:`Omar Salman ` 提供。 - |Fix| 在 :class:`decomposition.NMF` 和 :class:`decomposition.MiniBatchNMF` 的 `fit` 和 `transform` 步骤中, 对 `W` 和 `H` 矩阵中的小值进行更一致的处理,这可能会产生与以前版本不同的结果。 :pr:`25438` 由 :user:`Yotam Avidar-Constantini ` 提供。 - |API| :func:`decomposition.NMF.inverse_transform` 和 :class:`decomposition.MiniBatchNMF.inverse_transform` 中的 `W` 参数 已重命名为 `Xt` ,并将在 v1.5 中移除。 :pr:`26503` 由 `Adrin Jalali`_ 提供。 :mod:`sklearn.discriminant_analysis` .................................... - |Enhancement| :class:`discriminant_analysis.LinearDiscriminantAnalysis` 现在 支持 `PyTorch `__ 。详情请参阅 :ref:`array_api` 。 :pr:`25956` 由 `Thomas Fan`_ 提供。 :mod:`sklearn.ensemble` ....................... - |Feature| :class:`ensemble.HistGradientBoostingRegressor` 现在支持 通过 `loss="gamma"` 使用 Gamma 偏差损失。 使用 Gamma 偏差作为损失函数在处理偏斜分布、严格正值的目标时非常方便。 :pr:`22409` 由 :user:`Christian Lorentzen ` 贡献。 - |Feature| 通过向 :class:`ensemble.RandomForestClassifier` 、:class:`ensemble.RandomForestRegressor` 、 :class:`ensemble.ExtraTreesClassifier` 和 :class:`ensemble.ExtraTreesRegressor` 传递可调用对象, 计算自定义的袋外分数。 :pr:`25177` 由 `Tim Head`_ 贡献。 - |Feature| :class:`ensemble.GradientBoostingClassifier` 现在通过 `oob_scores_` 或 `oob_score_` 属性 暴露袋外分数。 :pr:`24882` 由 :user:`Ashwin Mathur ` 贡献。 - |Efficiency| :class:`ensemble.IsolationForest` 的预测时间现在更快 (通常快 8 倍或更多)。内部实现中,估计器现在在 `fit` 时预计算每棵树的决策路径长度。 因此,无法加载使用 scikit-learn 1.2 训练的估计器在 scikit-learn 1.3 中进行预测: 需要使用 scikit-learn 1.3 重新训练。 :pr:`25186` 由 :user:`Felipe Breve Siola ` 贡献。 - |Efficiency| 使用 `warm_start=True` 的 :class:`ensemble.RandomForestClassifier` 和 :class:`ensemble.RandomForestRegressor` 现在仅在后续 `fit` 调用中实际增加 `n_estimators` 时 重新计算袋外分数。 :pr:`26318` 由 :user:`Joshua Choo Yun Keat ` 贡献。 - |Enhancement| :class:`ensemble.BaggingClassifier` 和 :class:`ensemble.BaggingRegressor` 暴露了底层估计器的 `allow_nan` 标签。 :pr:`25506` 由 `Thomas Fan`_ 贡献。 - |Fix| :meth:`ensemble.RandomForestClassifier.fit` 当 `max_samples` 为浮点数且 `round(n_samples * max_samples) < 1` 时,设置 `max_samples = 1` 。 :pr:`25601` 由 :user:`Jan Fidor ` 贡献。 - |Fix| :meth:`ensemble.IsolationForest.fit` 在调用时不再对 pandas 数据帧中非 `"auto"` 的 `contamination` 警告缺失特征名称。 :pr:`25931` 由 :user:`Yao Xiao ` 提交。 - |Fix| :class:`ensemble.HistGradientBoostingRegressor` 和 :class:`ensemble.HistGradientBoostingClassifier` 一致地将分类特征的负值视为缺失值,遵循 LightGBM 和 pandas 的约定。 :pr:`25629` 由 `Thomas Fan`_ 提交。 - |Fix| 修复了 :class:`ensemble.AdaBoostClassifier` 和 :class:`ensemble.AdaBoostRegressor` 中 `base_estimator` 的弃用问题,该问题在 :pr:`23819` 中引入。 :pr:`26242` 由 :user:`Marko Toplak ` 提交。 :mod:`sklearn.exceptions` ......................... - |Feature| 添加了 :class:`exceptions.InconsistentVersionWarning` ,当使用与序列化时版本不一致的 scikit-learn 版本反序列化 scikit-learn 估计器时会引发此警告。 :pr:`25297` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.feature_extraction` ................................. - |API| :class:`feature_extraction.image.PatchExtractor` 现在遵循 scikit-learn 的转换器 API。该类被定义为无状态转换器,这意味着在调用 `transform` 之前不需要调用 `fit` 。参数验证仅在 `fit` 时进行。 :pr:`24230` 由 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.feature_selection` ................................ - |Enhancement| :mod:`sklearn.feature_selection` 中的所有选择器在转换时将保留 DataFrame 的数据类型。 :pr:`25102` 由 `Thomas Fan`_ 提交。 - |Fix| :class:`feature_selection.SequentialFeatureSelector` 的 `cv` 参数现在支持生成器。 :pr:`25973` 由 `Yao Xiao ` 提交。 :mod:`sklearn.impute` ..................... - |Enhancement| 为 :class:`impute.IterativeImputer` 添加了 `fill_value` 参数。 :pr:`25232` 由 :user:`Thijs van Weezel ` 提交。 - |Fix| :class:`impute.IterativeImputer` 现在正确地保留了 Pandas 当 `set_config(transform_output="pandas")` 时的索引。:pr:`26454` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.inspection` ......................... - |Enhancement| 在 :func:`inspection.partial_dependence` 和 :meth:`inspection.PartialDependenceDisplay.from_estimator` 中增加了对 `sample_weight` 的支持。这允许在我们进行检查的网格的每个值上进行加权平均。该选项仅在 `method` 设置为 `brute` 时可用。:pr:`25209` 和 :pr:`26644` 由 :user:`Carlo Lemos ` 提交。 - |API| :func:`inspection.partial_dependence` 返回一个包含新键 `grid_values` 的 :class:`utils.Bunch` 。 `values` 键已被弃用,取而代之的是 `grid_values` ,并且 `values` 键将在 1.5 版本中移除。:pr:`21809` 和 :pr:`25732` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.kernel_approximation` ................................... - |Fix| :class:`kernel_approximation.AdditiveChi2Sampler` 现在是状态无关的。 `sample_interval_` 属性已被弃用,并将在 1.5 版本中移除。:pr:`25190` 由 :user:`Vincent Maladière ` 提交。 :mod:`sklearn.linear_model` ........................... - |Efficiency| 当 `sample_weight=None` 时避免数据缩放,以及其他不必要的数据复制和意外的密集到稀疏数据转换在 :class:`linear_model.LinearRegression` 中。:pr:`26207` 由 :user:`Olivier Grisel ` 提交。 - |Enhancement| :class:`linear_model.SGDClassifier` 、:class:`linear_model.SGDRegressor` 和 :class:`linear_model.SGDOneClassSVM` 现在保留 `numpy.float32` 的数据类型。:pr:`25587` 由 :user:`Omar Salman ` 提交。 - |Enhancement| 在 :class:`linear_model.ARDRegression` 中包含了 `n_iter_` 属性,以暴露达到停止准则所需的实际迭代次数。:pr:`25697` 由 :user:`John Pangas ` 提交。 - |Fix| 使用更稳健的准则来检测 :class:`linear_model.RANSACRegressor` 的收敛性。:pr:`25697` 由 :user:`John Pangas ` 提交。 :class:`linear_model.LogisticRegression` 在線性可分的問題上使用 `penalty="l1"` 和 `solver="liblinear"` 。 :pr:`25214` 由 `Tom Dupre la Tour`_ 提交。 - |Fix| 修復了在調用 `fit` 時, :class:`linear_model.LogisticRegression` 使用 `solver="newton-cholesky"` 和 `max_iter=0` 導致的崩潰問題,該問題在首次參數更新前未能檢查模型狀態。 :pr:`26653` 由 :user:`Olivier Grisel ` 提交。 - |API| 在 :class:`linear_model.BayesianRidge` 和 :class:`linear_model.ARDRegression` 中棄用 `n_iter` ,改用 `max_iter` 。 `n_iter` 將在 scikit-learn 1.5 中移除。此更改使這些估計器與其他估計器保持一致。 :pr:`25697` 由 :user:`John Pangas ` 提交。 :mod:`sklearn.manifold` ....................... - |Fix| :class:`manifold.Isomap` 現在在 `set_config(transform_output="pandas")` 時正確保留了 Pandas 索引。 :pr:`26454` 由 `Thomas Fan`_ 提交。 :mod:`sklearn.metrics` ...................... - |Feature| 在多個分類指標中添加了 `zero_division=np.nan` : :func:`metrics.precision_score` , :func:`metrics.recall_score` , :func:`metrics.f1_score` , :func:`metrics.fbeta_score` , :func:`metrics.precision_recall_fscore_support` , :func:`metrics.classification_report` 。當 `zero_division=np.nan` 且存在零除法時,該指標未定義並從平均值中排除。在不進行平均的情況下,返回值為 `np.nan` 。 :pr:`25531` 由 :user:`Marc Torrellas Socastro ` 提交。 - |Feature| :func:`metrics.average_precision_score` 現在支持多類別情況。 :pr:`17388` 由 :user:`Geoffrey Bolmier ` 和 :pr:`24769` 由 :user:`Ashwin Mathur ` 提交。 - |Efficiency| 在 :func:`metrics.adjusted_mutual_info_score` 中計算預期互信息的效率現在更高,當唯一標籤數量較大時,其內存使用量也減少了。 :pr:`25713` 由 :user:`Kshitij Mathur ` 提交。 :user:`Guillaume Lemaitre ` , :user:`Omar Salman ` 和 :user:`Jérémie du Boisberranger ` . - |Enhancement| :class:`metrics.silhouette_samples` 现在接受样本间稀疏矩阵对距离或特征数组。 :pr:`18723` 由 :user:`Sahil Gupta ` 和 :pr:`24677` 由 :user:`Ashwin Mathur ` . - |Enhancement| 新增参数 `drop_intermediate` 到 :func:`metrics.precision_recall_curve` , :func:`metrics.PrecisionRecallDisplay.from_estimator` , :func:`metrics.PrecisionRecallDisplay.from_predictions` , 该参数会丢弃一些次优阈值以创建更轻量的精确召回曲线。 :pr:`24668` 由 :user:`dberenbaum` . - |Enhancement| :meth:`metrics.RocCurveDisplay.from_estimator` 和 :meth:`metrics.RocCurveDisplay.from_predictions` 现在接受两个新关键词, `plot_chance_level` 和 `chance_level_kw` 以绘制基线机会水平。 这条线在 `chance_level_` 属性中暴露。 :pr:`25987` 由 :user:`Yao Xiao ` . - |Enhancement| :meth:`metrics.PrecisionRecallDisplay.from_estimator` 和 :meth:`metrics.PrecisionRecallDisplay.from_predictions` 现在接受两个新 关键词, `plot_chance_level` 和 `chance_level_kw` 以绘制基线机会水平。 这条线在 `chance_level_` 属性中暴露。 :pr:`26019` 由 :user:`Yao Xiao ` . - |Fix| :func:`metrics.pairwise.manhattan_distances` 现在支持只读稀疏数据集。 :pr:`25432` 由 :user:`Julien Jerphanion ` . - |Fix| 修复了 :func:`metrics.classification_report` ,使得空输入将返回 `np.nan` 。之前,"macro avg" 和 `weighted avg` 会返回 例如 `f1-score=np.nan` 和 `f1-score=0.0` ,不一致。现在,它们 都返回 `np.nan` 。 :pr:`25531` 由 :user:`Marc Torrellas Socastro ` . - |Fix| :func:`metrics.ndcg_score` 现在对长度为1的输入给出有意义的错误信息。 :pr:`25672` 由 :user:`Lene Preuss ` 和 :user:`Wei-Chun Chu ` 贡献。 - |Fix| :func:`metrics.log_loss` 在参数 `y_pred` 的值未归一化时会发出警告,而不是在指标中实际归一化它们。从 1.5 开始,这将引发错误。 :pr:`25299` 由 :user:`Omar Salman ` 贡献。 - |Fix| 在 :func:`metrics.roc_curve` 中,使用阈值 `np.inf` 而不是任意的 `max(y_score) + 1` 。此阈值与 ROC 曲线点 `tpr=0` 和 `fpr=0` 相关联。 :pr:`26194` 由 :user:`Guillaume Lemaitre ` 贡献。 - |Fix| 在使用 SciPy>=1.9 时, `'matching'` 指标已被移除,以与不再支持 `'matching'` 的 `scipy.spatial.distance` 保持一致。 :pr:`26264` 由 :user:`Barata T. Onggo ` 贡献。 - |API| :func:`metrics.log_loss` 的 `eps` 参数已被弃用,并将在 1.5 中移除。:pr:`25299` 由 :user:`Omar Salman ` 贡献。 :mod:`sklearn.gaussian_process` ............................... - |Fix| :class:`gaussian_process.GaussianProcessRegressor` 新增了一个参数 `n_targets` ,用于在从先验分布采样时决定输出数量。 :pr:`23099` 由 :user:`Zhehao Liu ` 贡献。 :mod:`sklearn.mixture` ...................... - |Efficiency| :class:`mixture.GaussianMixture` 现在更加高效,如果用户提供了权重、均值和精度,将跳过不必要的初始化。 :pr:`26021` 由 :user:`Jiawei Zhang ` 贡献。 :mod:`sklearn.model_selection` .............................. - |MajorFeature| 新增了类 :class:`model_selection.ValidationCurveDisplay` ,允许通过 :func:`model_selection.validation_curve` 函数轻松绘制验证曲线。 :pr:`25120` 由 :user:`Guillaume Lemaitre ` 贡献。 - |API| 类 :class:`model_selection.LearningCurveDisplay` 中的参数 `log_scale` 在 1.3 中已被弃用, 将在1.5版本中移除。默认比例可以通过直接在 `ax` 对象上设置来覆盖,否则将根据数据点的间距自动设置。 :pr:`25120` 由 :user:`Guillaume Lemaitre ` 提交。 - |Enhancement| :func:`model_selection.cross_validate` 接受一个新的参数 `return_indices` ,用于返回每个交叉验证拆分的训练-测试索引。 :pr:`25659` 由 :user:`Guillaume Lemaitre ` 提交。 :mod:`sklearn.multioutput` .......................... - |Fix| :func:`getattr` 在 :meth:`multioutput.MultiOutputRegressor.partial_fit` 和 :meth:`multioutput.MultiOutputClassifier.partial_fit` 上现在会正确地抛出一个 `AttributeError` ,如果在调用 `fit` 之前执行。 :pr:`26333` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.naive_bayes` .......................... - |Fix| :class:`naive_bayes.GaussianNB` 在提供的 `sample_weight` 将问题简化为单个类别时,不会再引发 `ZeroDivisionError` 。 :pr:`24140` 由 :user:`Jonathan Ohayon ` 和 :user:`Chiara Marmo ` 提交。 :mod:`sklearn.neighbors` ........................ - |Enhancement| :meth:`neighbors.KNeighborsClassifier.predict` 和 :meth:`neighbors.KNeighborsClassifier.predict_proba` 的性能在 `n_neighbors` 较大且 `algorithm="brute"` 使用非欧几里得度量时得到了提升。 :pr:`24076` 由 :user:`Meekail Zain ` 和 :user:`Julien Jerphanion ` 提交。 - |Fix| 移除 :class:`neighbors.BallTree` 中对 `KulsinskiDistance` 的支持。这种不相似性不是度量标准,无法被 BallTree 支持。 :pr:`25417` 由 :user:`Guillaume Lemaitre ` 提交。 - |API| 对 :class:`neighbors.NearestNeighbors` 中非 `euclidean` 和 `manhattan` 度量以及可调用对象的支持已弃用,并将在1.5版本中移除。 :pr:`24083` 由 :user:`Valentin Laurent ` 提交。 :mod:`sklearn.neural_network` ............................. - |Fix| :class:`neural_network.MLPRegressor` 和 :class:`neural_network.MLPClassifier` 在 `warm_start=True` 时报告正确的 `n_iter_` 。它对应于当前调用 `fit` 时执行的迭代次数,而不是自估计器初始化以来执行的总迭代次数。 :pr:`25443` 由 :user:`Marvin Krawutschke ` 提交。 :mod:`sklearn.pipeline` ....................... - |Feature| :class:`pipeline.FeatureUnion` 现在可以使用索引表示法(例如 `feature_union["scalar"]` )按名称访问转换器。:pr:`25093` 由 `Thomas Fan`_ 提交。 - |Feature| :class:`pipeline.FeatureUnion` 现在可以访问 `feature_names_in_` 属性,如果 `.fit` 期间看到的 `X` 值具有 `columns` 属性且所有列都是字符串,例如当 `X` 是 `pandas.DataFrame` 时。:pr:`25220` 由 :user:`Ian Thompson ` 提交。 - |Fix| :meth:`pipeline.Pipeline.fit_transform` 现在如果管道的最后一步不支持 `fit_transform` ,则会引发 `AttributeError` 。:pr:`26325` 由 `Adrin Jalali`_ 提交。 :mod:`sklearn.preprocessing` ............................ - |MajorFeature| 引入 :class:`preprocessing.TargetEncoder` ,这是一种基于目标均值的条件类别编码。:pr:`25334` 由 `Thomas Fan`_ 提交。 - |Feature| :class:`preprocessing.OrdinalEncoder` 现在支持将不频繁的类别分组为一个特征。通过指定如何选择不频繁的类别(使用 `min_frequency` 或 `max_categories` )来启用不频繁类别的分组。:pr:`25677` 由 `Thomas Fan`_ 提交。 - |Enhancement| :class:`preprocessing.PolynomialFeatures` 现在在处理稀疏 `csr` 矩阵时预先计算扩展项的数量,以优化 `indices` 和 `indptr` 的 `dtype` 选择。现在可以在元素数量足够少的情况下输出带有`np.int32``indices/indptr `组件的` csr `矩阵,并会自动使用` np.int64 ` 。 对于足够大的矩阵。 :pr:`20524` 由 :user:`niuk-a `和 :pr:`23731` 由 :user:`Meekail Zain ` - |Enhancement| 新增参数 `sparse_output` 到 :class:`preprocessing.SplineTransformer` ,自 SciPy 1.8 起可用。如果 `sparse_output=True` , :class:`preprocessing.SplineTransformer` 返回一个稀疏的 CSR 矩阵。 :pr:`24145` 由 :user:`Christian Lorentzen ` 。 以下是根据规则修改后的文本: - |Enhancement| 在 :class:`preprocessing.OneHotEncoder` 中添加了 `feature_name_combiner` 参数。 这指定了一个自定义的可调用对象,用于创建由 :meth:`preprocessing.OneHotEncoder.get_feature_names_out` 返回的特征名称。该可调用对象 将输入参数 `(input_feature, category)` 组合为一个字符串。 :pr:`22506` 由 :user:`Mario Kostelac ` 。 - |Enhancement| 在 :class:`preprocessing.KBinsDiscretizer` 中增加了对 `sample_weight` 的支持。 这允许在拟合时为每个样本指定 `sample_weight` 参数。该选项仅在 `strategy` 设置为 `quantile` 和 `kmeans` 时可用。 :pr:`24935` 由 :user:`Seladus ` ,:user:`Guillaume Lemaitre ` ,和 :user:`Dea María Léon ` ,:pr:`25257` 由 :user:`Gleb Levitski ` 。 - |Enhancement| 通过 `subsample` 参数进行子采样现在可以在 :class:`preprocessing.KBinsDiscretizer` 中使用,无论使用何种策略。 :pr:`26424` 由 :user:`Jérémie du Boisberranger ` 。 - |Fix| :class:`preprocessing.PowerTransformer` 现在在 `set_config(transform_output="pandas")` 时 正确保留了 Pandas 索引。:pr:`26454` 由 `Thomas Fan` _。 - |Fix| :class:`preprocessing.PowerTransformer` 现在在使用 `method="box-cox"` 处理包含常量 `np.nan` 列的数据时正确引发错误。:pr:`26400` 由 :user:`Yao Xiao ` 。 - |Fix| 使用 `method="yeo-johnson"` 的 :class:`preprocessing.PowerTransformer` 现在会 正确处理数据。 常量特征保持不变,而不是使用 `lambdas_` 拟合参数的任意值进行转换。 :pr:`26566` 由 :user:`Jérémie du Boisberranger ` 贡献。 - |API| :class:`preprocessing.KBinsDiscretizer` 的 `subsample` 参数默认值将在 版本 1.5 中从 `None` 更改为 `200_000` ,当 `strategy="kmeans"` 或 `strategy="uniform"` 时。 :pr:`26424` 由 :user:`Jérémie du Boisberranger ` 贡献。 :mod:`sklearn.svm` .................. - |API| `dual` 参数现在接受 `auto` 选项,适用于 :class:`svm.LinearSVC` 和 :class:`svm.LinearSVR` 。 :pr:`26093` 由 :user:`Gleb Levitski ` 贡献。 :mod:`sklearn.tree` ................... - |MajorFeature| :class:`tree.DecisionTreeRegressor` 和 :class:`tree.DecisionTreeClassifier` 在 `splitter='best'` 且标准为 `gini`、`entropy` 或 `log_loss`(分类)或 `squared_error`、`friedman_mse` 或 `poisson`(回归)时支持缺失值。 :pr:`23595`、:pr:`26376` 由 `Thomas Fan` _ 贡献。 - |Enhancement| 向 :func:`tree.export_text` 添加了 `class_names` 参数。这允许按升序数值顺序为每个目标类指定 `class_names` 参数。 :pr:`25387` 由 :user:`William M ` 和 :user:`crispinlogan ` 贡献。 - |Fix| :func:`tree.export_graphviz` 和 :func:`tree.export_text` 现在接受 `feature_names` 和 `class_names` 作为类数组对象而非列表。 :pr:`26289` 由 :user:`Yao Xiao ` 贡献。 :mod:`sklearn.utils` .................... - |FIX| 修复了 :func:`utils.check_array` 以正确转换 pandas 扩展数组。 :pr:`25813` 和 :pr:`26106` 由 `Thomas Fan` _ 贡献。 - |Fix| :func:`utils.check_array` 现在支持带有扩展数组和对象数据类型的 pandas DataFrame,返回具有对象数据类型的 ndarray。 :pr:`25814` 由 `Thomas Fan` _ 贡献。 - |API| 引入了 `utils.estimator_checks.check_transformers_unfitted_stateless` 以确保无状态转换器不会引发 `NotFittedError` 。 在未先调用 `fit` 或 `fit_transform` 的情况下进行 `transform` 。 :pr:`25190` 由 :user:`Vincent Maladière ` 提供。 - |API| 现在在实例化一个继承自已弃用基类(即由 :class:`utils.deprecated` 装饰)并重写 `__init__` 方法的类时,会引发 `FutureWarning` 。 :pr:`25733` 由 :user:`Brigitta Sipőcz ` 和 :user:`Jérémie du Boisberranger ` 提供。 :mod:`sklearn.semi_supervised` .............................. - |Enhancement| :meth:`semi_supervised.LabelSpreading.fit` 和 :meth:`semi_supervised.LabelPropagation.fit` 现在接受稀疏度量。 :pr:`19664` 由 :user:`Kaushik Amar Das ` 提供。 杂项 ............. - |Enhancement| 替换已废弃的异常 `EnvironmentError` 、 `IOError` 和 `WindowsError ` 。 :pr:`26466` 由 :user:`Dimitri Papadopoulos ORfanos `提供。 .. rubric:: 代码和文档贡献者 感谢自版本 1.2 以来为项目的维护和改进做出贡献的每个人,包括: 2357juan, Abhishek Singh Kushwah, Adam Handke, Adam Kania, Adam Li, adienes, Admir Demiraj, adoublet, Adrin Jalali, A.H.Mansouri, Ahmedbgh, Ala-Na, Alex Buzenet, AlexL, Ali H. El-Kassas, amay, András Simon, André Pedersen, Andrew Wang, Ankur Singh, annegnx, Ansam Zedan, Anthony22-dev, Artur Hermano, Arturo Amor, as-90, ashah002, Ashish Dutt, Ashwin Mathur, AymericBasset, Azaria Gebremichael, Barata Tripramudya Onggo, Benedek Harsanyi, Benjamin Bossan, Bharat Raghunathan, Binesh Bannerjee, Boris Feld, Brendan Lu, Brevin Kunde, cache-missing, Camille Troillard, Carla J, carlo, Carlo Lemos, c-git, Changyao Chen, Chiara Marmo, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, crispinlogan, Da-Lan, DanGonite57, Dave Berenbaum, davidblnc, david-cortes, Dayne, Dea María Léon, Denis, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, Dmitry Nesterov, Dominic Fox, Dominik Prodinger, Edern, Ekaterina Butyugina, Elabonga Atuo, Emir, farhan khan, Felipe Siola, futurewarning, Gael Varoquaux, genvalen, Gleb Levitski, Guillaume Lemaitre, gunesbayir, Haesun Park, hujiahong726, i-aki-y, Ian Thompson, Ido M, Ily, Irene, Jack McIvor, jakirkham, James Dean, JanFidor, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jessicakk0711, Jiawei Zhang, Joey Ortiz, JohnathanPi, John Pangas, Joshua Choo Yun Keat, Joshua Hedlund, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kaushik Amar Das, Kento Nozawa, Kian Eliasi, Kilian Kluge, Lene Preuss, Linus, Logan Thomas, Loic Esteve, Louis Fouquet, Lucy Liu, Madhura Jayaratne, Marc Torrellas Socastro, Maren Westermann, Mario Kostelac, Mark Harfouche, Marko Toplak, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, Max Halford, maximeSaur, Maxwell Liu, m. bou, mdarii, Meekail Zain, Mikhail Iljin, murezzda, Nawazish Alam, Nicola Fanelli, Nightwalkx, Nikolay Petrov, Nishu Choudhary, NNLNR, npache, Olivier Grisel, Omar Salman, ouss1508, PAB, Pandata, partev, Peter Piontek, Phil, pnucci, Pooja M, Pooja Subramaniam, precondition, Quentin Barthélemy, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Rushil Desai, Sadra Barikbin, SANJAI_3, Sashka Warner, Scott Gigante, Scott Gustafson, searchforpassion, Seoeun Hong, Shady el Gewily, Shiva chauhan, Shogo Hida, Shreesha Kumar Bhat, sonnivs, Sortofamudkip, Stanislav (Stanley) Modrak, Stefanie Senger, Steven Van Vaerenbergh, Tabea Kossen, Théophile Baranger, Thijs van Weezel, Thomas A Caswell, Thomas Germer, Thomas J. Fan, Tim Head, Tim P, Tom Dupré la Tour, tomiock, tspeng, Valentin Laurent, Veghit, VIGNESH D, Vijeth Moudgalya, Vinayak Mehta, Vincent M, Vincent-violet, Vyom Pathak, William M, windiana42, Xiao Yuan, Yao Xiao, Yaroslav Halchenko, Yotam Avidar-Constantini, Yuchen Zhou, Yusuf Raji, zeeshan lone (注:以上内容为人名列表,未提供具体的中文翻译内容,因此保持原样输出。)