版本 1.4#
有关此版本主要亮点的简短描述,请参阅 scikit-learn 1.4 版本亮点。
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 1.4.2#
2024 年 4 月
此版本仅包含对 numpy 2 的支持。
版本 1.4.1#
2024 年 2 月
变更模型#
API 变更
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor中的tree_.value属性已从样本数量的加权绝对计数更改为总样本数的加权分数。 #27639 by Samuel Ronsin。
元数据路由#
修复 修复了当
ColumnTransformer在另一个元估计器内部使用时出现的路由问题。 #28188 by Adrin Jalali。修复 当元估计器包含不支持元数据路由的子估计器时,如果未向元估计器传递元数据,则不会引发错误。 #28256 by Adrin Jalali。
修复 修复
multioutput.MultiOutputRegressor和multioutput.MultiOutputClassifier,使其在启用元数据路由时能与不使用任何元数据的估计器配合使用。 #28240 by Adrin Jalali。
DataFrame 支持#
增强 修复 Pandas 和 Polars dataframe 直接验证,无需进行鸭子类型检查。 #28195 by Thomas Fan。
影响多个模块的变更#
效率提升 修复 部分还原 #28191,以避免依赖稀疏矩阵欧几里得成对计算的估计器出现性能退化。受影响的估计器包括:
修复 修复了所有 scikit-learn 转换器在使用
set_output且transform设置为pandas或polars时的一个错误。此错误可能导致返回的 dataframe 列名错误。 #28262 by Guillaume Lemaitre。修复 当用户尝试在
StackingClassifier、StackingClassifier、StackingClassifier、SelectFromModel、RFE、SelfTrainingClassifier、OneVsOneClassifier、OutputCodeClassifier或OneVsRestClassifier中使用子估计器未实现的方法时,AttributeError现在会在回溯中重新引发。 #28167 by Stefanie Senger。
更新日志#
sklearn.calibration#
修复
calibration.CalibratedClassifierCV支持内部估计器输出 float32 的 predict_proba。 #28247 by Thomas Fan。
sklearn.cluster#
修复
cluster.AffinityPropagation现在避免为相等的点分配多个不同的簇。 #28121 by Pietro Peterlongo and Yao Xiao。修复 避免在
cluster.KMeans中,当簇的数量大于非重复样本的数量时出现无限循环。 #28165 by Jérémie du Boisberranger。
sklearn.compose#
修复 当
verbose_feature_names_out=True且转换器在内部多次使用相同的列时,compose.ColumnTransformer现在会转换成 polars dataframe。以前,这会由于列名重复而引发错误。 #28262 by Guillaume Lemaitre。
sklearn.ensemble#
修复 修复了
HistGradientBoostingClassifier和HistGradientBoostingRegressor在拟合包含 extension dtypes(例如pd.Int64Dtype)的pandasDataFrame时的问题。 #28385 by Loïc Estève。修复 修复了当目标是 DataFrame 格式的多标签或多类多输出时,
ensemble.VotingClassifier引发的错误消息。 #27702 by Guillaume Lemaitre。
sklearn.impute#
修复:
impute.SimpleImputer现在在.fit和.transform中,如果fill_value无法使用casting='same_kind'转换为输入值 dtype,则会引发错误。 #28365 by Leo Grinsztajn。
sklearn.inspection#
修复
inspection.permutation_importance现在能够正确处理sample_weight和子采样(即max_features< 1.0)同时使用的情况。 #28184 by Michael Mayer。
sklearn.linear_model#
修复
linear_model.ARDRegression现在支持predict(X, return_std=True)的 pandas 输入类型。 #28377 by Eddie Bergman。
sklearn.preprocessing#
修复 使
preprocessing.FunctionTransformer更宽松,并在以下情况下使用get_feature_names_out覆盖输出列名:(i) 输入和输出列名保持不变(在使用 NumPyufunc时发生);(ii) 输入列名是数字;(iii) 输出将设置为 Pandas 或 Polars dataframe。 #28241 by Guillaume Lemaitre。修复
preprocessing.FunctionTransformer现在也会在调用set_output且transform="polars"时发出警告,如果func没有返回 Polars dataframe 或未指定feature_names_out。 #28263 by Guillaume Lemaitre。修复 当
target_type="continuous"且输入为只读时,preprocessing.TargetEncoder不再失败。特别是,它现在可以在启用 pandas copy-on-write 模式时工作。 #28233 by John Hopfensperger。
sklearn.tree#
修复
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor现在正确处理缺失值。在数据中没有缺失值时,内部标准未被初始化,可能导致错误的标准值。 #28295 by Guillaume Lemaitre and #28327 by Adam Li。
sklearn.utils#
增强 修复
utils.metaestimators.available_if现在会重新引发check函数中的错误作为AttributeError的原因。 #28198 by Thomas Fan。修复
utils._safe_indexing现在在X是 Python 列表且axis=1时引发ValueError,如文档字符串中所述。 #28222 by Guillaume Lemaitre。
版本 1.4.0#
2024 年 1 月
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
效率提升
linear_model.LogisticRegression和linear_model.LogisticRegressionCV的求解器"lbfgs"和"newton-cg"现在具有更好的收敛性。根据指定的tol,这两个求解器现在都可以达到更高的系数精度。此外,lbfgs 可以更好地利用tol,即更快地停止或达到更高的精度。注意:lbfgs 是默认求解器,因此此更改可能会影响许多模型。此更改还意味着,使用此新版本的 scikit-learn,模型的最终系数coef_和intercept_将会针对这两个求解器发生变化(当再次拟合相同数据时)。变化量取决于指定的tol,对于较小的值,你将获得更精确的结果。 #26721 by Christian Lorentzen。修复 修复了在 PyPy 中使用 Cython 损失函数的估计器中出现的内存泄漏问题。 #27670 by Guillaume Lemaitre。
影响所有模块的变更#
重大功能 转换器现在支持使用
set_output(transform="polars")输出 polars。 #27315 by Thomas Fan。增强 所有估计器现在都能识别采用 DataFrame Interchange Protocol 的任何 dataframe 中的列名。通过
np.asarray(df)返回正确表示的 dataframe 预计可以与我们的估计器和函数一起使用。 #26464 by Thomas Fan。增强 估计器的 HTML 表示现在包含文档链接,并根据估计器是否已拟合进行颜色编码(未拟合的估计器为橙色,已拟合的估计器为蓝色)。 #26616 by Riccardo Cappuzzo, Ines Ibnukhsein, Gael Varoquaux, Joel Nothman and Lilian Boulard。
修复 修复了大多数估计器和函数中的一个错误,即当将参数设置为大整数时会导致
TypeError。 #26648 by Naoise Holohan。
元数据路由#
以下模型现在在其一个或多个方法中支持元数据路由。有关详细信息,请参阅 元数据路由用户指南。
功能
LarsCV和LassoLarsCV现在在其fit方法中支持元数据路由,并将元数据路由到 CV 分割器。 #27538 by Omar Salman。功能
multiclass.OneVsRestClassifier、multiclass.OneVsOneClassifier和multiclass.OutputCodeClassifier现在在其fit和partial_fit中支持元数据路由,并将元数据路由到底层估计器的fit和partial_fit。 #27308 by Stefanie Senger。功能
pipeline.Pipeline现在根据 元数据路由用户指南 支持元数据路由。 #26789 by Adrin Jalali。功能
cross_validate、cross_val_score和cross_val_predict现在支持元数据路由。元数据被路由到估计器的fit、评分器和 CV 分割器的split。元数据通过新的params参数接受。fit_params已弃用,并将在 1.6 版本中移除。当启用元数据路由时,groups参数也不作为单独的参数接受,而应通过params参数传递。 #26896 by Adrin Jalali。功能
GridSearchCV、RandomizedSearchCV、HalvingGridSearchCV和HalvingRandomSearchCV现在在其fit和score中支持元数据路由,并将元数据路由到底层估计器的fit、CV 分割器和评分器。 #27058 by Adrin Jalali。功能
ColumnTransformer现在根据 元数据路由用户指南 支持元数据路由。 #27005 by Adrin Jalali。功能
linear_model.LogisticRegressionCV现在支持元数据路由。其linear_model.LogisticRegressionCV.fit现在接受**params,这些参数传递给底层分割器和评分器。linear_model.LogisticRegressionCV.score现在接受**score_params,这些参数传递给底层评分器。 #26525 by Omar Salman。功能
feature_selection.SelectFromModel现在在其fit和partial_fit中支持元数据路由。 #27490 by Stefanie Senger。功能
linear_model.OrthogonalMatchingPursuitCV现在支持元数据路由。其fit现在接受**fit_params,这些参数传递给底层分割器。 #27500 by Stefanie Senger。功能
ElasticNetCV、LassoCV、MultiTaskElasticNetCV和MultiTaskLassoCV现在支持元数据路由,并将元数据路由到 CV 分割器。 #27478 by Omar Salman。修复 所有尚未实现元数据路由的元估计器,如果启用元数据路由并且向其传递了任何元数据,现在都会在
get_metadata_routing和fit上引发NotImplementedError。 #27389 by Adrin Jalali。
支持 SciPy 稀疏数组#
一些估计器现在支持 SciPy 稀疏数组。受影响的函数和类如下:
函数
cluster.compute_optics_graphin #27104 by Maren Westermann and in #27250 by Yao Xiao;decomposition.non_negative_factorizationin #27100 by Isaac Virshup;feature_selection.f_regressionin #27239 by Yaroslav Korobko;feature_selection.r_regressionin #27239 by Yaroslav Korobko;
类别数
cluster.HDBSCANin #27250 by Yao Xiao;cluster.KMeansin #27179 by Nurseit Kamchyev;cluster.OPTICSin #27104 by Maren Westermann and in #27250 by Yao Xiao;decomposition.NMFin #27100 by Isaac Virshup;feature_extraction.text.TfidfTransformerin #27219 by Yao Xiao;manifold.Isomapin #27250 by Yao Xiao;manifold.TSNEin #27250 by Yao Xiao;impute.SimpleImputerin #27277 by Yao Xiao;impute.KNNImputerin #27277 by Yao Xiao;kernel_approximation.PolynomialCountSketchin #27301 by Lohit SundaramahaLingam;random_projection.GaussianRandomProjectionin #27314 by Stefanie Senger;random_projection.SparseRandomProjectionin #27314 by Stefanie Senger。
支持 Array API#
一些估计器和函数支持 Array API。这些更改允许使用 JAX、CuPy 和 PyTorch 等其他库中的估计器和函数。因此,这可以实现一些 GPU 加速计算。
有关详细信息,请参阅 Array API 支持(实验性)。
函数
sklearn.metrics.accuracy_scoreandsklearn.metrics.zero_one_lossin #27137 by Edoardo Abati;sklearn.model_selection.train_test_splitin #26855 by Tim Head;is_multilabelin #27601 by Yaroslav Korobko。
类别数
decomposition.PCAfor thefullandrandomizedsolvers (with QR power iterations) in #26315, #27098 and #27431 by Mateusz Sokół, Olivier Grisel and Edoardo Abati;
私有损失函数模块#
修复 二项式对数损失的梯度计算对于非常大的(绝对值)输入(原始预测)现在具有更好的数值稳定性。之前,它可能导致
np.nan。受益于此更改的模型包括ensemble.GradientBoostingClassifier、ensemble.HistGradientBoostingClassifier和linear_model.LogisticRegression。 #28048 by Christian Lorentzen。
更新日志#
sklearn.base#
增强
base.ClusterMixin.fit_predict和base.OutlierMixin.fit_predict现在接受**kwargs,这些参数传递给估计器的fit方法。 #26506 by Adrin Jalali。增强
base.TransformerMixin.fit_transform和base.OutlierMixin.fit_predict现在如果transform/predict使用元数据,但继承它们的类中没有定义自定义的fit_transform/fit_predict,则会发出警告。 #26831 by Adrin Jalali。增强
base.clone现在支持将dict作为输入并创建副本。 #26786 by Adrin Jalali。API 变更
process_routing现在具有不同的签名。前两个参数(对象和方法)仅为位置参数,所有元数据都作为关键字参数传递。 #26909 by Adrin Jalali。
sklearn.calibration#
增强
calibration.CalibratedClassifierCV的sigmoid方法的内部目标和梯度已被私有损失模块替换。 #27185 by Omar Salman。
sklearn.cluster#
修复
cluster.SpectralClustering构造函数中的degree参数现在接受实数值,而不仅仅是整数值,以符合sklearn.metrics.pairwise.polynomial_kernel的degree参数。 #27668 by Nolan McMahon。修复 修复了
cluster.OPTICS中的一个错误,即基于前驱的簇校正没有使用正确的索引。这会导致结果取决于数据的顺序。 #26459 by Haoying Zhang and Guillaume Lemaitre。修复 改进了
cluster.HDBSCAN的fit方法中检查连通分量数量时的错误消息。 #27678 by Ganesh Tata。修复 在
cluster.DBSCAN的fit方法中创建预计算稀疏矩阵的副本,以避免稀疏矩阵的原地修改。 #27651 by Ganesh Tata。修复 当
metric="precomputed"且通过参数store_centers请求存储中心时,会引发适当的ValueError。 #27898 by Guillaume Lemaitre。API 变更
cluster.HDBSCAN的algorithm参数中的kdtree和balltree值现已弃用,并已重命名为kd_tree和ball_tree,以确保命名约定一致性。kdtree和balltree值将在 1.6 版本中移除。 #26744 by Shreesha Kumar Bhat。API 变更
cluster.AgglomerativeClustering和cluster.FeatureAgglomeration中的选项metric=None在 1.4 版本中已弃用,并将在 1.6 版本中移除。请改用默认值。 #27828 by Guillaume Lemaitre。
sklearn.compose#
重大功能 通过 DataFrame Interchange Protocol 向
compose.ColumnTransformer添加 polars 输入支持。polars 的最低支持版本为0.19.12。 #26683 by Thomas Fan。修复
cluster.spectral_clustering和cluster.SpectralClustering现在会引发明确的错误消息,表明不支持带有np.int64索引的稀疏矩阵和数组。 #27240 by Yao Xiao。API 变更
ColumnTransformer中使用 pandas extension dtypes 并包含pd.NA的输出现在会导致FutureWarning,并且在 1.6 版本中将导致ValueError,除非输出容器已配置为set_output(transform="pandas")。在此之前,此类输出会导致包含pd.NA的 dtype 为object的 numpy 数组,这些数组无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时导致错误。 #27734 by Jérôme Dockès。
sklearn.covariance#
增强 允许
covariance.shrunk_covariance通过处理 nd-array 一次处理多个协方差矩阵。 #25275 by Quentin Barthélemy。API 变更 修复
ColumnTransformer现在将"passthrough"替换为拟合的transformers_属性中对应的FunctionTransformer。 #27204 by Adrin Jalali。
sklearn.datasets#
增强
datasets.make_sparse_spd_matrix现在使用更节省内存的稀疏布局。它还接受一个新的关键字sparse_format,允许指定稀疏矩阵的输出格式。默认情况下sparse_format=None,它像以前一样返回一个密集 numpy ndarray。 #27438 by Yao Xiao。修复 当
X是只读的(例如numpy.memmap实例)时,datasets.dump_svmlight_file现在不会引发ValueError。 #28111 by Yao Xiao。API Change
datasets.make_sparse_spd_matrix弃用了关键字参数dim,转而使用n_dim。dim将在 1.6 版本中移除。 #27718 by Adam Li.
sklearn.decomposition#
Feature
decomposition.PCA现在支持使用arpack求解器时的scipy.sparse.sparray和scipy.sparse.spmatrix输入。当用于稀疏数据(如datasets.fetch_20newsgroups_vectorized)时,这可以使速度提高 100 倍(单线程)并降低 70 倍的内存使用量。基于 Alexander Tarashansky 在 scanpy 中的实现。 #18689 by Isaac Virshup and Andrey Portnoy.Enhancement
decomposition.non_negative_factorization、decomposition.NMF和decomposition.MiniBatchNMF的n_components参数新增了一个 “auto” 选项,用于在使用自定义初始化时从 W 或 H 的形状自动推断组件数量。该参数的默认值将在 1.6 版本中从None更改为auto。 #26634 by Alexandre Landeau and Alexandre Vigny.Fix
decomposition.dict_learning_online不再忽略参数max_iter。 #27834 by Guillaume Lemaitre.Fix
decomposition.KernelPCA构造函数中的degree参数现在接受实数值,而不仅仅是整数值,这与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 by Nolan McMahon.API Change
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中的选项max_iter=None已被弃用,并将在 1.6 版本中移除。请改用默认值。 #27834 by Guillaume Lemaitre.
sklearn.ensemble#
Major Feature
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor在分类的准则为gini、entropy或log_loss,或回归的准则为squared_error、friedman_mse或poisson时支持缺失值。 #26391 by Thomas Fan.Major Feature
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor支持categorical_features="from_dtype",它将具有 Pandas 或 Polars Categorical dtype 的列视为算法中的类别。categorical_features="from_dtype"将在 v1.6 中成为默认值。分类特征不再需要用数字编码。当分类特征是数字时,最大值不再需要小于max_bins;只有(唯一)类别的数量必须小于max_bins。 #26411 by Thomas Fan and #27835 by Jérôme Dockès.Major Feature
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor获得了新参数max_features,用于指定在每次拆分中考虑的随机选择特征的比例。 #27139 by Christian Lorentzen.Feature
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor现在支持单调约束,这在特征被认为对目标具有正向/负向影响时非常有用。不支持训练数据中的缺失值和多输出目标。 #13649 by Samuel Ronsin, initiated by Patrick O’Reilly.Efficiency
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor现在通过在减法技巧中重用父节点直方图作为子节点直方图而稍微加快了速度。实际上,需要分配和释放的内存减少了。 #27865 by Christian Lorentzen.Efficiency
ensemble.GradientBoostingClassifierБлагодаря 私有损失函数模块,对于二元分类和特别是多类分类问题,速度更快。 #26278 and #28095 by Christian Lorentzen.Efficiency 提高了在稀疏数据上训练
ensemble.GradientBoostingClassifier和ensemble.GradientBoostingRegressor时的运行时和内存使用情况。 #26957 by Thomas Fan.Efficiency 当
scoring是metrics.get_scorer_names中列出的预定义度量且启用了早期停止时,ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor现在速度更快。 #26163 by Thomas Fan.Enhancement 所有 Forest 方法都添加了一个拟合属性
estimators_samples_,包括ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor,它允许检索用于每个树估计器的训练样本索引。 #26736 by Adam Li.Fix 修复了当输入为稀疏矩阵且
contamination设置为浮点值时ensemble.IsolationForest的问题。 #27645 by Guillaume Lemaitre.Fix 在
ensemble.RandomForestRegressor和ensemble.ExtraTreesRegressor中请求 OOB 分数时,如果多输出模型的目标全部四舍五入为整数,则会引发ValueError。它被识别为一个多类问题。 #27817 by Daniele OngariFix 更改了估计器标签,以确认
ensemble.VotingClassifier、ensemble.VotingRegressor、ensemble.StackingClassifier和ensemble.StackingRegressor在所有estimators都支持缺失值时支持缺失值。 #27710 by Guillaume Lemaitre.Fix 支持加载
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor的 pickle 文件,即使该 pickle 文件是在具有不同位数的平台上生成的。一个典型的例子是在 64 位机器上训练和 pickle 模型,然后在 32 位机器上加载模型进行预测。 #28074 by Christian Lorentzen and Loïc Estève.API Change 在
ensemble.AdaBoostClassifier中,algorithm参数SAMME.R已被弃用,并将在 1.6 版本中移除。 #26830 by Stefanie Senger.
sklearn.feature_extraction#
sklearn.feature_selection#
Enhancement
feature_selection.SelectKBest、feature_selection.SelectPercentile和feature_selection.GenericUnivariateSelect现在支持无监督特征选择,方法是提供一个接受X和y=None的score_func。 #27721 by Guillaume Lemaitre.Enhancement 当
k大于特征数量时,feature_selection.SelectKBest和feature_selection.GenericUnivariateSelect(使用mode='k_best')现在会显示警告。 #27841 by Thomas Fan.Fix
feature_selection.RFEandfeature_selection.RFECV不再在输入验证期间检查 nan。 #21807 by Thomas Fan.
sklearn.inspection#
Enhancement
inspection.DecisionBoundaryDisplay现在接受一个参数class_of_interest,用于在绘制由response_method="predict_proba"或response_method="decision_function"提供的响应时选择感兴趣的类别。它允许绘制二元和多类分类器的决策边界。 #27291 by Guillaume Lemaitre.Fix
inspection.DecisionBoundaryDisplay.from_estimator和inspection.PartialDependenceDisplay.from_estimator现在为子类返回正确的类型。 #27675 by John Cant.API Change 当估计器未实现请求的响应方法时,
inspection.DecisionBoundaryDisplay会引发AttributeError而不是ValueError。 #27291 by Guillaume Lemaitre.
sklearn.kernel_ridge#
Fix
kernel_ridge.KernelRidge构造函数中的degree参数现在接受实数值,而不仅仅是整数值,这与sklearn.metrics.pairwise.polynomial_kernel的degree参数一致。 #27668 by Nolan McMahon.
sklearn.linear_model#
Efficiency
linear_model.LogisticRegression和linear_model.LogisticRegressionCV的求解器"lbfgs"和"newton-cg"现在具有更好的收敛性。根据指定的tol,这两个求解器现在都可以达到更高的系数精度。此外,lbfgs 可以更好地利用tol,即更快地停止或达到更高的精度。这是通过更好地缩放目标函数(使用每个样本的平均损失而不是每个样本的损失总和)来实现的。 #26721 by Christian Lorentzen.Efficiency
linear_model.LogisticRegression和linear_model.LogisticRegressionCV(使用求解器"newton-cg")现在对于某些数据和参数设置可以显着加快速度。这是通过更好的线搜索收敛检查实现的,该检查考虑了梯度信息,用于检查可忽略的损失改进。 #26721 by Christian Lorentzen.Efficiency
linear_model.LogisticRegression和linear_model.LogisticRegressionCV中的求解器"newton-cg"使用的内存略少。效果与系数数量(n_features * n_classes)成正比。 #27417 by Christian Lorentzen.Fix 确保
linear_model.ARDRegression和linear_model.BayesianRidge的sigma_属性在拟合float32数据时始终具有float32dtype,即使有 NumPy 2 的类型提升规则。 #27899 by Olivier Grisel.API Change
linear_model.SGDClassifier和linear_model.SGDOneClassSVM的属性loss_function_已被弃用,并将在 1.6 版本中移除。 #27979 by Christian Lorentzen.
sklearn.metrics#
Efficiency 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 数据集的成对距离现在快了 1.5 倍。 #26765 by Meekail Zain.Efficiency 通过
metrics.DistanceMetric计算 CSR x CSR、Dense x CSR 和 CSR x Dense 的距离现在使用的内存减少了约 50%,并以与提供的数据相同的 dtype 输出距离。 #27006 by Meekail Zain.Enhancement 改进了使用
metrics.PrecisionRecallDisplay和metrics.RocCurveDisplay类获得的图表的渲染。x轴和y轴的限制设置为[0, 1],并且两个轴之间的纵横比设置为 1,以获得一个方形图。 #26366 by Mojdeh Rastgoo.Enhancement 添加了
neg_root_mean_squared_log_error_scorer作为评分器 #26734 by Alejandro Martin Gil.Enhancement
metrics.confusion_matrix现在在y_true和y_pred中只找到一个标签时发出警告。 #27650 by Lucy Liu.Fix 使用
metrics.pairwise.euclidean_distances计算成对距离时,当X作为float64数组提供而X_norm_squared作为float32数组提供时,不再引发异常。 #27624 by Jérôme Dockès.Fix
f1_score现在在处理各种除以零的情况时提供正确的值,方法是使用不依赖于精确度和召回率值的公式。 #27577 by Omar Salman and Guillaume Lemaitre.Fix
metrics.make_scorer现在在使用回归器对请求非阈值决策函数(来自decision_function或predict_proba)的评分器进行评分时引发错误。此类评分器特定于分类。 #26840 by Guillaume Lemaitre.Fix
metrics.DetCurveDisplay.from_predictions、metrics.PrecisionRecallDisplay.from_predictions、metrics.PredictionErrorDisplay.from_predictions和metrics.RocCurveDisplay.from_predictions现在为子类返回正确的类型。 #27675 by John Cant.API Change 弃用了
metrics.make_scorer中的needs_threshold和needs_proba。这些参数将在 1.6 版本中移除。请改用response_method,它接受"predict"、"predict_proba"或"decision_function"或此类值的列表。needs_proba=True等同于response_method="predict_proba",needs_threshold=True等同于response_method=("decision_function", "predict_proba")。 #26840 by Guillaume Lemaitre.API Change
metrics.mean_squared_error和metrics.mean_squared_log_error的squared参数已弃用,并将在 1.6 版本中移除。请改用新函数metrics.root_mean_squared_error和metrics.root_mean_squared_log_error。 #26734 by Alejandro Martin Gil.
sklearn.model_selection#
Enhancement 当每个交叉验证折叠都失败时,
model_selection.learning_curve会发出警告。 #26299 by Rahil Parikh.Fix
model_selection.GridSearchCV、model_selection.RandomizedSearchCV和model_selection.HalvingGridSearchCV现在不会更改参数网格中给定的对象,如果它是一个估计器。 #26786 by Adrin Jalali.
sklearn.multioutput#
Enhancement 为
multioutput.ClassifierChain添加方法predict_log_proba。 #27720 by Guillaume Lemaitre.
sklearn.neighbors#
Efficiency
sklearn.neighbors.KNeighborsRegressor.predict和sklearn.neighbors.KNeighborsClassifier.predict_proba现在有效地支持密集和稀疏数据集对。 #27018 by Julien Jerphanion.Efficiency 当
radius较大且algorithm="brute"使用非欧几里得度量时,neighbors.RadiusNeighborsClassifier.predict和neighbors.RadiusNeighborsClassifier.predict_proba的性能得到了提高。 #26828 by Omar Salman.Fix 改进了
neighbors.LocalOutlierFactor在调用n_samples=n_neighbors时显示的错误消息。 #23317 by Bharat Raghunathan.Fix 当某些样本的所有邻居权重都为零时,
neighbors.KNeighborsClassifier.predict和neighbors.KNeighborsClassifier.predict_proba现在会引发错误。这可能发生在weights是用户定义函数时。 #26410 by Yao Xiao.API Change
neighbors.KNeighborsRegressor现在通过metric关键字参数直接接受metrics.DistanceMetric对象,从而允许使用加速的第三方metrics.DistanceMetric对象。 #26267 by Meekail Zain.
sklearn.preprocessing#
Efficiency
preprocessing.OrdinalEncoder避免了两次计算缺失索引以提高效率。 #27017 by Xuefeng Xu.Efficiency 提高了
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder中检查nan的效率。 #27760 by Xuefeng Xu.Enhancement 改进了
preprocessing.FunctionTransformer中的警告,当func返回 pandas dataframe 且输出配置为 pandas 时。 #26944 by Thomas Fan.Enhancement
preprocessing.TargetEncoder现在支持target_type'multiclass'。 #26674 by Lucy Liu.Fix
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder在nan是一个类别且不是用户提供的类别中的最后一个时引发异常。 #27309 by Xuefeng Xu.Fix 如果用户提供的类别包含重复项,
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder会引发异常。 #27328 by Xuefeng Xu.Fix 如果
get_feature_names_out的输出与输出容器的列名不一致(如果已定义),preprocessing.FunctionTransformer在transform处引发错误。 #27801 by Guillaume Lemaitre.Fix 在未调用
fit的情况下调用preprocessing.OrdinalEncoder的transform时引发NotFittedError,因为categories总是需要检查。 #27821 by Guillaume Lemaitre.
sklearn.tree#
Feature
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor现在支持单调约束,这在特征被认为对目标具有正向/负向影响时非常有用。不支持训练数据中的缺失值和多输出目标。 #13649 by Samuel Ronsin, initiated by Patrick O’Reilly.
sklearn.utils#
Enhancement
sklearn.utils.estimator_html_repr根据浏览器的prefers-color-scheme动态调整图表颜色,从而改进了对暗模式环境的适应性。 #26862 by Andrew Goh Yisheng, Thomas Fan, Adrin Jalali.Enhancement
MetadataRequestandMetadataRouter现在有一个consumes方法,可用于检查是否会消耗给定的一组参数。 #26831 by Adrin Jalali.Enhancement 使
sklearn.utils.check_array尝试在从 DIA 数组转换时输出int32索引的 CSR 和 COO 数组,如果非零条目数量足够小。这确保了 Cython 中实现的估计器(不接受int64索引的稀疏数据结构)现在始终接受与 SciPy 稀疏矩阵和数组相同的稀疏输入格式。 #27372 by Guillaume Lemaitre.Fix
sklearn.utils.check_array应接受来自稀疏 SciPy 模块的矩阵和数组。以前的实现会在copy=True时失败,因为它调用了特定的 NumPynp.may_share_memory,该函数不适用于 SciPy 稀疏数组,并且对于 SciPy 稀疏矩阵不返回正确的结果。 #27336 by Guillaume Lemaitre.Fix
check_estimators_picklewithreadonly_memmap=True现在依赖 joblib 自身的能力来在加载序列化估计器时分配对齐的内存映射数组,而不是调用一个专用的私有函数,该函数在 OpenBLAS 错误检测 CPU 架构时会崩溃。 #27614 by Olivier Grisel.修复
check_array中的错误消息修复:当传递稀疏矩阵但accept_sparse为False时,现在建议使用.toarray()而非X.toarray()。 #27757 由 Lucy Liu 贡献。修复 修复函数
check_array,使其在输入为 Series 而非 DataFrame 时输出正确的错误消息。 #28090 由 Stan Furrer 和 Yao Xiao 贡献。API 变更
sklearn.utils.extmath.log_logistic已弃用,并将在 1.6 版本中移除。请改用-np.logaddexp(0, -x)。 #27544 由 Christian Lorentzen 贡献。
代码和文档贡献者
感谢自 1.3 版本以来为项目的维护和改进做出贡献的所有人,包括
101AlexMartin, Abhishek Singh Kushwah, Adam Li, Adarsh Wase, Adrin Jalali, Advik Sinha, Alex, Alexander Al-Feghali, Alexis IMBERT, AlexL, Alex Molas, Anam Fatima, Andrew Goh, andyscanzio, Aniket Patil, Artem Kislovskiy, Arturo Amor, ashah002, avm19, Ben Holmes, Ben Mares, Benoit Chevallier-Mames, Bharat Raghunathan, Binesh Bannerjee, Brendan Lu, Brevin Kunde, Camille Troillard, Carlo Lemos, Chad Parmet, Christian Clauss, Christian Lorentzen, Christian Veenhuis, Christos Aridas, Cindy Liang, Claudio Salvatore Arcidiacono, Connor Boyle, cynthias13w, DaminK, Daniele Ongari, Daniel Schmitz, Daniel Tinoco, David Brochart, Deborah L. Haar, DevanshKyada27, Dimitri Papadopoulos Orfanos, Dmitry Nesterov, DUONG, Edoardo Abati, Eitan Hemed, Elabonga Atuo, Elisabeth Günther, Emma Carballal, Emmanuel Ferdman, epimorphic, Erwan Le Floch, Fabian Egli, Filip Karlo Došilović, Florian Idelberger, Franck Charras, Gael Varoquaux, Ganesh Tata, Hleb Levitski, Guillaume Lemaitre, Haoying Zhang, Harmanan Kohli, Ily, ioangatop, IsaacTrost, Isaac Virshup, Iwona Zdzieblo, Jakub Kaczmarzyk, James McDermott, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jérôme Dockès, Jiawei Zhang, Joel Nothman, John Cant, John Hopfensperger, Jona Sassenhagen, Jon Nordby, Julien Jerphanion, Kennedy Waweru, kevin moore, Kian Eliasi, Kishan Ved, Konstantinos Pitas, Koustav Ghosh, Kushan Sharma, ldwy4, Linus, Lohit SundaramahaLingam, Loic Esteve, Lorenz, Louis Fouquet, Lucy Liu, Luis Silvestrin, Lukáš Folwarczný, Lukas Geiger, Malte Londschien, Marcus Fraaß, Marek Hanuš, Maren Westermann, Mark Elliot, Martin Larralde, Mateusz Sokół, mathurinm, mecopur, Meekail Zain, Michael Higgins, Miki Watanabe, Milton Gomez, MN193, Mohammed Hamdy, Mohit Joshi, mrastgoo, Naman Dhingra, Naoise Holohan, Narendra Singh dangi, Noa Malem-Shinitski, Nolan, Nurseit Kamchyev, Oleksii Kachaiev, Olivier Grisel, Omar Salman, partev, Peter Hull, Peter Steinbach, Pierre de Fréminville, Pooja Subramaniam, Puneeth K, qmarcou, Quentin Barthélemy, Rahil Parikh, Rahul Mahajan, Raj Pulapakura, Raphael, Ricardo Peres, Riccardo Cappuzzo, Roman Lutz, Salim Dohri, Samuel O. Ronsin, Sandip Dutta, Sayed Qaiser Ali, scaja, scikit-learn-bot, Sebastian Berg, Shreesha Kumar Bhat, Shubhal Gupta, Søren Fuglede Jørgensen, Stefanie Senger, Tamara, Tanjina Afroj, THARAK HEGDE, thebabush, Thomas J. Fan, Thomas Roehr, Tialo, Tim Head, tongyu, Venkatachalam N, Vijeth Moudgalya, Vincent M, Vivek Reddy P, Vladimir Fokow, Xiao Yuan, Xuefeng Xu, Yang Tao, Yao Xiao, Yuchen Zhou, Yuusuke Hiramatsu