版本 1.2#
有关此版本主要亮点的简短说明,请参阅 scikit-learn 1.2 的发行亮点。
变更日志图例
主要功能 以前无法实现的重要功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多的计算或内存。
增强 各种各样的次要改进。
修复 以前未按文档说明或合理预期工作的内容现在应该可以工作了。
API 变更 您需要更改代码才能在将来获得相同的效果;或者某个功能将在将来被移除。
版本 1.2.2#
2023 年 3 月
变更日志#
sklearn.base
#
修复 当使用
set_output(transform="pandas")
时,base.TransformerMixin
如果 转换 输出已经是 DataFrame,则会保留索引。#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
中的一个bug,其中isotonic.IsotonicRegression.predict
在全局配置设置transform_output="pandas"
时会返回一个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
中的一个bug,现在它可以根据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
数组。 编码为字节的预定义类别将不再与编码为字符串的 `X` 一起使用。 #25174 由 Tim Head 完成。
影响所有模块的更改#
修复 删除内部使用邻居搜索方法的估计器的虚假警告。 #25129 由 Julien Jerphanion 完成。
修复 修复了一个错误,该错误在使用
n_jobs > 1
的估计器中忽略了当前配置。 此错误是由joblib
的辅助线程分派的 task 触发的,因为sklearn.get_config
用于访问空线程局部配置,而不是从首先调用joblib.Parallel
的线程可见的配置。 #25363 由 Guillaume Lemaitre 完成。
变更日志#
sklearn.base
#
修复 修复了
BaseEstimator.__getstate__
中的一个回归,该回归在使用 Python 3.11 时会阻止某些估计器被pickle。 #25188 由 Benjamin Bossan 完成。修复 继承自
base.TransformerMixin
只有在类本身定义transform
方法时才会包装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
正确支持全是数值型数据的 DataFrame。 #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.SGDRegressor
和linear_model.SGDClassifier
使用的linear_model._sgd_fast._plain_sgd
中的提前停止条件已更改。旧条件没有区分训练集和验证集,并导致误差容限缩放过度。此问题已在 #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 优化原语,所有估计器中的有限性检查(检测 NaN 和无限值)对于 float32 数据现在效率更高。#23446 由 Meekail Zain 完成
增强 通过使用更高效的“停止于首次第二次扫描”算法,所有估计器中的有限性检查(检测 NaN 和无限值)现在速度更快。#23197 由 Meekail Zain 完成
增强 已为所有距离度量以及 float32 和 float64 数据集添加了对密集型和稀疏型数据集对组合的支持,或者提高了以下估计器的性能
#23604 和 #23585 由 Julien Jerphanion、Olivier Grisel 和 Thomas Fan 完成,#24556 由 Vincent Maladière 完成。
修复 系统地检查文档代码示例中使用的 datasets tarballs 的 sha256 校验和。#24617 由 Olivier Grisel 和 Thomas Fan 完成。感谢 Sim4n6 的报告。
变更日志#
sklearn.base
#
增强 引入了
base.ClassNamePrefixFeaturesOutMixin
混合类,它为常见的转换器用例定义了 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 Maladiere 完成。增强
cluster.OPTICS
的predict
和fit_predict
方法现在接受稀疏数据类型作为输入数据。 #14736 由 Hunt Zhan 完成, #20802 由 Brandon Pokorny 完成, #22965 由 Meekail Zain 完成。增强
cluster.Birch
现在保留numpy.float32
输入的数据类型。 #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 完成。增强 现在允许在
datasets.load_svmlight_file
和datasets.load_svmlight_files
中使用路径状对象作为路径,例如使用 pathlib 创建的对象。 #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
。whiten_solver
默认值为svd
,尽管在num_features > num_samples
的情况下,eigh
可能更快且更节省内存。 #11860 由 Pierre Ablin 完成, #22527 由 Meekail Zain 和 Thomas Fan 完成。增强
decomposition.LatentDirichletAllocation
现在保留numpy.float32
输入的数据类型。 #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 完成。修复 只在
fit
中验证参数,而不是在discriminant_analysis.QuadraticDiscriminantAnalysis
的__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.HistGradientBoostingClassifier
现在除了之前支持的数组类型格式外,还可以接受其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
中的一个 bug,其中如果目标y
是连续的或离散的,则X
中的连续特征应该独立地缩放到单位方差。#24747 由 Guillaume Lemaitre 完成。
sklearn.gaussian_process
#
修复 修复了
gaussian_process.kernels.Matern
在nu=0.5
时针对 PyPy(以及可能其他非 CPython 解释器)的梯度计算。#24245 由 Loïc Estève 完成。修复 如果使用自定义内核,并且该内核的
diag
方法返回输入 X 的一部分,则gaussian_process.GaussianProcessRegressor
的fit
方法不会修改输入 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
输入的数据类型。#24317 由Tim Head <betatim>
完成。增强
kernel_approximation.SkewedChi2Sampler
现在保留numpy.float32
输入的数据类型。#24350 由 Rahil Parikh 完成。增强
kernel_approximation.RBFSampler
现在接受参数gamma
的'scale'
选项。#24755 由 Gleb 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
添加了使用标准化应力值选项。通过将新的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
输入的数据类型。 #24714 由 Rahil Parikh 完成。API变更 为
manifold.MDS
和manifold.smacof
中的normalized_stress
参数添加了"auto"
选项。请注意,normalized_stress
仅对非度量MDS有效,因此当metric=False
时,"auto"
选项启用normalized_stress
,而当metric=True
时禁用它。"auto"
将在1.4版本中成为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
作为参数y_true
的输入,用于metrics.label_ranking_average_precision_score
度量。 #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 值或np.inf
值,而不是对于边界 (0 或 1) 预测值的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
中的 NaN 值。 #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 Lindstrom,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,Gleb 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,maximeSaur,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 Barnow,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