版本 1.3#
有关本次发布主要亮点简要描述,请参阅 scikit-learn 1.3 版本发布亮点 。
Legend for changelogs
Major Feature something big that you couldn’t do before.
Feature something that you couldn’t do before.
Efficiency an existing feature now may not require as much computation or memory.
Enhancement a miscellaneous minor improvement.
Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.
API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.
版本 1.3.2#
2023年10月
更新日志#
sklearn.datasets
#
Fix 所有数据集获取器现在接受
data_home
为任何实现os.PathLike
接口的对象,例如pathlib.Path
。 #27468 由 Yao Xiao 贡献。
sklearn.decomposition
#
Fix 修复了
decomposition.KernelPCA
中的一个错误,通过强制内部preprocessing.KernelCenterer
的输出为默认数组。当使用 arpack 求解器时,它期望一个具有dtype
属性的数组。 #27583 由 Guillaume Lemaitre 贡献。
sklearn.metrics
#
Fix 修复了在并行循环中使用
zero_division=np.nan
的指标(例如precision_score
)的错误,其中np.nan
的单例在子进程中会有所不同。 #27573 由 Guillaume Lemaitre 贡献。
sklearn.tree
#
Fix 修复了决策树 pickle 文件中通过未初始化内存泄露数据的错误,并使这些文件的生成具有确定性。 #27580 由 Loïc Estève 贡献。
版本 1.3.1#
2023年9月
变更模型#
以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或在随机抽样过程中的变化。
- Fix 使用 solver='sparse_cg'
的 Ridge 模型在 scipy>=1.12 下可能会有稍微不同的结果,这是由于 scipy 求解器底层的变化(更多详情请参见 scipy#18488 )
#26814 由 Loïc Estève 提交
影响所有模块的更改#
Fix
set_output
API 现在可以正确处理列表输入。#27044 由 Thomas Fan 提交。
变更日志#
sklearn.calibration
#
Fix
calibration.CalibratedClassifierCV
现在可以处理产生较大预测分数的模型。之前它在数值上不稳定。 #26913 由 Omar Salman 提交。
sklearn.cluster
#
Fix
cluster.BisectingKMeans
在预测与用于拟合模型的数据不同尺度的数据时可能会崩溃。 #27167 由 Olivier Grisel 提交。Fix
cluster.BisectingKMeans
现在可以处理只有一个特征的数据。 #27243 由 Jérémie du Boisberranger 提交。
sklearn.cross_decomposition
#
Fix
cross_decomposition.PLSRegression
现在会自动展平predict
的输出,如果用一维y
拟合的话。 #26602 由 Yao Xiao 提交。
sklearn.ensemble
#
Fix 修复了
ensemble.AdaBoostClassifier
中使用algorithm="SAMME"
时每个弱学习器的决策函数应该是对称的(即样本的分数总和应该为零)的错误。 #26521 由 Guillaume Lemaitre 提交。
sklearn.feature_selection
#
Fix
feature_selection.mutual_info_regression
现在可以正确计算当X
是整数类型时的结果。 #26748 由 Yao Xiao 提交。
sklearn.impute
#
Fix
impute.KNNImputer
现在在transform
过程中正确添加缺失指示列,当add_indicator
设置为True
并且在fit
过程中观察到缺失值时。#26600 由 Shreesha Kumar Bhat 贡献。
sklearn.metrics
#
Fix 与
metrics.get_scorer
一起使用的评分器现在能够正确处理多标签指示矩阵。 #27002 由 Guillaume Lemaitre 贡献。
sklearn.mixture
#
Fix 从用户提供的
precisions_init
初始化mixture.GaussianMixture
对于covariance_type
为full
或tied
时存在问题,现已修复。 #26416 由 Yang Tao 贡献。
sklearn.neighbors
#
Fix
neighbors.KNeighborsClassifier.predict
不再对pandas.DataFrames
输入引发异常。 #26772 由 Jérémie du Boisberranger 贡献。Fix 重新引入
sklearn.neighbors.BallTree.valid_metrics
和sklearn.neighbors.KDTree.valid_metrics
作为公共类属性。 #26754 由 Julien Jerphanion 贡献。Fix
sklearn.model_selection.HalvingRandomSearchCV
不再在param_distributions
参数输入为字典列表时引发异常。 #26893 由 Stefanie Senger 贡献。Fix 基于邻居的估计器现在在
metric="minkowski"
且度量参数p
在范围0 < p < 1
内时,无论X
的dtype
如何,都能正确工作。 #26760 由 Shreesha Kumar Bhat 贡献。
sklearn.preprocessing
#
Fix
preprocessing.LabelEncoder
正确接受y
作为关键字参数。#26940 由 Thomas Fan 贡献。Fix
preprocessing.OneHotEncoder
在sparse_output=True
且输出配置为 pandas 时显示更具信息性的错误消息。 #26931 由 Thomas Fan 贡献。
sklearn.tree
#
Fix
tree.plot_tree
现在接受class_names=True
如文档所述。 #26903 由 Thomas Roehr 提供Fix
tree.plot_tree
的feature_names
参数现在接受任何类型的 类似数组的对象,而不仅仅是列表。#27292 由 Rahil Parikh 提供。
版本 1.3.0#
2023年6月
更改的模型#
以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或随机抽样过程的变化。
Enhancement
multiclass.OutputCodeClassifier.predict
现在使用更高效的成对距离缩减。因此,打破平局的策略不同,预测的标签可能也会不同。 #25196 由 Guillaume Lemaitre 提供。Enhancement
decomposition.DictionaryLearning
的fit_transform
方法更高效,但在transform_algorithm
与fit_algorithm
不同且迭代次数较少时,可能会产生与之前版本不同的结果。 #24871 由 Omar Salman 提供。Enhancement
sample_weight
参数现在将用于cluster.KMeans
、cluster.BisectingKMeans
和cluster.MiniBatchKMeans
的质心初始化。 这一更改将破坏向后兼容性,因为从相同的随机种子生成的数字将会不同。 #25752 由 Gleb Levitski 、 Jérémie du Boisberranger 、 Guillaume Lemaitre 提供。Fix 在
decomposition.NMF
和decomposition.MiniBatchNMF
的fit
和transform
步骤中,对W
和H
矩阵中的小值进行更一致的处理,这可能会产生与之前版本不同的结果。
版本更新: #25438 由 Yotam Avidar-Constantini 提交。
Fix
decomposition.KernelPCA
在gamma
为None
时,通过inverse_transform
可能产生不同的结果。现在它会正确选择为拟合数据特征数的倒数1/n_features
,而之前可能会错误地选择为传递给inverse_transform
的数据特征数的倒数。新增了一个属性gamma_
,用于揭示每次调用核函数时实际使用的gamma
值。 #26337 由 Yao Xiao 提交。
显示变更#
Enhancement
model_selection.LearningCurveDisplay
默认显示训练和测试曲线。你可以设置score_type="test"
以保持过去的行为。 #25120 由 Guillaume Lemaitre 提交。Fix
model_selection.ValidationCurveDisplay
现在接受传递一个列表给param_range
参数。 #27311 由 Arturo Amor 提交。
影响所有模块的变更#
Enhancement 以下类的
get_feature_names_out
方法现在会在实例未拟合时引发NotFittedError
。这确保了所有具有get_feature_names_out
方法的估计器中的错误一致性。NotFittedError
显示一个信息性的消息,要求使用适当的参数拟合实例。#25294 , #25308 , #25291 , #25367 , #25402 , 由 John Pangas , Rahil Parikh , 和 Alex Buzenet 贡献。
Enhancement 为计算平方欧氏距离(有时紧随融合归约操作)添加了一个多线程的 Cython 例程,适用于由稀疏 CSR 矩阵和密集 NumPy 组成的一对数据集。
这可以提高以下函数和估计器的性能:
sklearn.semi_supervised.LabelSpreading
性能提升的一个典型例子是当传递一个稀疏的CSR矩阵给依赖于密集NumPy表示来存储其拟合参数(或反之)的估计器的
predict
或transform
方法时。例如,
sklearn.neighbors.NearestNeighbors.kneighbors
现在在这种常见情况下在普通笔记本电脑上速度提高了2倍。#25044 由 Julien Jerphanion 贡献。
Enhancement 所有内部依赖于OpenMP多线程(通过Cython)的估计器现在默认使用与物理核心数相等的线程数(而不是逻辑核心数)。过去,我们观察到在SMT主机上使用与逻辑核心数相等的线程有时会根据算法和数据形状导致严重的性能问题。请注意,仍然可以手动调整OpenMP使用的线程数,如:ref:
parallelism
中所述。
实验性 / 开发中#
Major Feature 元数据路由 的相关基础方法包含在此版本中。此功能仅可通过
enable_metadata_routing
功能标志启用,可以使用sklearn.set_config
和sklearn.config_context
启用。目前,此功能主要对第三方开发者有用,以便为元数据路由准备其代码库,我们强烈建议他们也将其隐藏在同一功能标志后面,而不是默认启用。
#24027 由 Adrin Jalali , Benjamin Bossan , 和 Omar Salman 贡献。
更新日志#
Feature 在函数
sklearn.set_config
和上下文管理器sklearn.config_context
中添加了一个新选项skip_parameter_validation
, 允许跳过传递给估计器和公共函数的参数验证。这可以加快代码速度,但应谨慎使用,因为设置无效参数时可能导致意外行为或引发难以理解的错误消息。 #25815 由 Jérémie du Boisberranger 贡献。
sklearn.base
#
Feature 现在可以使用
__sklearn_clone__
协议来覆盖base.clone
的默认行为。#24568 由 Thomas Fan 贡献。Fix
base.TransformerMixin
现在在transform
返回命名元组时保留其类。#26121 由 Thomas Fan 贡献。
sklearn.calibration
#
Fix
calibration.CalibratedClassifierCV
现在不强制fit_params
的样本对齐。#25805 由 Adrin Jalali 贡献。
sklearn.cluster
#
Major Feature 添加了
cluster.HDBSCAN
,一种现代的基于密度的层次聚类算法。类似于cluster.OPTICS
,它可以被视为一种
对:class:cluster.DBSCAN
的泛化,允许进行层次聚类而非平面聚类,然而它与:class:cluster.OPTICS
的方法有所不同。该算法在超参数值方面非常稳健,并且可以在不需要过多调整的情况下广泛应用于各种数据。
此实现是对 scikit-learn-contrib/hdbscan 中原始HDBSCAN实现的改编,由:user:Leland McInnes <lmcinnes>
等人完成。
#26385 由 Meekail Zain 提交。
Enhancement
sample_weight
参数现在将用于:class:cluster.KMeans
、cluster.BisectingKMeans
和:class:cluster.MiniBatchKMeans
的质心初始化。这一更改将破坏向后兼容性,因为从相同的随机种子生成的数字将不同。#25752 由 Gleb Levitski 、Jérémie du Boisberranger 、Guillaume Lemaitre 提交。Fix
cluster.KMeans
、cluster.MiniBatchKMeans
和:func:cluster.k_means
现在正确处理了n_init="auto"
和init
为数组类型的组合,在这种情况下运行一次初始化。#26657 由 Binesh Bannerjee 提交。API Change
predict
方法中的sample_weight
参数在:meth:cluster.KMeans.predict
和:meth:cluster.MiniBatchKMeans.predict
中已弃用,并将在v1.5中移除。#25251 由 Gleb Levitski 提交。API Change
cluster.FeatureAgglomeration.inverse_transform
中的Xred
参数已重命名为Xt
,并将在v1.5中移除。#26503 由 Adrin Jalali 提交。
sklearn.compose
#
Fix 当:class:
compose.ColumnTransformer
的单个转换器输出带有索引的pandas数据帧时,会引发一个信息性的错误。
不一致,并且输出配置为pandas。 #26286 由 Thomas Fan 提交。
Fix
compose.ColumnTransformer
在调用set_output
时正确设置了余数的输出。 #26323 由 Thomas Fan 提交。
sklearn.covariance
#
Fix 允许在
covariance.GraphicalLasso
中使用alpha=0
,与covariance.graphical_lasso
保持一致。 #26033 由 Genesis Valencia 提交。Fix
covariance.empirical_covariance
现在在输入不合适时给出信息性的错误消息。 #26108 由 Quentin Barthélemy 提交。API Change 在1.3版本中弃用
covariance.graphical_lasso
中的cov_init
参数,因为该参数没有效果。将在1.5版本中移除。 #26033 由 Genesis Valencia 提交。API Change 在
covariance.GraphicalLasso
和covariance.GraphicalLassoCV
中添加costs_
拟合属性。 #26033 由 Genesis Valencia 提交。API Change 在
covariance.GraphicalLasso
中添加covariance
参数。 #26033 由 Genesis Valencia 提交。API Change 在
covariance.GraphicalLasso
、covariance.graphical_lasso
和covariance.GraphicalLassoCV
中添加eps
参数。 #26033 由 Genesis Valencia 提交。
sklearn.datasets
#
Enhancement 允许在使用pandas解析器时,通过
datasets.fetch_openml
中的参数read_csv_kwargs
覆盖用于打开ARFF文件的参数。 #26433 由 Guillaume Lemaitre 提交。Fix
datasets.fetch_openml
在as_frame=True
且parser="liac-arff"
时返回改进的数据类型。 #26386 由 Thomas Fan 提交。Fix 根据ARFF规范,仅标记
"?"
现在被视为打开使用datasets.fetch_openml
获取的ARFF文件时的缺失值。
pandas解析器。参数 read_csv_kwargs
允许覆盖此行为。
#26551 由 Guillaume Lemaitre 提供。
Fix
datasets.fetch_openml
将一致使用np.nan
作为缺失标记 与解析器"pandas"
和"liac-arff"
。 #26579 由 Guillaume Lemaitre 提供。API Change
datasets.make_sparse_coded_signal
的data_transposed
参数 已弃用,并将在 v1.5 中移除。 #25784 由 @Jérémie du Boisberranger 提供。
sklearn.decomposition
#
Efficiency
decomposition.MiniBatchDictionaryLearning
和decomposition.MiniBatchSparsePCA
现在对于小批量大小更快, 通过避免重复验证。 #25490 由 Jérémie du Boisberranger 提供。Enhancement
decomposition.DictionaryLearning
现在接受参数callback
,与函数decomposition.dict_learning
一致。 #24871 由 Omar Salman 提供。Fix 在
decomposition.NMF
和decomposition.MiniBatchNMF
的fit
和transform
步骤中, 对W
和H
矩阵中的小值进行更一致的处理,这可能会产生与以前版本不同的结果。 #25438 由 Yotam Avidar-Constantini 提供。API Change
decomposition.NMF.inverse_transform
和decomposition.MiniBatchNMF.inverse_transform
中的W
参数 已重命名为Xt
,并将在 v1.5 中移除。 #26503 由 Adrin Jalali 提供。
sklearn.discriminant_analysis
#
Enhancement
discriminant_analysis.LinearDiscriminantAnalysis
现在 支持 PyTorch 。详情请参阅 数组 API 支持(实验性) 。 #25956 由 Thomas Fan 提供。
sklearn.ensemble
#
Feature
ensemble.HistGradientBoostingRegressor
现在支持 通过loss="gamma"
使用 Gamma 偏差损失。 使用 Gamma 偏差作为损失函数在处理偏斜分布、严格正值的目标时非常方便。 #22409 由 Christian Lorentzen 贡献。Feature 通过向
ensemble.RandomForestClassifier
、ensemble.RandomForestRegressor
、ensemble.ExtraTreesClassifier
和ensemble.ExtraTreesRegressor
传递可调用对象, 计算自定义的袋外分数。 #25177 由 Tim Head 贡献。Feature
ensemble.GradientBoostingClassifier
现在通过oob_scores_
或oob_score_
属性 暴露袋外分数。 #24882 由 Ashwin Mathur 贡献。Efficiency
ensemble.IsolationForest
的预测时间现在更快 (通常快 8 倍或更多)。内部实现中,估计器现在在fit
时预计算每棵树的决策路径长度。 因此,无法加载使用 scikit-learn 1.2 训练的估计器在 scikit-learn 1.3 中进行预测: 需要使用 scikit-learn 1.3 重新训练。 #25186 由 Felipe Breve Siola 贡献。Efficiency 使用
warm_start=True
的ensemble.RandomForestClassifier
和ensemble.RandomForestRegressor
现在仅在后续fit
调用中实际增加n_estimators
时 重新计算袋外分数。 #26318 由 Joshua Choo Yun Keat 贡献。Enhancement
ensemble.BaggingClassifier
和ensemble.BaggingRegressor
暴露了底层估计器的allow_nan
标签。 #25506 由 Thomas Fan 贡献。Fix
ensemble.RandomForestClassifier.fit
当max_samples
为浮点数且round(n_samples * max_samples) < 1
时,设置max_samples = 1
。 #25601 由 Jan Fidor 贡献。Fix
ensemble.IsolationForest.fit
在调用时不再对 pandas 数据帧中非"auto"
的contamination
警告缺失特征名称。
Fix
ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
一致地将分类特征的负值视为缺失值,遵循 LightGBM 和 pandas 的约定。 #25629 由 Thomas Fan 提交。Fix 修复了
ensemble.AdaBoostClassifier
和ensemble.AdaBoostRegressor
中base_estimator
的弃用问题,该问题在 #23819 中引入。 #26242 由 Marko Toplak 提交。
sklearn.exceptions
#
Feature 添加了
exceptions.InconsistentVersionWarning
,当使用与序列化时版本不一致的 scikit-learn 版本反序列化 scikit-learn 估计器时会引发此警告。 #25297 由 Thomas Fan 提交。
sklearn.feature_extraction
#
API Change
feature_extraction.image.PatchExtractor
现在遵循 scikit-learn 的转换器 API。该类被定义为无状态转换器,这意味着在调用transform
之前不需要调用fit
。参数验证仅在fit
时进行。 #24230 由 Guillaume Lemaitre 提交。
sklearn.feature_selection
#
Enhancement
sklearn.feature_selection
中的所有选择器在转换时将保留 DataFrame 的数据类型。 #25102 由 Thomas Fan 提交。Fix
feature_selection.SequentialFeatureSelector
的cv
参数现在支持生成器。 #25973 由Yao Xiao <Charlie-XIAO>
提交。
sklearn.impute
#
Enhancement 为
impute.IterativeImputer
添加了fill_value
参数。 #25232 由 Thijs van Weezel 提交。Fix
impute.IterativeImputer
现在正确地保留了 Pandas
当 set_config(transform_output="pandas")
时的索引。#26454 由 Thomas Fan 提交。
sklearn.inspection
#
Enhancement 在
inspection.partial_dependence
和inspection.PartialDependenceDisplay.from_estimator
中增加了对sample_weight
的支持。这允许在我们进行检查的网格的每个值上进行加权平均。该选项仅在method
设置为brute
时可用。#25209 和 #26644 由 Carlo Lemos 提交。API Change
inspection.partial_dependence
返回一个包含新键grid_values
的utils.Bunch
。values
键已被弃用,取而代之的是grid_values
,并且values
键将在 1.5 版本中移除。#21809 和 #25732 由 Thomas Fan 提交。
sklearn.kernel_approximation
#
Fix
kernel_approximation.AdditiveChi2Sampler
现在是状态无关的。sample_interval_
属性已被弃用,并将在 1.5 版本中移除。#25190 由 Vincent Maladière 提交。
sklearn.linear_model
#
Efficiency 当
sample_weight=None
时避免数据缩放,以及其他不必要的数据复制和意外的密集到稀疏数据转换在linear_model.LinearRegression
中。#26207 由 Olivier Grisel 提交。Enhancement
linear_model.SGDClassifier
、linear_model.SGDRegressor
和linear_model.SGDOneClassSVM
现在保留numpy.float32
的数据类型。#25587 由 Omar Salman 提交。Enhancement 在
linear_model.ARDRegression
中包含了n_iter_
属性,以暴露达到停止准则所需的实际迭代次数。#25697 由 John Pangas 提交。Fix 使用更稳健的准则来检测
linear_model.RANSACRegressor
的收敛性。#25697 由 John Pangas 提交。
linear_model.LogisticRegression
在線性可分的問題上使用 penalty="l1"
和 solver="liblinear"
。
#25214 由 Tom Dupre la Tour 提交。
Fix 修復了在調用
fit
時,linear_model.LogisticRegression
使用solver="newton-cholesky"
和max_iter=0
導致的崩潰問題,該問題在首次參數更新前未能檢查模型狀態。 #26653 由 Olivier Grisel 提交。API Change 在
linear_model.BayesianRidge
和linear_model.ARDRegression
中棄用n_iter
,改用max_iter
。n_iter
將在 scikit-learn 1.5 中移除。此更改使這些估計器與其他估計器保持一致。 #25697 由 John Pangas 提交。
sklearn.manifold
#
Fix
manifold.Isomap
現在在set_config(transform_output="pandas")
時正確保留了 Pandas 索引。 #26454 由 Thomas Fan 提交。
sklearn.metrics
#
Feature 在多個分類指標中添加了
zero_division=np.nan
:metrics.precision_score
,metrics.recall_score
,metrics.f1_score
,metrics.fbeta_score
,metrics.precision_recall_fscore_support
,metrics.classification_report
。當zero_division=np.nan
且存在零除法時,該指標未定義並從平均值中排除。在不進行平均的情況下,返回值為np.nan
。 #25531 由 Marc Torrellas Socastro 提交。Feature
metrics.average_precision_score
現在支持多類別情況。 #17388 由 Geoffrey Bolmier 和 #24769 由 Ashwin Mathur 提交。Efficiency 在
metrics.adjusted_mutual_info_score
中計算預期互信息的效率現在更高,當唯一標籤數量較大時,其內存使用量也減少了。 #25713 由 Kshitij Mathur 提交。 Guillaume Lemaitre , Omar Salman 和 Jérémie du Boisberranger .Enhancement
metrics.silhouette_samples
现在接受样本间稀疏矩阵对距离或特征数组。 #18723 由 Sahil Gupta 和 #24677 由 Ashwin Mathur .Enhancement 新增参数
drop_intermediate
到metrics.precision_recall_curve
,metrics.PrecisionRecallDisplay.from_estimator
,metrics.PrecisionRecallDisplay.from_predictions
, 该参数会丢弃一些次优阈值以创建更轻量的精确召回曲线。 #24668 由 @dberenbaum .Enhancement
metrics.RocCurveDisplay.from_estimator
和metrics.RocCurveDisplay.from_predictions
现在接受两个新关键词,plot_chance_level
和chance_level_kw
以绘制基线机会水平。 这条线在chance_level_
属性中暴露。 #25987 由 Yao Xiao .Enhancement
metrics.PrecisionRecallDisplay.from_estimator
和metrics.PrecisionRecallDisplay.from_predictions
现在接受两个新 关键词,plot_chance_level
和chance_level_kw
以绘制基线机会水平。 这条线在chance_level_
属性中暴露。 #26019 由 Yao Xiao .Fix
metrics.pairwise.manhattan_distances
现在支持只读稀疏数据集。 #25432 由 Julien Jerphanion .Fix 修复了
metrics.classification_report
,使得空输入将返回np.nan
。之前,”macro avg” 和weighted avg
会返回 例如f1-score=np.nan
和f1-score=0.0
,不一致。现在,它们 都返回np.nan
。 #25531 由 Marc Torrellas Socastro .Fix
metrics.ndcg_score
现在对长度为1的输入给出有意义的错误信息。
#25672 由 Lene Preuss 和 Wei-Chun Chu 贡献。
Fix
metrics.log_loss
在参数y_pred
的值未归一化时会发出警告,而不是在指标中实际归一化它们。从 1.5 开始,这将引发错误。 #25299 由 Omar Salman 贡献。Fix 在
metrics.roc_curve
中,使用阈值np.inf
而不是任意的max(y_score) + 1
。此阈值与 ROC 曲线点tpr=0
和fpr=0
相关联。 #26194 由 Guillaume Lemaitre 贡献。Fix 在使用 SciPy>=1.9 时,
'matching'
指标已被移除,以与不再支持'matching'
的scipy.spatial.distance
保持一致。 #26264 由 Barata T. Onggo 贡献。API Change
metrics.log_loss
的eps
参数已被弃用,并将在 1.5 中移除。#25299 由 Omar Salman 贡献。
sklearn.gaussian_process
#
Fix
gaussian_process.GaussianProcessRegressor
新增了一个参数n_targets
,用于在从先验分布采样时决定输出数量。 #23099 由 Zhehao Liu 贡献。
sklearn.mixture
#
Efficiency
mixture.GaussianMixture
现在更加高效,如果用户提供了权重、均值和精度,将跳过不必要的初始化。 #26021 由 Jiawei Zhang 贡献。
sklearn.model_selection
#
Major Feature 新增了类
model_selection.ValidationCurveDisplay
,允许通过model_selection.validation_curve
函数轻松绘制验证曲线。 #25120 由 Guillaume Lemaitre 贡献。API Change 类
model_selection.LearningCurveDisplay
中的参数log_scale
在 1.3 中已被弃用,
将在1.5版本中移除。默认比例可以通过直接在 ax
对象上设置来覆盖,否则将根据数据点的间距自动设置。
#25120 由 Guillaume Lemaitre 提交。
Enhancement
model_selection.cross_validate
接受一个新的参数return_indices
,用于返回每个交叉验证拆分的训练-测试索引。 #25659 由 Guillaume Lemaitre 提交。
sklearn.multioutput
#
Fix
getattr
在multioutput.MultiOutputRegressor.partial_fit
和multioutput.MultiOutputClassifier.partial_fit
上现在会正确地抛出一个AttributeError
,如果在调用fit
之前执行。 #26333 由 Adrin Jalali 提交。
sklearn.naive_bayes
#
Fix
naive_bayes.GaussianNB
在提供的sample_weight
将问题简化为单个类别时,不会再引发ZeroDivisionError
。 #24140 由 Jonathan Ohayon 和 Chiara Marmo 提交。
sklearn.neighbors
#
Enhancement
neighbors.KNeighborsClassifier.predict
和neighbors.KNeighborsClassifier.predict_proba
的性能在n_neighbors
较大且algorithm="brute"
使用非欧几里得度量时得到了提升。 #24076 由 Meekail Zain 和 Julien Jerphanion 提交。Fix 移除
neighbors.BallTree
中对KulsinskiDistance
的支持。这种不相似性不是度量标准,无法被 BallTree 支持。 #25417 由 Guillaume Lemaitre 提交。API Change 对
neighbors.NearestNeighbors
中非euclidean
和manhattan
度量以及可调用对象的支持已弃用,并将在1.5版本中移除。 #24083 由 Valentin Laurent 提交。
sklearn.neural_network
#
Fix
neural_network.MLPRegressor
和neural_network.MLPClassifier
在warm_start=True
时报告正确的n_iter_
。它对应于当前调用fit
时执行的迭代次数,而不是自估计器初始化以来执行的总迭代次数。 #25443 由 Marvin Krawutschke 提交。
sklearn.pipeline
#
Feature
pipeline.FeatureUnion
现在可以使用索引表示法(例如feature_union["scalar"]
)按名称访问转换器。#25093 由 Thomas Fan 提交。Feature
pipeline.FeatureUnion
现在可以访问feature_names_in_
属性,如果.fit
期间看到的X
值具有columns
属性且所有列都是字符串,例如当X
是pandas.DataFrame
时。#25220 由 Ian Thompson 提交。Fix
pipeline.Pipeline.fit_transform
现在如果管道的最后一步不支持fit_transform
,则会引发AttributeError
。#26325 由 Adrin Jalali 提交。
sklearn.preprocessing
#
Major Feature 引入
preprocessing.TargetEncoder
,这是一种基于目标均值的条件类别编码。#25334 由 Thomas Fan 提交。Feature
preprocessing.OrdinalEncoder
现在支持将不频繁的类别分组为一个特征。通过指定如何选择不频繁的类别(使用min_frequency
或max_categories
)来启用不频繁类别的分组。#25677 由 Thomas Fan 提交。Enhancement
preprocessing.PolynomialFeatures
现在在处理稀疏csr
矩阵时预先计算扩展项的数量,以优化indices
和indptr
的dtype
选择。现在可以在元素数量足够少的情况下输出带有`np.int32``indices/indptr组件的
csr矩阵,并会自动使用
np.int64 ` 。
对于足够大的矩阵。 #20524 由 @niuk-a <niuk-a>`和 :pr:`23731 由 Meekail Zain
Enhancement 新增参数
sparse_output
到preprocessing.SplineTransformer
,自 SciPy 1.8 起可用。如果
sparse_output=True
,preprocessing.SplineTransformer
返回一个稀疏的CSR 矩阵。 #24145 由 Christian Lorentzen 。
以下是根据规则修改后的文本:
Enhancement 在
preprocessing.OneHotEncoder
中添加了feature_name_combiner
参数。 这指定了一个自定义的可调用对象,用于创建由preprocessing.OneHotEncoder.get_feature_names_out
返回的特征名称。该可调用对象 将输入参数(input_feature, category)
组合为一个字符串。 #22506 由 Mario Kostelac 。Enhancement 在
preprocessing.KBinsDiscretizer
中增加了对sample_weight
的支持。 这允许在拟合时为每个样本指定sample_weight
参数。该选项仅在strategy
设置为
quantile
和kmeans
时可用。#24935 由 Seladus ,Guillaume Lemaitre ,和 Dea María Léon ,#25257 由 Gleb Levitski 。
Enhancement 通过
subsample
参数进行子采样现在可以在preprocessing.KBinsDiscretizer
中使用,无论使用何种策略。 #26424 由 Jérémie du Boisberranger 。Fix
preprocessing.PowerTransformer
现在在set_config(transform_output="pandas")
时 正确保留了 Pandas 索引。#26454 由Thomas Fan
_。Fix
preprocessing.PowerTransformer
现在在使用method="box-cox"
处理包含常量
np.nan
列的数据时正确引发错误。#26400 由 Yao Xiao 。
Fix 使用
method="yeo-johnson"
的preprocessing.PowerTransformer
现在会 正确处理数据。 常量特征保持不变,而不是使用lambdas_
拟合参数的任意值进行转换。 #26566 由 Jérémie du Boisberranger 贡献。API Change
preprocessing.KBinsDiscretizer
的subsample
参数默认值将在 版本 1.5 中从None
更改为200_000
,当strategy="kmeans"
或strategy="uniform"
时。 #26424 由 Jérémie du Boisberranger 贡献。
sklearn.svm
#
API Change
dual
参数现在接受auto
选项,适用于svm.LinearSVC
和svm.LinearSVR
。 #26093 由 Gleb Levitski 贡献。
sklearn.tree
#
Major Feature
tree.DecisionTreeRegressor
和tree.DecisionTreeClassifier
在splitter='best'
且标准为gini
、entropy
或log_loss`(分类)或 `squared_error
、friedman_mse
或poisson`(回归)时支持缺失值。 :pr:`23595
、#26376 由Thomas Fan
_ 贡献。Enhancement 向
tree.export_text
添加了class_names
参数。这允许按升序数值顺序为每个目标类指定class_names
参数。 #25387 由 William M 和 crispinlogan 贡献。Fix
tree.export_graphviz
和tree.export_text
现在接受feature_names
和class_names
作为类数组对象而非列表。 #26289 由 Yao Xiao 贡献。
sklearn.utils
#
Fix 修复了
utils.check_array
以正确转换 pandas 扩展数组。 #25813 和 #26106 由Thomas Fan
_ 贡献。Fix
utils.check_array
现在支持带有扩展数组和对象数据类型的 pandas DataFrame,返回具有对象数据类型的 ndarray。 #25814 由Thomas Fan
_ 贡献。API Change 引入了
utils.estimator_checks.check_transformers_unfitted_stateless
以确保无状态转换器不会引发NotFittedError
。
在未先调用 fit
或 fit_transform
的情况下进行 transform
。
#25190 由 Vincent Maladière 提供。
API Change 现在在实例化一个继承自已弃用基类(即由
utils.deprecated
装饰)并重写__init__
方法的类时,会引发FutureWarning
。 #25733 由 Brigitta Sipőcz 和 Jérémie du Boisberranger 提供。
sklearn.semi_supervised
#
Enhancement
semi_supervised.LabelSpreading.fit
和semi_supervised.LabelPropagation.fit
现在接受稀疏度量。 #19664 由 Kaushik Amar Das 提供。
杂项#
Enhancement 替换已废弃的异常
EnvironmentError
、IOError
和WindowsError ` 。 :pr:`26466
由 :user:`Dimitri Papadopoulos ORfanos <DimitriPapadopoulos>`提供。
代码和文档贡献者
感谢自版本 1.2 以来为项目的维护和改进做出贡献的每个人,包括:
2357juan, Abhishek Singh Kushwah, Adam Handke, Adam Kania, Adam Li, adienes, Admir Demiraj, adoublet, Adrin Jalali, A.H.Mansouri, Ahmedbgh, Ala-Na, Alex Buzenet, AlexL, Ali H. El-Kassas, amay, András Simon, André Pedersen, Andrew Wang, Ankur Singh, annegnx, Ansam Zedan, Anthony22-dev, Artur Hermano, Arturo Amor, as-90, ashah002, Ashish Dutt, Ashwin Mathur, AymericBasset, Azaria Gebremichael, Barata Tripramudya Onggo, Benedek Harsanyi, Benjamin Bossan, Bharat Raghunathan, Binesh Bannerjee, Boris Feld, Brendan Lu, Brevin Kunde, cache-missing, Camille Troillard, Carla J, carlo, Carlo Lemos, c-git, Changyao Chen, Chiara Marmo, Christian Lorentzen, Christian Veenhuis, Christine P. Chai, crispinlogan, Da-Lan, DanGonite57, Dave Berenbaum, davidblnc, david-cortes, Dayne, Dea María Léon, Denis, Dimitri Papadopoulos Orfanos, Dimitris Litsidis, Dmitry Nesterov, Dominic Fox, Dominik Prodinger, Edern, Ekaterina Butyugina, Elabonga Atuo, Emir, farhan khan, Felipe Siola, futurewarning, Gael Varoquaux, genvalen, Gleb Levitski, Guillaume Lemaitre, gunesbayir, Haesun Park, hujiahong726, i-aki-y, Ian Thompson, Ido M, Ily, Irene, Jack McIvor, jakirkham, James Dean, JanFidor, Jarrod Millman, JB Mountford, Jérémie du Boisberranger, Jessicakk0711, Jiawei Zhang, Joey Ortiz, JohnathanPi, John Pangas, Joshua Choo Yun Keat, Joshua Hedlund, JuliaSchoepp, Julien Jerphanion, jygerardy, ka00ri, Kaushik Amar Das, Kento Nozawa, Kian Eliasi, Kilian Kluge, Lene Preuss, Linus, Logan Thomas, Loic Esteve, Louis Fouquet, Lucy Liu, Madhura Jayaratne, Marc Torrellas Socastro, Maren Westermann, Mario Kostelac, Mark Harfouche, Marko Toplak, Marvin Krawutschke, Masanori Kanazu, mathurinm, Matt Haberland, Max Halford, maximeSaur, Maxwell Liu, m. bou, mdarii, Meekail Zain, Mikhail Iljin, murezzda, Nawazish Alam, Nicola Fanelli, Nightwalkx, Nikolay Petrov, Nishu Choudhary, NNLNR, npache, Olivier Grisel, Omar Salman, ouss1508, PAB, Pandata, partev, Peter Piontek, Phil, pnucci, Pooja M, Pooja Subramaniam, precondition, Quentin Barthélemy, Rafal Wojdyla, Raghuveer Bhat, Rahil Parikh, Ralf Gommers, ram vikram singh, Rushil Desai, Sadra Barikbin, SANJAI_3, Sashka Warner, Scott Gigante, Scott Gustafson, searchforpassion, Seoeun Hong, Shady el Gewily, Shiva chauhan, Shogo Hida, Shreesha Kumar Bhat, sonnivs, Sortofamudkip, Stanislav (Stanley) Modrak, Stefanie Senger, Steven Van Vaerenbergh, Tabea Kossen, Théophile Baranger, Thijs van Weezel, Thomas A Caswell, Thomas Germer, Thomas J. Fan, Tim Head, Tim P, Tom Dupré la Tour, tomiock, tspeng, Valentin Laurent, Veghit, VIGNESH D, Vijeth Moudgalya, Vinayak Mehta, Vincent M, Vincent-violet, Vyom Pathak, William M, windiana42, Xiao Yuan, Yao Xiao, Yaroslav Halchenko, Yotam Avidar-Constantini, Yuchen Zhou, Yusuf Raji, zeeshan lone
(注:以上内容为人名列表,未提供具体的中文翻译内容,因此保持原样输出。)