有关此版本主要亮点简短描述,请参阅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 由 Samuel Ronsin 完成。
元数据路由#
修复 修复了 ColumnTransformer
在另一个元估计器内部使用时的路由问题。 #28188 由 Adrin Jalali 完成。
修复 当没有元数据传递给包含不支持元数据路由的子估计器的元估计器时,不会引发错误。 #28256 由 Adrin Jalali 完成。
修复 修复了
multioutput.MultiOutputRegressor
和multioutput.MultiOutputClassifier
,使其在启用元数据路由时,能与不消耗任何元数据的估计器一起工作。 #28240 由 Adrin Jalali 完成。DataFrame 支持#
改进 修复 Pandas 和 Polars dataframe 无需进行鸭子类型检查即可直接验证。 #28195 由 Thomas Fan 完成。
影响多个模块的变更#
效率 修复 部分恢复了 #28191,以避免依赖稀疏矩阵欧几里得成对计算的估计器出现性能回归。受影响的估计器有
sklearn.metrics.pairwise_distances_argmin
修复 修复了所有 scikit-learn 转换器在使用
set_output
且transform
设置为pandas
或polars
时的错误。该错误可能导致返回的数据框列命名错误。 #28262 由 Guillaume Lemaitre 完成。修复 当用户尝试在
StackingClassifier
,StackingClassifier
,StackingClassifier
,SelectFromModel
,RFE
,SelfTrainingClassifier
,OneVsOneClassifier
,OutputCodeClassifier
或OneVsRestClassifier
中使用其子估计器未实现的方法时,AttributeError
现在会在回溯中重新引发。 #28167 由 Stefanie Senger 完成。更新日志#
sklearn.calibration
#
修复 calibration.CalibratedClassifierCV
支持内部估计器输出 float32 类型的 predict_proba。 #28247 由 Thomas Fan 完成。
修复 cluster.AffinityPropagation
现在避免为相等点分配多个不同簇。 #28121 由 Pietro Peterlongo 和 Yao Xiao 完成。
修复 避免
cluster.KMeans
在簇数量大于非重复样本数量时出现无限循环。 #28165 由 Jérémie du Boisberranger 完成。
修复 当 verbose_feature_names_out=True
且转换器内部多次使用相同列时,compose.ColumnTransformer
现在能转换为 Polars 数据框。以前,这会因重复的列名而引发错误。 #28262 由 Guillaume Lemaitre 完成。
修复 HistGradientBoostingClassifier
和 HistGradientBoostingRegressor
在使用带扩展数据类型(例如 pd.Int64Dtype
)的 pandas
DataFrame
进行拟合时的问题。 #28385 由 Loïc Estève 完成。
修复 修复了
ensemble.VotingClassifier
在目标以 DataFrame 格式为多标签或多类别多输出时引发的错误消息。 #27702 由 Guillaume Lemaitre 完成。
修复 : impute.SimpleImputer
现在在 .fit
和 .transform
中,如果 fill_value
无法使用 casting='same_kind'
转换为输入值 dtype,则会引发错误。 #28365 由 Leo Grinsztajn 完成。
修复 inspection.permutation_importance
现在能正确处理 sample_weight
和子采样(即 max_features
< 1.0)的情况。 #28184 由 Michael Mayer 完成。
修复 linear_model.ARDRegression
现在能处理 predict(X, return_std=True)
的 pandas 输入类型。 #28377 由 Eddie Bergman 完成。
修复 使 preprocessing.FunctionTransformer
更宽松,并在以下情况下用 get_feature_names_out
覆盖输出列名:(i) 输入和输出列名保持不变(在使用 NumPy ufunc
时发生);(ii) 输入列名为数字;(iii) 输出将设置为 Pandas 或 Polars 数据框。 #28241 由 Guillaume Lemaitre 完成。
修复 当
set_output
调用时transform="polars"
且func
未返回 Polars 数据框或未指定feature_names_out
时,preprocessing.FunctionTransformer
现在也会发出警告。 #28263 由 Guillaume Lemaitre 完成。修复 当
target_type="continuous"
且输入为只读时,preprocessing.TargetEncoder
不再失败。特别是,它现在在启用 pandas 写时复制模式下也能工作。 #28233 由 John Hopfensperger 完成。
修复 tree.DecisionTreeClassifier
和 tree.DecisionTreeRegressor
现在能正确处理缺失值。当数据中没有缺失值时,内部准则未初始化,可能导致准则值错误。 #28295 由 Guillaume Lemaitre 和 #28327 由 Adam Li 完成。
改进 修复 utils.metaestimators.available_if
现在将 check
函数的错误作为 AttributeError
的原因重新引发。 #28198 由 Thomas Fan 完成。
修复 当
X
是 Python 列表且axis=1
时,utils._safe_indexing
现在会引发ValueError
,这与文档字符串中的描述一致。 #28222 由 Guillaume Lemaitre 完成。版本 1.4.0#
2024 年 1 月
模型变更#
以下估计器和函数在使用相同数据和参数进行拟合时,可能会产生与之前版本不同的模型。这通常是由于建模逻辑(错误修复或改进)或随机抽样程序的变化而发生。
效率 linear_model.LogisticRegression
和 linear_model.LogisticRegressionCV
现在对于求解器 "lbfgs"
和 "newton-cg"
具有更好的收敛性。根据指定的 tol
,这两种求解器现在都可以达到更高的系数精度。此外,lbfgs 可以更好地利用 tol
,即更快停止或达到更高精度。注意:lbfgs 是默认求解器,因此此更改可能会影响许多模型。此更改还意味着,使用此新版本的 scikit-learn,您的模型的最终系数 coef_
和 intercept_
将针对这两个求解器发生变化(当再次在相同数据上拟合时)。变化量取决于指定的 tol
,对于小值,您将获得更精确的结果。 #26721 由 Christian Lorentzen 完成。
修复 修复了 PyPy 中使用 Cython 损失函数的估计器出现的内存泄漏问题。 #27670 由 Guillaume Lemaitre 完成。
影响所有模块的变更#
主要新功能 转换器现在支持使用 set_output(transform="polars")
进行 Polars 输出。 #27315 由 Thomas Fan 完成。
改进 所有估计器现在都能够识别遵循 DataFrame 交换协议的任何数据框中的列名。通过
np.asarray(df)
返回正确表示形式的数据框有望与我们的估计器和函数一起工作。 #26464 由 Thomas Fan 完成。改进 估计器的 HTML 表示现在包含指向文档的链接,并按颜色编码以指示估计器是否已拟合(未拟合的估计器为橙色,已拟合的估计器为蓝色)。 #26616 由 Riccardo Cappuzzo、Ines Ibnukhsein、Gael Varoquaux、Joel Nothman 和 Lilian Boulard 完成。
修复 修复了大多数估计器和函数中的一个错误,该错误会在将参数设置为大整数时导致
TypeError
。 #26648 由 Naoise Holohan 完成。元数据路由#
以下模型现在在其一个或多个方法中支持元数据路由。有关更多详细信息,请参阅元数据路由用户指南。
新功能 LarsCV
和 LassoLarsCV
现在在其 fit
方法中支持元数据路由,并将元数据路由到 CV 分割器。 #27538 由 Omar Salman 完成。
新功能
multiclass.OneVsRestClassifier
、multiclass.OneVsOneClassifier
和multiclass.OutputCodeClassifier
现在支持在其fit
和partial_fit
方法中进行元数据路由,并将元数据路由到底层估计器的fit
和partial_fit
。 #27308 由 Stefanie Senger 完成。新功能
pipeline.Pipeline
现在支持根据 元数据路由用户指南 进行元数据路由。 #26789 由 Adrin Jalali 完成。新功能
cross_validate
、cross_val_score
和cross_val_predict
现在支持元数据路由。元数据被路由到估计器的fit
方法、评分器以及 CV 分割器的split
方法。元数据通过新的params
参数接受。fit_params
已弃用,并将在 1.6 版本中移除。groups
参数在启用元数据路由时也不再作为单独的参数接受,而应通过params
参数传递。 #26896 由 Adrin Jalali 完成。新功能
GridSearchCV
、RandomizedSearchCV
、HalvingGridSearchCV
和HalvingRandomSearchCV
现在支持在其fit
和score
方法中进行元数据路由,并将元数据路由到底层估计器的fit
方法、CV 分割器和评分器。 #27058 由 Adrin Jalali 完成。新功能
ColumnTransformer
现在支持根据 元数据路由用户指南 进行元数据路由。 #27005 由 Adrin Jalali 完成。新功能
linear_model.LogisticRegressionCV
现在支持元数据路由。linear_model.LogisticRegressionCV.fit
现在接受传递给底层分割器和评分器的**params
。linear_model.LogisticRegressionCV.score
现在接受传递给底层评分器的**score_params
。 #26525 由 Omar Salman 完成。新功能
feature_selection.SelectFromModel
现在在其fit
和partial_fit
方法中支持元数据路由。 #27490 由 Stefanie Senger 完成。新功能
linear_model.OrthogonalMatchingPursuitCV
现在支持元数据路由。其fit
方法现在接受**fit_params
,这些参数将传递给底层分割器。 #27500 由 Stefanie Senger 完成。新功能
ElasticNetCV
、LassoCV
、MultiTaskElasticNetCV
和MultiTaskLassoCV
现在支持元数据路由,并将元数据路由到 CV 分割器。 #27478 由 Omar Salman 完成。修复 所有尚未实现元数据路由的元估计器,如果在启用元数据路由并向其传递任何元数据时,现在会在
get_metadata_routing
和fit
上引发NotImplementedError
。 #27389 由 Adrin Jalali 完成。支持 SciPy 稀疏数组#
一些估计器现在支持 SciPy 稀疏数组。以下函数和类受到影响:
函数
cluster.compute_optics_graph
在 #27104 由 Maren Westermann 完成,以及 #27250 由 Yao Xiao 完成;
decomposition.non_negative_factorization
在 #27100 由 Isaac Virshup 完成;feature_selection.f_regression
在 #27239 由 Yaroslav Korobko 完成;feature_selection.r_regression
在 #27239 由 Yaroslav Korobko 完成;manifold.trustworthiness
在 #27250 由 Yao Xiao 完成;metrics.pairwise_distances
在 #27250 由 Yao Xiao 完成;类
cluster.HDBSCAN
在 #27250 由 Yao Xiao 完成;
cluster.KMeans
在 #27179 由 Nurseit Kamchyev 完成;cluster.OPTICS
在 #27104 由 Maren Westermann 完成,以及 #27250 由 Yao Xiao 完成;cluster.SpectralClustering
在 #27161 由 Bharat Raghunathan 完成;decomposition.NMF
在 #27100 由 Isaac Virshup 完成;feature_extraction.text.TfidfTransformer
在 #27219 由 Yao Xiao 完成;manifold.Isomap
在 #27250 由 Yao Xiao 完成;manifold.SpectralEmbedding
在 #27240 由 Yao Xiao 完成;manifold.TSNE
在 #27250 由 Yao Xiao 完成;impute.SimpleImputer
在 #27277 由 Yao Xiao 完成;impute.IterativeImputer
在 #27277 由 Yao Xiao 完成;impute.KNNImputer
在 #27277 由 Yao Xiao 完成;kernel_approximation.PolynomialCountSketch
在 #27301 由 Lohit SundaramahaLingam 完成;random_projection.GaussianRandomProjection
在 #27314 由 Stefanie Senger 完成;random_projection.SparseRandomProjection
在 #27314 由 Stefanie Senger 完成。支持 Array API#
一些估计器和函数支持 Array API。这些更改使得估计器和函数可以与其他库(如 JAX、CuPy 和 PyTorch)一起使用。因此,这能够实现一些 GPU 加速计算。
有关更多详细信息,请参阅Array API 支持(实验性)。
sklearn.metrics.accuracy_score
和 sklearn.metrics.zero_one_loss
在 #27137 由 Edoardo Abati 完成;
cluster.compute_optics_graph
在 #27104 由 Maren Westermann 完成,以及 #27250 由 Yao Xiao 完成;
sklearn.model_selection.train_test_split
在 #26855 由 Tim Head 完成;is_multilabel
在 #27601 由 Yaroslav Korobko 完成。decomposition.PCA
对于full
和randomized
求解器(带 QR 幂迭代)在 #26315、#27098 和 #27431 由 Mateusz Sokół、Olivier Grisel 和 Edoardo Abati 完成;
cluster.HDBSCAN
在 #27250 由 Yao Xiao 完成;
preprocessing.MinMaxScaler
在 #26243 由 Tim Head 完成;私有损失函数模块#
修复 二项式对数损失的梯度计算对于绝对值非常大的输入(原始预测)现在在数值上更稳定。在此之前,它可能导致 np.nan
。受益于此更改的模型包括 ensemble.GradientBoostingClassifier
、ensemble.HistGradientBoostingClassifier
和 linear_model.LogisticRegression
。 #28048 由 Christian Lorentzen 完成。
更新日志#
sklearn.base
#
改进 base.ClusterMixin.fit_predict
和 base.OutlierMixin.fit_predict
现在接受 **kwargs
,这些参数将传递给估计器的 fit
方法。 #26506 由 Adrin Jalali 完成。
改进 如果
transform
/predict
消耗元数据,但继承自它们的类中没有相应地定义自定义fit_transform
/fit_predict
,则base.TransformerMixin.fit_transform
和base.OutlierMixin.fit_predict
现在会发出警告。 #26831 由 Adrin Jalali 完成。改进
base.clone
现在支持将dict
作为输入并创建副本。 #26786 由 Adrin Jalali 完成。API 变更
process_routing
现在具有不同的签名。前两个参数(对象和方法)仅为位置参数,所有元数据均作为关键字参数传递。 #26909 由 Adrin Jalali 完成。
改进 calibration.CalibratedClassifierCV
的 sigmoid
方法的内部目标和梯度已由私有损失模块替换。 #27185 由 Omar Salman 完成。
修复 cluster.SpectralClustering
构造函数中的 degree
参数现在接受实数值而非仅整数值,这与 sklearn.metrics.pairwise.polynomial_kernel
的 degree
参数一致。 #27668 由 Nolan McMahon 完成。
修复 修复了
cluster.OPTICS
中的一个错误,即基于前驱的簇校正未使用正确的索引。这可能导致结果因数据顺序而异。 #26459 由 Haoying Zhang 和 Guillaume Lemaitre 完成。修复 改进了
cluster.HDBSCAN
的fit
方法中检查连通分量数量时的错误消息。 #27678 由 Ganesh Tata 完成。修复 在
cluster.DBSCAN
的fit
方法中创建预计算稀疏矩阵的副本,以避免稀疏矩阵的原地修改。 #27651 由 Ganesh Tata 完成。修复 当
metric="precomputed"
并通过参数store_centers
请求存储中心时,会引发适当的ValueError
。 #27898 由 Guillaume Lemaitre 完成。API 变更
cluster.HDBSCAN
的algorithm
参数中的kdtree
和balltree
值现已弃用,并分别重命名为kd_tree
和ball_tree
,以确保命名约定的一致性。kdtree
和balltree
值将在 1.6 版本中移除。 #26744 由 Shreesha Kumar Bhat 完成。API 变更
cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
中的metric=None
选项在 1.4 版本中已弃用,并将在 1.6 版本中移除。请改用默认值。 #27828 由 Guillaume Lemaitre 完成。
主要新功能 通过 DataFrame 交换协议,为 compose.ColumnTransformer
添加了 polars 输入支持。Polars 的最低支持版本为 0.19.12
。 #26683 由 Thomas Fan 完成。
修复
cluster.spectral_clustering
和cluster.SpectralClustering
现在会引发明确的错误消息,指示不支持带np.int64
索引的稀疏矩阵和数组。 #27240 由 Yao Xiao 完成。API 变更 在
ColumnTransformer
中,使用 pandas 扩展数据类型并包含pd.NA
的输出现在会引发FutureWarning
,并将在 1.6 版本中导致ValueError
,除非输出容器已通过set_output(transform="pandas")
配置为“pandas”。之前,此类输出会导致 dtype 为object
的 numpy 数组包含pd.NA
,这无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时引发错误。 #27734 由 Jérôme Dockès 完成。
改进 允许 covariance.shrunk_covariance
通过处理 nd-数组一次性处理多个协方差矩阵。 #25275 由 Quentin Barthélemy 完成。
API 变更 修复
ColumnTransformer
现在在其已拟合的transformers_
属性中将"passthrough"
替换为相应的FunctionTransformer
。 #27204 由 Adrin Jalali 完成。
改进 datasets.make_sparse_spd_matrix
现在使用更节省内存的稀疏布局。它还接受一个新的关键字 sparse_format
,允许指定稀疏矩阵的输出格式。默认情况下,sparse_format=None
,这会像以前一样返回一个密集 numpy ndarray。 #27438 由 Yao Xiao 完成。
修复 当
X
为只读(例如numpy.memmap
实例)时,datasets.dump_svmlight_file
现在不会引发ValueError
。 #28111 由 Yao Xiao 完成。API 变更
datasets.make_sparse_spd_matrix
弃用了关键字参数dim
,转而使用n_dim
。dim
将在 1.6 版本中移除。 #27718 由 Adam Li 完成。
sklearn.decomposition
#
功能
decomposition.PCA
现在支持在arpack
求解器下使用scipy.sparse.sparray
和scipy.sparse.spmatrix
输入。当用于datasets.fetch_20newsgroups_vectorized
等稀疏数据时,这可以将(单线程)速度提高 100 倍,并降低 70 倍的内存使用。基于Alexander Tarashansky在scanpy中的实现。#18689 由Isaac Virshup和Andrey Portnoy贡献。改进 在
decomposition.non_negative_factorization
、decomposition.NMF
和decomposition.MiniBatchNMF
的n_components
参数中添加了一个“auto”选项,以便在使用自定义初始化时从 W 或 H 形状自动推断组件数量。此参数的默认值将在 1.6 版本中从None
更改为auto
。#26634 由Alexandre Landeau和Alexandre Vigny贡献。修复
decomposition.dict_learning_online
不再忽略max_iter
参数。#27834 由Guillaume Lemaitre贡献。修复
decomposition.KernelPCA
构造函数中的degree
参数现在接受实数值而不是仅整数值,这与sklearn.metrics.pairwise.polynomial_kernel
的degree
参数一致。#27668 由Nolan McMahon贡献。API 变更
decomposition.MiniBatchDictionaryLearning
、decomposition.MiniBatchSparsePCA
和decomposition.dict_learning_online
中的选项max_iter=None
已弃用,并将在 1.6 版本中移除。请改用默认值。#27834 由Guillaume Lemaitre贡献。
sklearn.ensemble
#
主要功能
ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
在分类准则为gini
、entropy
或log_loss
,或回归准则为squared_error
、friedman_mse
或poisson
时支持缺失值。#26391 由Thomas Fan贡献。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
支持categorical_features="from_dtype"
,这将在算法中将具有 Pandas 或 Polars Categorical dtype 的列视为类别。categorical_features="from_dtype"
将在 v1.6 中成为默认值。分类特征不再需要用数字编码。当分类特征为数字时,最大值不再需要小于max_bins
;只有(唯一)类别的数量必须小于max_bins
。#26411 由Thomas Fan和#27835 由Jérôme Dockès贡献。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
添加了新参数max_features
,用于指定在每次分裂中考虑的随机选择特征的比例。#27139 由Christian Lorentzen贡献。功能
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
现在支持单调约束,这在特征被认为对目标有正/负影响时非常有用。训练数据中的缺失值和多输出目标不支持。#13649 由Samuel Ronsin贡献,由Patrick O’Reilly发起。效率
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
通过在减法技巧中重用父节点的直方图作为子节点的直方图,现在速度略有提高。实际上,需要分配和释放的内存更少。#27865 由Christian Lorentzen贡献。效率
ensemble.GradientBoostingClassifier
由于私有损失函数模块,对于二分类问题和特别是多分类问题,速度更快。#26278 和#28095 由Christian Lorentzen贡献。效率 提高了在稀疏数据上训练
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
时的运行时性能和内存使用。#26957 由Thomas Fan贡献。效率 当
scoring
是metrics.get_scorer_names
中列出的预定义度量且启用了早期停止时,ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在速度更快。#26163 由Thomas Fan贡献。改进 所有森林方法(包括
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
)都添加了一个已拟合属性estimators_samples_
,它允许检索每个树估计器使用的训练样本索引。#26736 由Adam Li贡献。修复 修复了当输入为稀疏矩阵且
contamination
设置为浮点值时ensemble.IsolationForest
的问题。#27645 由Guillaume Lemaitre贡献。修复 当使用多输出模型且目标值全部四舍五入为整数时,在
ensemble.RandomForestRegressor
和ensemble.ExtraTreesRegressor
中请求 OOB 分数会引发ValueError
。它被识别为多分类问题。#27817 由Daniele Ongari贡献。修复 更改了估计器标签,以确认
ensemble.VotingClassifier
、ensemble.VotingRegressor
、ensemble.StackingClassifier
、ensemble.StackingRegressor
支持缺失值,前提是所有estimators
都支持缺失值。#27710 由Guillaume Lemaitre贡献。修复 支持加载
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的 pickle 文件,即使该 pickle 文件是在不同位数的平台上生成的。一个典型的例子是在 64 位机器上训练并 pickle 模型,然后在 32 位机器上加载模型进行预测。#28074 由Christian Lorentzen和Loïc Estève贡献。API 变更 在
ensemble.AdaBoostClassifier
中,algorithm
参数SAMME.R
已弃用,并将在 1.6 版本中移除。#26830 由Stefanie Senger贡献。
sklearn.feature_extraction
#
sklearn.feature_selection
#
改进
feature_selection.SelectKBest
、feature_selection.SelectPercentile
和feature_selection.GenericUnivariateSelect
现在通过提供一个接受X
和y=None
的score_func
来支持无监督特征选择。#27721 由Guillaume Lemaitre贡献。改进 在
mode='k_best'
模式下,当k
大于特征数量时,feature_selection.SelectKBest
和feature_selection.GenericUnivariateSelect
现在会显示警告。#27841 由Thomas Fan贡献。修复
feature_selection.RFE
和feature_selection.RFECV
在输入验证期间不再检查 NaN 值。#21807 由Thomas Fan贡献。
sklearn.inspection
#
改进
inspection.DecisionBoundaryDisplay
现在接受参数class_of_interest
,用于在绘制由response_method="predict_proba"
或response_method="decision_function"
提供的响应时选择感兴趣的类别。它允许绘制二分类和多分类分类器的决策边界。#27291 由Guillaume Lemaitre贡献。修复
inspection.DecisionBoundaryDisplay.from_estimator
和inspection.PartialDependenceDisplay.from_estimator
现在为子类返回正确的类型。#27675 由John Cant贡献。API 变更 当估计器未实现所请求的响应方法时,
inspection.DecisionBoundaryDisplay
会引发AttributeError
而不是ValueError
。#27291 由Guillaume Lemaitre贡献。
sklearn.kernel_ridge
#
修复
kernel_ridge.KernelRidge
构造函数中的degree
参数现在接受实数值而不是仅整数值,这与sklearn.metrics.pairwise.polynomial_kernel
的degree
参数一致。#27668 由Nolan McMahon贡献。
sklearn.linear_model
#
效率
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
对于求解器"lbfgs"
和"newton-cg"
现在具有更好的收敛性。两个求解器现在都可以根据指定的tol
为系数达到更高的精度。此外,lbfgs 可以更好地利用tol
,即更快停止或达到更高的精度。这是通过更好地缩放目标函数来实现的,即使用每个样本的平均损失而不是每个样本损失的总和。#26721 由Christian Lorentzen贡献。效率 使用
"newton-cg"
求解器的linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
在某些数据和参数设置下现在可以显著加快速度。这是通过改进的线搜索收敛检查实现的,该检查考虑了梯度信息,用于判断可忽略的损失改进。#26721 由Christian Lorentzen贡献。效率
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
中的"newton-cg"
求解器使用的内存略有减少。效果与系数数量(n_features * n_classes
)成正比。#27417 由Christian Lorentzen贡献。修复 确保
linear_model.ARDRegression
和linear_model.BayesianRidge
的sigma_
属性在拟合float32
数据时始终具有float32
dtype,即使在 NumPy 2 的类型提升规则下也是如此。#27899 由Olivier Grisel贡献。API 变更
linear_model.SGDClassifier
和linear_model.SGDOneClassSVM
的属性loss_function_
已弃用,并将在 1.6 版本中移除。#27979 由Christian Lorentzen贡献。
sklearn.metrics
#
效率 通过
metrics.DistanceMetric
计算 CSR x CSR、Dense x CSR 和 CSR x Dense 数据集的成对距离现在快了 1.5 倍。#26765 由Meekail Zain贡献。效率 通过
metrics.DistanceMetric
计算 CSR x CSR、Dense x CSR 和 CSR x Dense 的距离现在使用的内存减少了约 50%,并以与提供数据相同的 dtype 输出距离。#27006 由Meekail Zain贡献。改进 改进了使用
metrics.PrecisionRecallDisplay
和metrics.RocCurveDisplay
类获得的绘图的渲染。X 轴和 Y 轴的限制设置为 [0, 1],两个轴之间的纵横比设置为 1,以获得正方形绘图。#26366 由Mojdeh Rastgoo贡献。改进 添加
neg_root_mean_squared_log_error_scorer
作为评分器#26734 由Alejandro Martin Gil贡献。改进
metrics.confusion_matrix
现在在y_true
和y_pred
中只找到一个标签时会发出警告。#27650 由Lucy Liu贡献。修复 当
X
以float64
数组形式提供,X_norm_squared
以float32
数组形式提供时,使用metrics.pairwise.euclidean_distances
计算成对距离不再引发异常。#27624 由Jérôme Dockès贡献。修复
f1_score
现在,在处理各种零除情况时,通过使用不依赖于精度和召回率值的公式,提供了正确的值。#27577 由Omar Salman和Guillaume Lemaitre贡献。修复 当对请求非阈值决策函数(来自
decision_function
或predict_proba
)的评分器使用回归器时,metrics.make_scorer
现在会引发错误。此类评分器专用于分类。#26840 由Guillaume Lemaitre贡献。修复
metrics.DetCurveDisplay.from_predictions
、metrics.PrecisionRecallDisplay.from_predictions
、metrics.PredictionErrorDisplay.from_predictions
和metrics.RocCurveDisplay.from_predictions
现在为子类返回正确的类型。#27675 由John Cant贡献。API 变更
metrics.make_scorer
中的needs_threshold
和needs_proba
已弃用。这些参数将在 1.6 版本中移除。请改用接受"predict"
、"predict_proba"
或"decision_function"
或此类值列表的response_method
。needs_proba=True
等同于response_method="predict_proba"
,而needs_threshold=True
等同于response_method=("decision_function", "predict_proba")
。#26840 由Guillaume Lemaitre贡献。API 变更
metrics.mean_squared_error
和metrics.mean_squared_log_error
的squared
参数已弃用,并将在 1.6 版本中移除。请改用新函数metrics.root_mean_squared_error
和metrics.root_mean_squared_log_error
。#26734 由Alejandro Martin Gil贡献。
sklearn.model_selection
#
改进 当每个交叉验证折叠都失败时,
model_selection.learning_curve
会发出警告。#26299 由Rahil Parikh贡献。修复
model_selection.GridSearchCV
、model_selection.RandomizedSearchCV
和model_selection.HalvingGridSearchCV
现在不会更改参数网格中给定的对象,如果它是一个估计器。#26786 由Adrin Jalali贡献。
sklearn.multioutput
#
改进 为
multioutput.ClassifierChain
添加了predict_log_proba
方法。#27720 由Guillaume Lemaitre贡献。
sklearn.neighbors
#
效率
sklearn.neighbors.KNeighborsRegressor.predict
和sklearn.neighbors.KNeighborsClassifier.predict_proba
现在高效支持稠密和稀疏数据集对。#27018 由Julien Jerphanion贡献。效率 当
radius
较大且algorithm="brute"
使用非欧几里得度量时,neighbors.RadiusNeighborsClassifier.predict
和neighbors.RadiusNeighborsClassifier.predict_proba
的性能得到了改进。#26828 由Omar Salman贡献。修复 改进了当
neighbors.LocalOutlierFactor
以n_samples=n_neighbors
调用时的错误消息。#23317 由Bharat Raghunathan贡献。修复 当某个样本的所有邻居的权重都为零时,
neighbors.KNeighborsClassifier.predict
和neighbors.KNeighborsClassifier.predict_proba
现在会引发错误。当weights
是用户定义函数时,可能会发生这种情况。#26410 由Yao Xiao贡献。API 变更
neighbors.KNeighborsRegressor
现在通过metric
关键字参数直接接受metrics.DistanceMetric
对象,从而允许使用加速的第三方metrics.DistanceMetric
对象。#26267 由Meekail Zain贡献。
sklearn.preprocessing
#
效率
preprocessing.OrdinalEncoder
避免两次计算缺失索引以提高效率。#27017 由Xuefeng Xu贡献。效率 提高了
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
在检查nan
方面的效率。#27760 由Xuefeng Xu贡献。改进 改进了
preprocessing.FunctionTransformer
在func
返回pandas dataframe且输出配置为pandas时的警告。#26944 由Thomas Fan贡献。改进
preprocessing.TargetEncoder
现在支持target_type
‘multiclass’。#26674 由Lucy Liu贡献。修复 当
nan
是一个类别且不是用户提供类别中的最后一个时,preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
会引发异常。#27309 由Xuefeng Xu贡献。修复 如果用户提供的类别包含重复项,
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
会引发异常。#27328 由Xuefeng Xu贡献。修复 如果
get_feature_names_out
的输出与输出容器的列名(如果已定义)不一致,preprocessing.FunctionTransformer
会在transform
时引发错误。#27801 由Guillaume Lemaitre贡献。修复 在调用
preprocessing.OrdinalEncoder
的transform
而未调用fit
时引发NotFittedError
,因为categories
始终需要被检查。#27821 由Guillaume Lemaitre贡献。
sklearn.tree
#
功能
tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
现在支持单调约束,这在特征被认为对目标有正/负影响时非常有用。训练数据中的缺失值和多输出目标不支持。#13649 由Samuel Ronsin贡献,由Patrick O’Reilly发起。
sklearn.utils
#
改进
sklearn.utils.estimator_html_repr
根据浏览器的prefers-color-scheme
动态调整图表颜色,提高了对暗模式环境的适应性。#26862 由Andrew Goh Yisheng、Thomas Fan、Adrin Jalali贡献。改进
MetadataRequest
和MetadataRouter
现在有一个consumes
方法,可用于检查给定的一组参数是否会被消费。#26831 由Adrin Jalali贡献。改进 使得
sklearn.utils.check_array
在从 DIA 数组转换时,如果非零条目数量足够小,则尝试输出int32
索引的 CSR 和 COO 数组。这确保了用 Cython 实现且不接受int64
索引稀疏数据结构的估计器,现在能够一致地接受 SciPy 稀疏矩阵和数组的相同稀疏输入格式。#27372 由Guillaume Lemaitre贡献。修复
sklearn.utils.check_array
应该接受稀疏 SciPy 模块中的矩阵和数组。先前的实现在copy=True
时会因调用特定 NumPy 函数np.may_share_memory
而失败,该函数不适用于 SciPy 稀疏数组,也无法为 SciPy 稀疏矩阵返回正确结果。#27336 由Guillaume Lemaitre贡献。修复
check_estimators_pickle
在readonly_memmap=True
时,现在依赖 joblib 自身在加载序列化估计器时分配对齐内存映射数组的能力,而不是调用一个在 OpenBLAS 错误检测 CPU 架构时会崩溃的专用私有函数。#27614 由Olivier Grisel贡献。修复 当传递稀疏矩阵但
accept_sparse
为False
时,check_array
中的错误消息现在建议使用.toarray()
而不是X.toarray()
。#27757 由Lucy Liu贡献。修复 修复
check_array
函数,使其在输入为 Series 而不是 DataFrame 时输出正确的错误消息。#28090 由Stan Furrer和Yao Xiao贡献。API 变更
sklearn.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