版本 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 以避免依赖于稀疏矩阵的欧几里德成对计算的估计器的性能下降。受影响的估计器为
修复 修复了在使用
set_output
且transform
设置为pandas
或polars
时所有 scikit-learn 变换器的一个 bug。此 bug 可能会导致返回的数据框列名错误。 #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 提供。
sklearn.cluster
#
修复
cluster.AffinityPropagation
现在避免为相等点分配多个不同的聚类。 #28121 由 Pietro Peterlongo 和 Yao Xiao 提供。修复 避免
cluster.KMeans
在聚类数量大于非重复样本数量时出现无限循环。 #28165 由 Jérémie du Boisberranger 提供。
sklearn.compose
#
修复 当
verbose_feature_names_out=True
且变换器在内部多次使用相同的列时,compose.ColumnTransformer
现在会转换为 polars 数据框。之前,由于列名重复,它会引发错误。 #28262 由 Guillaume Lemaitre 提供。
sklearn.ensemble
#
修复 当在具有扩展数据类型的
pandas
DataFrame
(例如pd.Int64Dtype
)上拟合HistGradientBoostingClassifier
和HistGradientBoostingRegressor
时的错误。 #28385 由 Loïc Estève 提供。修复 修复了当目标是 DataFrame 格式的多标签或多类多输出时,
ensemble.VotingClassifier
引发的错误消息。 #27702 由 Guillaume Lemaitre 提供。
sklearn.impute
#
修复:如果
fill_value
不能使用casting='same_kind'
转换为输入值的 dtype,则impute.SimpleImputer
现在会在.fit
和.transform
中引发错误。 #28365 由 Leo Grinsztajn 提供。
sklearn.inspection
#
已修复
inspection.permutation_importance
现在可以正确处理sample_weight
和子采样(即max_features
< 1.0)。 #28184 由 Michael Mayer 完成。
sklearn.linear_model
#
已修复
linear_model.ARDRegression
现在可以处理predict(X, return_std=True)
的pandas输入类型。 #28377 由 Eddie Bergman 完成。
sklearn.preprocessing
#
已修复 使
preprocessing.FunctionTransformer
更宽松,并在以下情况下使用get_feature_names_out
覆盖输出列名:(i)输入和输出列名保持不变(在使用 NumPyufunc
时发生);(ii)输入列名是数字;(iii)输出将设置为 Pandas 或 Polars 数据框。 #28241 由 Guillaume Lemaitre 完成。已修复
preprocessing.FunctionTransformer
现在也会在使用set_output
调用transform="polars"
且func
不返回 Polars 数据框或未指定feature_names_out
时发出警告。 #28263 由 Guillaume Lemaitre 完成。已修复
preprocessing.TargetEncoder
在target_type="continuous"
且输入为只读时不再失败。特别是,它现在可以与启用 pandas 写时复制模式一起使用。 #28233 由 John Hopfensperger 完成。
sklearn.tree
#
已修复
tree.DecisionTreeClassifier
和tree.DecisionTreeRegressor
正确处理缺失值。当数据中不存在缺失值时,内部标准未初始化,这可能导致标准值错误。 #28295 由 Guillaume Lemaitre 完成,以及 #28327 由 Adam Li 完成。
sklearn.utils
#
增强 已修复
utils.metaestimators.available_if
现在会将check
函数中的错误作为AttributeError
的原因重新引发。 #28198 由 Thomas Fan 完成。已修复
utils._safe_indexing
现在在X
是 Python 列表且axis=1
时引发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 完成。修复 修复了在使用 Cython 损失函数的估计器中 PyPy 中发现的内存泄漏问题。 #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
方法、交叉验证拆分器和评分器。 #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
现在支持元数据路由,并将元数据路由到交叉验证拆分器。 #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 完成;由 萧瑶 在 #27250 中提交的
manifold.trustworthiness
;由 萧瑶 在 #27240 中提交的
manifold.spectral_embedding
;由 萧瑶 在 #27250 中提交的
metrics.pairwise_distances
;由 萧瑶 在 #27250 中提交的
metrics.pairwise_distances_chunked
;由 萧瑶 在 #27250 中提交的
metrics.pairwise.pairwise_kernels
;由 萧瑶 在 #27274 中提交的
utils.multiclass.type_of_target
。
类
由 萧瑶 在 #27250 中提交的
cluster.HDBSCAN
;由 Nurseit Kamchyev 在 #27179 中提交的
cluster.KMeans
;由 Nurseit Kamchyev 在 #27179 中提交的
cluster.MiniBatchKMeans
;由 Maren Westermann 在 #27104 和 萧瑶 在 #27250 中提交的
cluster.OPTICS
;由 Bharat Raghunathan 在 #27161 中提交的
cluster.SpectralClustering
;由 Isaac Virshup 在 #27100 中提交的
decomposition.MiniBatchNMF
;由 Isaac Virshup 在 #27100 中提交的
decomposition.NMF
;由 萧瑶 在 #27219 中提交的
feature_extraction.text.TfidfTransformer
;由 萧瑶 在 #27250 中提交的
manifold.Isomap
;由 萧瑶 在 #27240 中提交的
manifold.SpectralEmbedding
;由 萧瑶 在 #27250 中提交的
manifold.TSNE
;由 萧瑶 在 #27277 中提交的
impute.SimpleImputer
;由 萧瑶 在 #27277 中提交的
impute.IterativeImputer
;由 萧瑶 在 #27277 中提交的
impute.KNNImputer
;由 Lohit SundaramahaLingam 在 #27301 中提交的
kernel_approximation.PolynomialCountSketch
;由 萧瑶 在 #27252 中提交的
neural_network.BernoulliRBM
;由 Mohit Joshi 在 #27166 中提交的
preprocessing.PolynomialFeatures
;在 #27314 中由 Stefanie Senger 添加的
random_projection.GaussianRandomProjection
;在 #27314 中由 Stefanie Senger 添加的
random_projection.SparseRandomProjection
。
对 Array API 的支持#
一些估计器和函数支持 Array API。这些更改允许使用其他库(例如 JAX、CuPy 和 PyTorch)中的估计器和函数。因此,这使得一些 GPU 加速计算成为可能。
更多详情请参见 Array API 支持(实验性)。
函数
在 #27137 中由 Edoardo Abati 添加的
sklearn.metrics.accuracy_score
和sklearn.metrics.zero_one_loss
;在 #26855 中由 Tim Head 添加的
sklearn.model_selection.train_test_split
;在 #27601 中由 Yaroslav Korobko 添加的
is_multilabel
。
类
针对
full
和randomized
求解器(使用 QR 幂迭代)的decomposition.PCA
,在 #26315、#27098 和 #27431 中由 Mateusz Sokół、Olivier Grisel 和 Edoardo Abati 完成;在 #27556 中由 Edoardo Abati 添加的
preprocessing.KernelCenterer
;在 #27110 中由 Edoardo Abati 添加的
preprocessing.MaxAbsScaler
;在 #26243 中由 Tim Head 添加的
preprocessing.MinMaxScaler
;在 #27558 中由 Edoardo Abati 添加的
preprocessing.Normalizer
。
私有损失函数模块#
修复 二项式对数损失的梯度计算现在对于非常大(绝对值)的输入(原始预测)在数值上更稳定。之前,它可能会导致
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 完成。增强
base.TransformerMixin.fit_transform
和base.OutlierMixin.fit_predict
现在如果transform
/predict
消耗元数据,但类中没有定义相应的自定义fit_transform
/fit_predict
,则会发出警告。 #26831 由 Adrin Jalali 完成。增强功能
base.clone
现在支持dict
作为输入并创建副本。 #26786 由 Adrin Jalali 完成。API 变更
process_routing
现在具有不同的签名。前两个参数(对象和方法)仅接受位置参数,所有元数据都作为关键字参数传递。 #26909 由 Adrin Jalali 完成。
sklearn.calibration
#
增强功能
calibration.CalibratedClassifierCV
的sigmoid
方法的内部目标函数和梯度已被私有损失模块取代。 #27185 由 Omar Salman 完成。
sklearn.cluster
#
修复
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 完成。
sklearn.compose
#
主要功能 通过 DataFrame 交换协议,向
compose.ColumnTransformer
添加了对 polars 输入的支持。polars 的最低支持版本为0.19.12
。 #26683 由 Thomas Fan 完成。修复
cluster.spectral_clustering
和cluster.SpectralClustering
现在会抛出一个明确的错误信息,指出不支持稀疏矩阵和索引为np.int64
的数组。 #27240 by 肖瑶.API变更 使用 pandas 扩展数据类型并包含
pd.NA
的ColumnTransformer
输出现在会产生一个FutureWarning
警告,并在 1.6 版本中导致ValueError
错误,除非输出容器已使用set_output(transform="pandas")
配置为 “pandas”。之前,此类输出会导致包含pd.NA
的 dtype 为object
的 numpy 数组,这些数组无法转换为 numpy 浮点数,并在传递给其他 scikit-learn 估计器时导致错误。 #27734 by Jérôme Dockès.
sklearn.covariance
#
增强 通过处理多维数组,允许
covariance.shrunk_covariance
同时处理多个协方差矩阵。 #25275 by Quentin Barthélemy.API变更 修复
ColumnTransformer
现在在拟合的transformers_
属性中用相应的FunctionTransformer
替换"passthrough"
。 #27204 by Adrin Jalali.
sklearn.datasets
#
增强
datasets.make_sparse_spd_matrix
现在使用更节省内存的稀疏布局。它还接受一个新的关键字sparse_format
,允许指定稀疏矩阵的输出格式。默认情况下sparse_format=None
,这与之前一样返回密集的 numpy ndarray。 #27438 by 肖瑶.修复
datasets.dump_svmlight_file
现在当X
为只读时(例如,numpy.memmap
实例)不会抛出ValueError
错误。 #28111 by 肖瑶.API变更
datasets.make_sparse_spd_matrix
已弃用关键字参数dim
,而支持n_dim
。dim
将在 1.6 版本中移除。 #27718 by Adam Li.
sklearn.decomposition
#
特性
decomposition.PCA
现在使用arpack
求解器时支持scipy.sparse.sparray
和scipy.sparse.spmatrix
输入。当用于稀疏数据(如datasets.fetch_20newsgroups_vectorized
)时,这可以带来 100 倍的加速(单线程)和 70 倍的内存使用降低。基于 Alexander Tarashansky 在 scanpy 中的实现。 #18689 by Isaac Virshup 和 Andrey Portnoy.增强 一个 “auto” 选项已添加到
decomposition.non_negative_factorization
、decomposition.NMF
和decomposition.MiniBatchNMF
的n_components
参数中,以便在使用自定义初始化时根据 W 或 H 的形状自动推断组件数量。此参数的默认值将在 1.6 版本中从None
更改为auto
。 #26634 by 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数据类型的列作为算法中的类别特征。categorical_features="from_dtype"
将在1.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 完成。错误修复 当请求具有多输出模型的 OOB 分数且目标值都被四舍五入为整数时,
ensemble.RandomForestRegressor
和ensemble.ExtraTreesRegressor
现在会抛出ValueError
异常。之前将其识别为多类别问题。 #27817 由 Daniele Ongari 完成。错误修复 更改估计器标签以确认如果所有
estimators
支持缺失值,则ensemble.VotingClassifier
,ensemble.VotingRegressor
,ensemble.StackingClassifier
,ensemble.StackingRegressor
也支持缺失值。 #27710 由 Guillaume Lemaitre 完成。错误修复 支持加载在不同位数平台上生成的
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的 pickle 文件。一个典型的例子是在 64 位机器上训练和保存模型,然后在 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 完成。增强 当
k
大于特征数量时,带有mode='k_best'
的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
数据类型,即使使用 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%,并且输出距离的数据类型与提供的数据相同。 #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 by Lucy Liu.修复 使用
metrics.pairwise.euclidean_distances
计算成对距离时,当X
为float64
数组且X_norm_squared
为float32
数组时,不再引发异常。 #27624 by Jérôme Dockès.修复
f1_score
现在通过使用不依赖于精确率和召回率值的公式,在处理各种除零情况时提供正确的值。 #27577 by Omar Salman and Guillaume Lemaitre.修复
metrics.make_scorer
现在在回归器上使用请求非阈值决策函数(来自decision_function
或predict_proba
)的评分器时会引发错误。此类评分器特定于分类。 #26840 by Guillaume Lemaitre.修复
metrics.DetCurveDisplay.from_predictions
,metrics.PrecisionRecallDisplay.from_predictions
,metrics.PredictionErrorDisplay.from_predictions
和metrics.RocCurveDisplay.from_predictions
现在为子类返回正确的类型。 #27675 by 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 by 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 by Alejandro Martin Gil.
sklearn.model_selection
#
增强
model_selection.learning_curve
在每次交叉验证折叠都失败时会发出警告。 #26299 by Rahil Parikh.修复
model_selection.GridSearchCV
,model_selection.RandomizedSearchCV
和model_selection.HalvingGridSearchCV
现在如果参数网格中的对象是估计器,则不会更改该对象。 #26786 by 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 贡献。增强 当
func
返回 pandas 数据框并且输出配置为 pandas 时,改进了preprocessing.FunctionTransformer
中的警告信息。 #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 贡献。修复 在调用
transform
之前未调用fit
时,preprocessing.OrdinalEncoder
中会引发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
,则会通过调用特定的 NumPynp.may_share_memory
函数失败,该函数不适用于 SciPy 稀疏数组,并且不会为 SciPy 稀疏矩阵返回正确的结果。#27336 由 Guillaume Lemaitre 贡献。修复 使用
readonly_memmap=True
的check_estimators_pickle
现在依赖于 joblib 自身在加载序列化估计器时分配对齐的内存映射数组的能力,而不是调用专用私有函数(当 OpenBLAS 错误检测 CPU 架构时会崩溃)。#27614 由 Olivier Grisel 贡献。修复 当传递稀疏矩阵但
accept_sparse
为False
时,check_array
中的错误消息现在建议使用.toarray()
而不是X.toarray()
。#27757 由 Lucy Liu 贡献。修复 修复函数
check_array
,使其在输入为 Series 而不是 DataFrame 时输出正确的错误消息。 #28090 由 Stan Furrer 和 姚晓 贡献。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,Gleb 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