版本 1.2#
有关此版本主要亮点的简短描述,请参阅 scikit-learn 1.2 发布亮点。
变更日志图例
主要特性 以前无法实现的重要功能。
特性 以前无法实现的功能。
效率 现有功能现在可能不需要那么多计算或内存。
增强 其他次要改进。
修复 以前未按文档说明工作(或未按合理预期工作)的问题现在应该已修复。
API 变更 未来您需要更改代码才能实现相同的效果;或者未来某个功能将被移除。
版本 1.2.2#
2023 年 3 月
变更日志#
sklearn.base
#
修复 当
set_output(transform="pandas")
时,如果 transform 输出已经是 DataFrame,base.TransformerMixin
会保留索引。 #25747 由 Thomas Fan 提交。
sklearn.calibration
#
修复 当使用
base_estimator__
前缀设置calibration.CalibratedClassifierCV
中使用的估计器参数时,会发出弃用警告。 #25477 由 Tim Head 提交。
sklearn.cluster
#
修复 修复了
cluster.BisectingKMeans
中的一个错误,该错误阻止了在运行多个初始化时fit
因标签排列而随机失败。 #25563 由 Jérémie du Boisberranger 提交。
sklearn.compose
#
修复 修复了
compose.ColumnTransformer
中的一个错误,该错误现在支持在set_output(transform="pandas")
时选择空列。 #25570 由 Thomas Fan 提交。
sklearn.ensemble
#
修复 当使用
base_estimator__
前缀设置ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
、ensemble.BaggingClassifier
和ensemble.BaggingRegressor
中使用的估计器参数时,会发出弃用警告。 #25477 由 Tim Head 提交。
sklearn.feature_selection
#
修复 修复了一个回归错误,即
feature_selection.SequentialFeatureSelector
不再接受负的tol
值。 #25664 由 Jérémie du Boisberranger 提交。
sklearn.inspection
#
修复 在处理无法通过
numpy.unique
排序的混合数据类型类别时,inspection.partial_dependence
现在会引发更具信息量的错误消息。此问题通常发生在类别为str
且存在使用np.nan
的缺失值时。 #25774 由 Guillaume Lemaitre 提交。
sklearn.isotonic
#
修复 修复了
isotonic.IsotonicRegression
中的一个错误,即当全局配置设置transform_output="pandas"
时,isotonic.IsotonicRegression.predict
会返回一个 pandas DataFrame。 #25500 由 Guillaume Lemaitre 提交。
sklearn.preprocessing
#
修复 当存在不常见类别时,
preprocessing.OneHotEncoder.drop_idx_
现在正确地引用了categories_
属性中被丢弃的类别。 #25589 由 Thomas Fan 提交。修复 当训练数据中存在缺失值时,
preprocessing.OrdinalEncoder
现在正确支持将encoded_missing_value
或unknown_value
设置为类别基数。 #25704 由 Thomas Fan 提交。
sklearn.tree
#
修复 修复了
tree.DecisionTreeClassifier
、tree.DecisionTreeRegressor
、tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
中的一个回归错误,即在 1.2 版本中当min_sample_split=1
时不再引发错误。 #25744 由 Jérémie du Boisberranger 提交。
sklearn.utils
#
修复 修复了
utils.check_array
中的一个错误,该错误现在能够根据 Array API 规范正确执行非有限性验证。 #25619 由 Thomas Fan 提交。修复
utils.multiclass.type_of_target
可以将 pandas 可空数据类型识别为分类目标。 #25638 由 Thomas Fan 提交。
版本 1.2.1#
2023 年 1 月
更改的模型#
当使用相同数据和参数拟合时,以下估计器和函数可能会生成与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机采样过程的变化所致。
修复
decomposition.MiniBatchDictionaryLearning
中拟合的组件可能不同。充分统计量的在线更新现在正确地考虑了批次大小。 #25354 由 Jérémie du Boisberranger 提交。修复
preprocessing.OneHotEncoder
的categories_
属性现在在使用预定义字符串类别时始终包含一个object`s
数组。预定义为字节编码的类别将不再适用于字符串编码的`X
。 #25174 由 Tim Head 提交。
影响所有模块的更改#
修复 移除了内部使用近邻搜索方法的估计器的虚假警告。 #25129 由 Julien Jerphanion 提交。
修复 修复了一个错误,即在使用
n_jobs > 1
的估计器中当前配置被忽略。此错误是由joblib
辅助线程分派的任务触发的,因为sklearn.get_config
以前会访问一个空的线程本地配置,而不是从首次调用joblib.Parallel
的线程中可见的配置。 #25363 由 Guillaume Lemaitre 提交。
变更日志#
sklearn.base
#
修复 修复了
BaseEstimator.__getstate__
中的一个回归错误,该错误在使用 Python 3.11 时会阻止某些估计器被序列化(pickled)。 #25188 由 Benjamin Bossan 提交。修复 仅当类本身定义了
transform
方法时,从base.TransformerMixin
继承才会包装transform
方法。 #25295 由 Thomas Fan 提交。
sklearn.datasets
#
修复 修复了
datasets.fetch_openml
中 liac-arff 和 pandas 解析器在分隔符后引入前导空格时存在的不一致。ARFF 规范要求忽略前导空格。 #25312 由 Guillaume Lemaitre 提交。修复 修复了
datasets.fetch_openml
在使用parser="pandas"
时单引号和反斜杠转义字符未能正确处理的错误。 #25511 由 Guillaume Lemaitre 提交。
sklearn.decomposition
#
修复 修复了
decomposition.MiniBatchDictionaryLearning
中的一个错误,即在对不同大小的批次调用partial_fit
时,充分统计量的在线更新不正确。 #25354 由 Jérémie du Boisberranger 提交。修复
decomposition.DictionaryLearning
更好地支持只读 NumPy 数组。特别是,当与坐标下降算法(即fit_algorithm='cd'
)一起使用时,它能更好地支持内存映射的大型数据集。 #25172 由 Julien Jerphanion 提交。
sklearn.ensemble
#
sklearn.feature_extraction
#
修复 当输入为字符串列表时,
feature_extraction.FeatureHasher
会引发一个信息性错误。 #25094 由 Thomas Fan 提交。
sklearn.linear_model
#
修复 修复了
linear_model.SGDClassifier
和linear_model.SGDRegressor
中的一个回归错误,该错误导致当verbose
参数设置为大于 0 的值时它们无法使用。 #25250 由 Jérémie Du Boisberranger 提交。
sklearn.manifold
#
修复 当输出类型设置为 pandas 时,
manifold.TSNE
现在可以正常工作。 #25370 由 Tim Head 提交。
sklearn.model_selection
#
修复
model_selection.cross_validate
在多指标评分时,如果某些评分器失败,未失败的评分器现在会返回正确的分数,而不是error_score
值。 #23101 由 András Simon 和 Thomas Fan 提交。
sklearn.neural_network
#
修复
neural_network.MLPClassifier
和neural_network.MLPRegressor
在拟合带特征名称的数据时不再发出警告。 #24873 由 Tim Head 提交。修复 改进了
neural_network.MLPClassifier
和neural_network.MLPRegressor
在early_stopping=True
且调用partial_fit
时的错误消息。 #25694 由 Thomas Fan 提交。
sklearn.preprocessing
#
修复 当
check_inverse=True
时,preprocessing.FunctionTransformer.inverse_transform
正确支持全部为数值型的 DataFrames。 #25274 由 Thomas Fan 提交。修复 当
extrapolations="periodic"
时,preprocessing.SplineTransformer.get_feature_names_out
正确返回特征名称。 #25296 由 Thomas Fan 提交。
sklearn.tree
#
sklearn.utils
#
修复 恢复了
utils.check_array
对于布尔型 pandas Series 的行为。类型被保留,而不是转换为float64.
。 #25147 由 Tim Head 提交。API 变更
utils.fixes.delayed
在 1.2.1 版本中已被弃用,并将在 1.5 版本中移除。请转而导入utils.parallel.delayed
并结合新引入的utils.parallel.Parallel
使用,以确保 scikit-learn 配置正确传播到工作进程。 #25363 由 Guillaume Lemaitre 提交。
版本 1.2.0#
2022 年 12 月
更改的模型#
当使用相同数据和参数拟合时,以下估计器和函数可能会生成与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机采样过程的变化所致。
增强 在使用
'amg'
或'lobpcg'
求解器时,cluster.SpectralClustering
、manifold.SpectralEmbedding
、cluster.spectral_clustering
和manifold.spectral_embedding
的默认eigen_tol
现在为None
。此更改提高了求解器的数值稳定性,但可能会导致模型不同。增强
linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
在使用 lbfgs 求解器时可以达到更高的精度,特别是在tol
设置为很小的值时。此外,verbose
现在已正确传播到 L-BFGS-B。 #23619 由 Christian Lorentzen 提交。增强
metrics.log_loss
的默认eps
值已从1e-15
更改为"auto"
。"auto"
将eps
设置为np.finfo(y_pred.dtype).eps
。 #24354 由 Safiuddin Khaja 和 gsiisg 提交。修复 使
decomposition.SparsePCA
中components_
的符号确定化。 #23935 由 Guillaume Lemaitre 提交。修复
decomposition.FastICA
中的components_
符号可能不同。现在与所有 SVD 求解器保持一致和确定。 #22527 由 Meekail Zain 和 Thomas Fan 提交。修复
linear_model._sgd_fast._plain_sgd
(linear_model.SGDRegressor
和linear_model.SGDClassifier
使用)中的早停条件现在已更改。旧条件没有区分训练集和验证集,并导致错误容限过度缩放。此问题已通过 #23798 由 Harsh Agrawal 提交的修复解决。修复 对于
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
,对应于 NaN 分数的排名都将设置为可能的最大排名。 #24543 由 Guillaume Lemaitre 提交。API 变更
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
的tol
默认值已从1e-3
更改为1e-4
。 #24465 由 Christian Lorentzen 提交。
影响所有模块的变更#
主要功能 所有转换器均已采用
set_output
API。包含转换器(如pipeline.Pipeline
或compose.ColumnTransformer
)的元估计器也定义了set_output
。详情请参阅 SLEP018。 #23734 和 #24699 由 Thomas Fan 提交。效率 用于密集 float32 数据集上的成对距离约简的底层例程已重构。以下函数和估计器现在在硬件可伸缩性和加速方面获得了性能提升
例如,
sklearn.neighbors.NearestNeighbors.kneighbors
和sklearn.neighbors.NearestNeighbors.radius_neighbors
在笔记本电脑上分别比以前快达 20 倍和 5 倍。此外,这两个算法的实现现在适用于多核机器,使其可用于包含数百万样本的数据集。
#23865 由 Julien Jerphanion 提交。
改进 通过利用 NumPy 的 SIMD 优化原语,所有估计器中对 float32 数据的有限性检查(NaN 和无穷值的检测)现在效率显著提高。 #23446 由 Meekail Zain 提交
改进 通过使用更高效的首停二次遍历算法,所有估计器中对有限性检查(NaN 和无穷值的检测)现在速度更快。 #23197 由 Meekail Zain 提交
改进 对于所有距离度量以及 float32 和 float64 数据集,已添加或改进了对密集和稀疏数据集对组合的支持,适用于以下估计器
#23604 和 #23585 由 Julien Jerphanion、Olivier Grisel 和 Thomas Fan 提交,#24556 由 Vincent Maladière 提交。
修复 系统地检查文档中代码示例使用的数据集 tarball 的 sha256 摘要。 #24617 由 Olivier Grisel 和 Thomas Fan 提交。感谢 Sim4n6 的报告。
变更日志#
sklearn.base
#
改进 引入了
base.ClassNamePrefixFeaturesOutMixin
和base.ClassNamePrefixFeaturesOutMixin
mixin,为常见的转换器用例定义了 get_feature_names_out。 #24688 由 Thomas Fan 提交。
sklearn.calibration
#
API 变更 将
calibration.CalibratedClassifierCV
中的base_estimator
重命名为estimator
,以提高可读性和一致性。参数base_estimator
已被弃用,并将在 1.4 版本中移除。 #22054 由 Kevin Roice 提交。
sklearn.cluster
#
效率 采用
algorithm="lloyd"
的cluster.KMeans
现在更快且使用更少内存。 #24264 由 Vincent Maladière 提交。改进
cluster.OPTICS
的predict
和fit_predict
方法现在接受稀疏数据类型作为输入数据。 #14736 由 Hunt Zhan 提交,#20802 由 Brandon Pokorny 提交,以及 #22965 由 Meekail Zain 提交。改进
cluster.Birch
现在为numpy.float32
输入保留 dtype。 #22968 由Meekail Zain <micky774>
提交。改进
cluster.KMeans
和cluster.MiniBatchKMeans
现在为n_init
接受一个新的'auto'
选项,在使用init='k-means++'
时,为了效率,它会将随机初始化次数更改为一次。这标志着这两个类中n_init
默认值的弃用开始,并且它们的默认值都将在 1.4 版本中更改为n_init='auto'
。 #23038 由 Meekail Zain 提交。改进
cluster.SpectralClustering
和cluster.spectral_clustering
现在将eigen_tol
参数传播到所有eigen_solver
选项。包括一个新的选项eigen_tol="auto"
,并开始弃用,以便在 1.3 版本中将默认值从eigen_tol=0
更改为eigen_tol="auto"
。 #23210 由 Meekail Zain 提交。修复
cluster.KMeans
现在在预测时支持只读属性。 #24258 由 Thomas Fan 提交API 变更
cluster.AgglomerativeClustering
的affinity
属性现已弃用,并将在 v1.4 中重命名为metric
。 #23470 由 Meekail Zain 提交。
sklearn.datasets
#
改进 在
datasets.fetch_openml
中引入了新参数parser
。parser="pandas"
允许使用 CPU 和内存效率非常高的pandas.read_csv
解析器加载密集 ARFF 格式的数据集文件。可以传递parser="liac-arff"
来使用旧的 LIAC 解析器。当parser="auto"
时,密集数据集使用 “pandas” 加载,稀疏数据集使用 “liac-arff” 加载。目前,默认是parser="liac-arff"
,在 1.4 版本中将更改为parser="auto"
。 #21938 由 Guillaume Lemaitre 提交。改进
datasets.dump_svmlight_file
现在通过 Cython 实现加速,提供 2-4 倍的速度提升。 #23127 由 Meekail Zain 提交改进 类似路径的对象,例如使用 pathlib 创建的对象,现在允许作为
datasets.load_svmlight_file
和datasets.load_svmlight_files
中的路径。 #19075 由 Carlos Ramos Carreño 提交。修复 确保
datasets.fetch_lfw_people
和datasets.fetch_lfw_pairs
根据slice_
参数在内部裁剪图像。 #24951 由 Guillaume Lemaitre 提交。
sklearn.decomposition
#
效率
decomposition.FastICA.fit
已在内存占用和运行时方面进行了优化。 #22268 由 MohamedBsh 提交。改进
decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
现在实现了inverse_transform
函数。 #23905 由 Guillaume Lemaitre 提交。改进
decomposition.FastICA
现在允许用户通过新的whiten_solver
参数选择如何执行白化,该参数支持svd
和eigh
。尽管在num_features > num_samples
的情况下eigh
可能更快且内存效率更高,但whiten_solver
默认为svd
。 #11860 由 Pierre Ablin 提交,#22527 由 Meekail Zain 和 Thomas Fan 提交。改进
decomposition.LatentDirichletAllocation
现在为numpy.float32
输入保留 dtype。 #24528 由 Takeshi Oura 和 Jérémie du Boisberranger 提交。修复 使
decomposition.SparsePCA
中components_
的符号确定化。 #23935 由 Guillaume Lemaitre 提交。API 变更
decomposition.MiniBatchSparsePCA
的n_iter
参数已弃用,并由max_iter
、tol
和max_no_improvement
参数取代,以与decomposition.MiniBatchDictionaryLearning
保持一致。n_iter
将在 1.3 版本中移除。 #23726 由 Guillaume Lemaitre 提交。API 变更
decomposition.PCA
的n_features_
属性已弃用,取而代之的是n_features_in_
,并将在 1.4 版本中移除。 #24421 由 Kshitij Mathur 提交。
sklearn.discriminant_analysis
#
主要功能
discriminant_analysis.LinearDiscriminantAnalysis
现在支持solver="svd"
的 Array API。Array API 支持被认为是实验性的,并且可能会在不遵循我们通常的滚动弃用周期策略的情况下发展。更多详情请参阅 Array API 支持(实验性)。 #22554 由 Thomas Fan 提交。修复
discriminant_analysis.QuadraticDiscriminantAnalysis
的参数验证只在fit
中进行,而不在__init__
中。 #24218 由 Stefanie Molin 提交。
sklearn.ensemble
#
主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在通过其构造函数中的interaction_cst
参数支持交互约束。 #21020 由 Christian Lorentzen 提交。使用交互约束也使得拟合更快。 #24856 由 Christian Lorentzen 提交。功能 为
ensemble.HistGradientBoostingClassifier
添加了class_weight
。 #22014 由 Thomas Fan 提交。效率 通过避免数据复制,提高了
ensemble.IsolationForest
的运行时性能。 #23252 由 Zhehao Liu 提交。改进
ensemble.StackingClassifier
现在接受任何类型的基本估计器。 #24538 由 Guillem G Subies 提交。改进 现在可以将
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的categorical_features
参数作为特征名称传递。 #24889 由 Olivier Grisel 提交。改进
ensemble.StackingClassifier
现在支持多标签指示器目标。 #24146 由 Nicolas Peretti、Nestor Navarro、Nati Tomattis 和 Vincent Maladiere 提交。改进
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在接受将monotonic_cst
参数作为字典传递,除了之前支持的类数组格式。这样的字典以特征名称作为键,以-1
、0
、1
之一作为值,以指定每个特征的单调性约束。 #24855 由 Olivier Grisel 提交。改进
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的交互约束现在可以针对两种常见情况指定为字符串:“无交互 (no_interactions)” 和 “成对交互 (pairwise)”。 #24849 由 Tim Head 提交。修复 修复了
ensemble.AdaBoostClassifier
在使用非常小的样本权重进行拟合时,特征重要性输出 NaN 的问题。 #20415 由 Zhehao Liu 提交。修复
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
在对编码为负值的类别进行预测时不再报错,而是将其视为“缺失类别”的成员。 #24283 由 Thomas Fan 提交。修复
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
,当verbose>=1
时,会打印计算直方图和寻找最佳分割的详细计时信息。根节点中花费的时间以前缺失,现在已包含在打印信息中。 #24894 由 Christian Lorentzen 提交。API 变更 在以下类中,将构造函数参数
base_estimator
重命名为estimator
:ensemble.BaggingClassifier
、ensemble.BaggingRegressor
、ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
。base_estimator
在 1.2 中已弃用,并将在 1.4 中移除。 #23819 由 Adrian Trujillo 和 Edoardo Abati 提交。API 变更 在以下类中,将拟合属性
base_estimator_
重命名为estimator_
:ensemble.BaggingClassifier
、ensemble.BaggingRegressor
、ensemble.AdaBoostClassifier
、ensemble.AdaBoostRegressor
、ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
、ensemble.ExtraTreesRegressor
、ensemble.RandomTreesEmbedding
、ensemble.IsolationForest
。base_estimator_
在 1.2 中已弃用,并将在 1.4 中移除。 #23819 由 Adrian Trujillo 和 Edoardo Abati 提交。
sklearn.feature_selection
#
修复 修复了
feature_selection.mutual_info_regression
和feature_selection.mutual_info_classif
中的一个错误,即无论目标y
是连续的还是离散的,X
中的连续特征都应独立地缩放到单位方差。 #24747 由 Guillaume Lemaitre 提交
sklearn.gaussian_process
#
修复 修复了 PyPy(以及可能其他非 CPython 解释器)中
nu=0.5
的gaussian_process.kernels.Matern
梯度计算问题。 #24245 由 Loïc Estève 提交。修复
gaussian_process.GaussianProcessRegressor
的fit
方法在使用自定义核函数时不会修改输入 X,其中diag
方法返回输入 X 的一部分。 #24405 由 Omar Salman 提交。
sklearn.impute
#
改进 为
impute.SimpleImputer
、impute.KNNImputer
和impute.IterativeImputer
添加了keep_empty_features
参数,在转换时防止移除只包含缺失值的特征。 #16695 由 Vitor Santa Rosa 提交。
sklearn.inspection
#
主要功能 扩展了
inspection.partial_dependence
和inspection.PartialDependenceDisplay
以处理分类特征。 #18298 由 Madhura Jayaratne 和 Guillaume Lemaitre 提交。修复
inspection.DecisionBoundaryDisplay
现在在输入数据不是二维时会引发错误。 #25077 由 Arturo Amor 提交。
sklearn.kernel_approximation
#
改进
kernel_approximation.RBFSampler
现在为numpy.float32
输入保留 dtype。 #24317 由Tim Head <betatim>
提交。改进
kernel_approximation.SkewedChi2Sampler
现在为numpy.float32
输入保留 dtype。 #24350 由 Rahil Parikh 提交。改进
kernel_approximation.RBFSampler
现在接受参数gamma
的'scale'
选项。 #24755 由 Hleb Levitski 提交。
sklearn.linear_model
#
改进
linear_model.LogisticRegression
、linear_model.LogisticRegressionCV
、linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
获得了一个新的求解器solver="newton-cholesky"
。这是一个二阶(牛顿)优化例程,使用 Hessian 矩阵的 Cholesky 分解。当n_samples >> n_features
时,在包含一些稀有分类级别的独热编码分类变量问题上,"newton-cholesky"
求解器被观察到比"lbfgs"
求解器收敛更快且达到更高精度的解。 #24637 和 #24767 由 Christian Lorentzen 提交。增强
linear_model.GammaRegressor
、linear_model.PoissonRegressor
和linear_model.TweedieRegressor
在使用 lbfgs 求解器时可以达到更高的精度,特别是在tol
设置为很小的值时。此外,verbose
现在已正确传播到 L-BFGS-B。 #23619 由 Christian Lorentzen 提交。修复
linear_model.SGDClassifier
和linear_model.SGDRegressor
当所有验证样本的样本权重为零时,将引发错误。 #23275 由Zhehao Liu <MaxwellLZH>
提交。修复
linear_model.SGDOneClassSVM
不再在构造函数中执行参数验证。所有验证现在都在fit()
和partial_fit()
中处理。 #24433 由 Yogendrasingh、Arisa Y. 和 Tim Head 提交。修复 修复了在
linear_model.SGDRegressor
和linear_model.SGDClassifier
中启用提前停止时平均损失的计算问题。还相应地更新了提前停止的条件。 #23798 由 Harsh Agrawal 提交。API 变更
linear_model.QuantileRegressor
中solver
参数的默认值将在 1.4 版本中从"interior-point"
更改为"highs"
。 #23637 由 Guillaume Lemaitre 提交。API 变更
linear_model.LogisticRegression
中penalty
参数的字符串选项"none"
已弃用,并将在 1.4 版本中移除。请改用None
。 #23877 由 Zhehao Liu 提交。API 变更
linear_model.ridge_regression
、linear_model.Ridge
和linear_model.RidgeClassifier
的tol
默认值已从1e-3
更改为1e-4
。 #24465 由 Christian Lorentzen 提交。
sklearn.manifold
#
功能 为
manifold.MDS
添加了使用归一化应力 (normalized stress) 的选项。通过将新参数normalize
设置为True
来启用此功能。 #10168 由 Łukasz Borchmann 提交,#12285 由 Matthias Miltenberger 提交,#13042 由 Matthieu Parizy 提交,#18094 由 Roth E Conrad 提交,以及 #22562 由 Meekail Zain 提交。改进 为
manifold.SpectralEmbedding
添加了eigen_tol
参数。manifold.spectral_embedding
和manifold.SpectralEmbedding
都将eigen_tol
传播到所有eigen_solver
选项。包括一个新的选项eigen_tol="auto"
,并开始弃用,以便在 1.3 版本中将默认值从eigen_tol=0
更改为eigen_tol="auto"
。 #23210 由 Meekail Zain 提交。改进
manifold.Isomap
现在为np.float32
输入保留 dtype。 #24714 由 Rahil Parikh 提交。API 变更 为
manifold.MDS
和manifold.smacof
中的normalized_stress
参数添加了"auto"
选项。请注意,normalized_stress
仅适用于非度量 MDS,因此当metric=False
时,"auto"
选项会启用normalized_stress
,当metric=True
时则禁用它。在 1.4 版本中,"auto"
将成为normalized_stress
的默认值。 #23834 由 Meekail Zain 提交
sklearn.metrics
#
功能
metrics.ConfusionMatrixDisplay.from_estimator
、metrics.ConfusionMatrixDisplay.from_predictions
和metrics.ConfusionMatrixDisplay.plot
接受text_kw
参数,该参数会传递给 matplotlib 的text
函数。 #24051 由 Thomas Fan 提交。功能 添加了
metrics.class_likelihood_ratios
,用于计算从二分类问题的混淆矩阵中得出的正负似然比。 #22518 由 Arturo Amor 提交。功能 添加了
metrics.PredictionErrorDisplay
以绘制残差与预测值、实际值与预测值的关系图,从而定性评估回归器的行为。该显示可以通过类方法metrics.PredictionErrorDisplay.from_estimator
和metrics.PredictionErrorDisplay.from_predictions
创建。 #18020 由 Guillaume Lemaitre 提交。功能
metrics.roc_auc_score
现在支持 One-vs-Rest 多类情况(multi_class="ovr"
)的微平均(average="micro"
)。 #24338 由 Arturo Amor 提交。改进 为
metrics.log_loss
中eps
参数添加了"auto"
选项。此选项将根据y_pred
的数据类型自动设置eps
值。此外,eps
的默认值从1e-15
更改为新的"auto"
选项。 #24354 由 Safiuddin Khaja 和 gsiisg 提交。修复 允许
csr_matrix
作为metrics.label_ranking_average_precision_score
度量的参数y_true
的输入。 #23442 由 Sean Atukorala 提交修复
metrics.ndcg_score
现在当y_true
值包含负值时会触发警告。用户仍然可以使用负值,但结果可能不在 0 到 1 之间。从 v1.4 开始,为y_true
传入负值将引发错误。 #22710 由 Conroy Trinh 提交,#23461 由 Meekail Zain 提交。修复 当
eps=0
时,metrics.log_loss
现在在边界(0 或 1)处的预测返回正确的 0 或np.inf
值,而不是nan
。它也接受整数输入。 #24365 由 Christian Lorentzen 提交。API 变更
metrics.pairwise.manhattan_distances
的参数sum_over_features
已弃用,并将在 1.4 版本中移除。 #24630 由 Rushil Desai 提交。
sklearn.model_selection
#
功能 添加了类
model_selection.LearningCurveDisplay
,它允许轻松绘制由函数model_selection.learning_curve
获得的学习曲线。 #24084 由 Guillaume Lemaitre 提交。修复 对于所有
SearchCV
类和 scipy >= 1.10,对应于 NaN 分数的排名被正确设置为可能的最大排名,而不是np.iinfo(np.int32).min
。 #24141 由 Loïc Estève 提交。修复 在
model_selection.HalvingGridSearchCV
和model_selection.HalvingRandomSearchCV
中,带有 NaN 分数的参数组合现在共享最低排名。 #24539 由 Tim Head 提交。修复 对于
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
,对应于 NaN 分数的排名都将设置为可能的最大排名。 #24543 由 Guillaume Lemaitre 提交。
sklearn.multioutput
#
功能 为以下类添加了布尔型
verbose
标志:multioutput.ClassifierChain
和multioutput.RegressorChain
。 #23977 由 Eric Fiegel、Chiara Marmo、Lucy Liu 和 Guillaume Lemaitre 提交。
sklearn.naive_bayes
#
功能 为所有朴素贝叶斯分类器添加了
predict_joint_log_proba
方法。 #23683 由 Andrey Melnik 提交。改进 为
naive_bayes.BernoulliNB
、naive_bayes.ComplementNB
、naive_bayes.CategoricalNB
和naive_bayes.MultinomialNB
添加了一个新参数force_alpha
,允许用户将参数 alpha 设置为一个非常小的数(大于或等于 0),而该参数以前会自动更改为1e-10
。 #16747 由 @arka204 提交,#18805 由 @hongshaoyang 提交,#22269 由 Meekail Zain 提交。
sklearn.neighbors
#
新功能 新增函数
neighbors.sort_graph_by_row_values
,用于排序 CSR 稀疏图,使每行以递增值存储。这对于在各种估计器中使用预计算的稀疏距离矩阵时提高效率并避免EfficiencyWarning
非常有用。 #23139 由 Tom Dupre la Tour 贡献。效率
neighbors.NearestCentroid
更快且所需内存更少,因为它能更好地利用 CPU 缓存来计算预测。 #24645 由 Olivier Grisel 贡献。改进
neighbors.KernelDensity
的带宽参数现在支持使用 Scott 和 Silverman 估计方法进行定义。 #10468 由 Ruben 贡献,#22993 由 Jovan Stojanovic 贡献。改进
neighbors.NeighborsBase
现在支持 Minkowski 半度量(即当 \(0 < p < 1\) 且metric="minkowski"
时)用于algorithm="auto"
或algorithm="brute"
。 #24750 由 Rudresh Veerkhare 贡献修复
neighbors.NearestCentroid
现在在拟合时会抛出更具提示性的错误消息,而不是在预测时因低级别错误消息而失败。 #23874 由 Juan Gomez 贡献。修复
neighbors.KNeighborsTransformer
和neighbors.RadiusNeighborsTransformer
的n_jobs
参数默认设置为None
(原为1
)。 #24075 由 Valentin Laurent 贡献。改进
neighbors.LocalOutlierFactor
现在保留numpy.float32
输入的数据类型。 #22665 由 Julien Jerphanion 贡献。
sklearn.neural_network
#
修复
neural_network.MLPClassifier
和neural_network.MLPRegressor
总是暴露参数best_loss_
、validation_scores_
和best_validation_score_
。当early_stopping=True
时,best_loss_
设置为None
;当early_stopping=False
时,validation_scores_
和best_validation_score_
设置为None
。 #24683 由 Guillaume Lemaitre 贡献。
sklearn.pipeline
#
改进 当
pipeline.FeatureUnion
中的一个转换器为"passthrough"
时,现在可以使用pipeline.FeatureUnion.get_feature_names_out
。 #24058 由 Diederik Perdok 贡献改进
pipeline.FeatureUnion
类现在具有named_transformers
属性,用于按名称访问转换器。 #20331 由 Christopher Flynn 贡献。
sklearn.preprocessing
#
改进
preprocessing.FunctionTransformer
将始终尝试设置n_features_in_
和feature_names_in_
,而不管validate
参数如何。 #23993 由 Thomas Fan 贡献。修复
preprocessing.LabelEncoder
在transform
中正确编码 NaNs。 #22629 由 Thomas Fan 贡献。API 变更
preprocessing.OneHotEncoder
的sparse
参数现已弃用,并将在 1.4 版本中移除。请改用sparse_output
。 #24412 由 Rushil Desai 贡献。
sklearn.svm
#
API 变更
svm.NuSVR
、svm.SVR
和svm.OneClassSVM
的class_weight_
属性现已弃用。 #22898 由 Meekail Zain 贡献。
sklearn.tree
#
改进
tree.plot_tree
和tree.export_graphviz
现在使用小写x[i]
来表示特征i
。 #23480 由 Thomas Fan 贡献。
sklearn.utils
#
新功能 新模块公开了开发工具,用于在 scikit-learn 中发现估计器(即
utils.discovery.all_estimators
)、显示(即utils.discovery.all_displays
)和函数(即utils.discovery.all_functions
)。 #21469 由 Guillaume Lemaitre 贡献。改进
utils.extmath.randomized_svd
现在接受参数lapack_svd_driver
,用于指定随机 SVD 算法内部确定性 SVD 所使用的 lapack 驱动。 #20617 由 Srinath Kailasa 贡献改进
utils.validation.column_or_1d
现在接受dtype
参数以指定y
的数据类型。 #22629 由 Thomas Fan 贡献。改进
utils.extmath.cartesian
现在接受不同dtype
的数组,并将输出转换为最宽松的dtype
。 #25067 由 Guillaume Lemaitre 贡献。修复
utils.multiclass.type_of_target
现在能正确处理稀疏矩阵。 #14862 由 Léonard Binet 贡献。修复 当估计器类是
get_params
中的一个值时,HTML 表示不再报错。 #24512 由 Thomas Fan 贡献。修复
utils.estimator_checks.check_estimator
现在正确考虑了requires_positive_X
标签。 #24667 由 Thomas Fan 贡献。修复
utils.check_array
现在支持包含pd.NA
的 Pandas Series,通过抛出更清晰的错误消息或返回兼容的ndarray
。 #25080 由 Thomas Fan 贡献。API 变更
utils.extmath.density
的额外关键字参数已弃用,并将在 1.4 版本中移除。 #24523 由 Mia Bajic 贡献。
代码和文档贡献者
感谢自 1.1 版本以来为项目维护和改进做出贡献的所有人,包括
2357juan, 3lLobo, Adam J. Stewart, Adam Kania, Adam Li, Aditya Anulekh, Admir Demiraj, adoublet, Adrin Jalali, Ahmedbgh, Aiko, Akshita Prasanth, Ala-Na, Alessandro Miola, Alex, Alexandr, Alexandre Perez-Lebel, Alex Buzenet, Ali H. El-Kassas, aman kumar, Amit Bera, András Simon, Andreas Grivas, Andreas Mueller, Andrew Wang, angela-maennel, Aniket Shirsat, Anthony22-dev, Antony Lee, anupam, Apostolos Tsetoglou, Aravindh R, Artur Hermano, Arturo Amor, as-90, ashah002, Ashwin Mathur, avm19, Azaria Gebremichael, b0rxington, Badr MOUFAD, Bardiya Ak, Bartłomiej Gońda, BdeGraaff, Benjamin Bossan, Benjamin Carter, berkecanrizai, Bernd Fritzke, Bhoomika, Biswaroop Mitra, Brandon TH Chen, Brett Cannon, Bsh, cache-missing, carlo, Carlos Ramos Carreño, ceh, chalulu, Changyao Chen, Charles Zablit, Chiara Marmo, Christian Lorentzen, Christian Ritter, Christian Veenhuis, christianwaldmann, Christine P. Chai, Claudio Salvatore Arcidiacono, Clément Verrier, crispinlogan, Da-Lan, DanGonite57, Daniela Fernandes, DanielGaerber, darioka, Darren Nguyen, davidblnc, david-cortes, David Gilbertson, David Poznik, Dayne, Dea María Léon, Denis, Dev Khant, Dhanshree Arora, Diadochokinetic, diederikwp, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, drewhogg, Duarte OC, Dwight Lindquist, Eden Brekke, Edern, Edoardo Abati, Eleanore Denies, EliaSchiavon, Emir, ErmolaevPA, Fabrizio Damicelli, fcharras, Felipe Siola, Flynn, francesco-tuveri, Franck Charras, ftorres16, Gael Varoquaux, Geevarghese George, genvalen, GeorgiaMayDay, Gianr Lazz, Hleb Levitski, Glòria Macià Muñoz, Guillaume Lemaitre, Guillem García Subies, Guitared, gunesbayir, Haesun Park, Hansin Ahuja, Hao Chun Chang, Harsh Agrawal, harshit5674, hasan-yaman, henrymooresc, Henry Sorsky, Hristo Vrigazov, htsedebenham, humahn, i-aki-y, Ian Thompson, Ido M, Iglesys, Iliya Zhechev, Irene, ivanllt, Ivan Sedykh, Jack McIvor, jakirkham, JanFidor, Jason G, Jérémie du Boisberranger, Jiten Sidhpura, jkarolczak, João David, JohnathanPi, John Koumentis, John P, John Pangas, johnthagen, Jordan Fleming, Joshua Choo Yun Keat, Jovan Stojanovic, Juan Carlos Alfaro Jiménez, juanfe88, Juan Felipe Arias, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kanishk Sachdev, Kanissh, Kaushik Amar Das, Kendall, Kenneth Prabakaran, Kento Nozawa, kernc, Kevin Roice, Kian Eliasi, Kilian Kluge, Kilian Lieret, Kirandevraj, Kraig, krishna kumar, krishna vamsi, Kshitij Kapadni, Kshitij Mathur, Lauren Burke, Léonard Binet, lingyi1110, Lisa Casino, Logan Thomas, Loic Esteve, Luciano Mantovani, Lucy Liu, Maascha, Madhura Jayaratne, madinak, Maksym, Malte S. Kurz, Mansi Agrawal, Marco Edward Gorelli, Marco Wurps, Maren Westermann, Maria Telenczuk, Mario Kostelac, martin-kokos, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, mauroantonioserrano, Max Halford, Maxi Marufo, Maxim Smolskiy, Maxwell, m. bou, Meekail Zain, Mehgarg, mehmetcanakbay, Mia Bajić, Michael Flaks, Michael Hornstein, Michel de Ruiter, Michelle Paradis, Mikhail Iljin, Misa Ogura, Moritz Wilksch, mrastgoo, Naipawat Poolsawat, Naoise Holohan, Nass, Nathan Jacobi, Nawazish Alam, Nguyễn Văn Diễn, Nicola Fanelli, Nihal Thukarama Rao, Nikita Jare, nima10khodaveisi, Nima Sarajpoor, nitinramvelraj, NNLNR, npache, Nwanna-Joseph, Nymark Kho, o-holman, Olivier Grisel, Olle Lukowski, Omar Hassoun, Omar Salman, osman tamer, ouss1508, Oyindamola Olatunji, PAB, Pandata, partev, Paulo Sergio Soares, Petar Mlinarić, Peter Jansson, Peter Steinbach, Philipp Jung, Piet Brömmel, Pooja M, Pooja Subramaniam, priyam kakati, puhuk, Rachel Freeland, Rachit Keerti Das, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Ravi Makhija, Rehan Guha, Reshama Shaikh, Richard Klima, Rob Crockett, Robert Hommes, Robert Juergens, Robin Lenz, Rocco Meli, Roman4oo, Ross Barnowski, Rowan Mankoo, Rudresh Veerkhare, Rushil Desai, Sabri Monaf Sabri, Safikh, Safiuddin Khaja, Salahuddin, Sam Adam Day, Sandra Yojana Meneses, Sandro Ephrem, Sangam, SangamSwadik, SANJAI_3, SarahRemus, Sashka Warner, SavkoMax, Scott Gigante, Scott Gustafson, Sean Atukorala, sec65, SELEE, seljaks, Shady el Gewily, Shane, shellyfung, Shinsuke Mori, Shiva chauhan, Shoaib Khan, Shogo Hida, Shrankhla Srivastava, Shuangchi He, Simon, sonnivs, Sortofamudkip, Srinath Kailasa, Stanislav (Stanley) Modrak, Stefanie Molin, stellalin7, Stéphane Collot, Steven Van Vaerenbergh, Steve Schmerler, Sven Stehle, Tabea Kossen, TheDevPanda, the-syd-sre, Thijs van Weezel, Thomas Bonald, Thomas Germer, Thomas J. Fan, Ti-Ion, Tim Head, Timofei Kornev, toastedyeast, Tobias Pitters, Tom Dupré la Tour, tomiock, Tom Mathews, Tom McTiernan, tspeng, Tyler Egashira, Valentin Laurent, Varun Jain, Vera Komeyer, Vicente Reyes-Puerta, Vinayak Mehta, Vincent M, Vishal, Vyom Pathak, wattai, wchathura, WEN Hao, William M, x110, Xiao Yuan, Xunius, yanhong-zhao-ef, Yusuf Raji, Z Adil Khwaja, zeeshan lone