版本 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_outputAPI 现在可以正确处理列表输入。#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
(注:以上内容为人名列表,未提供具体的中文翻译内容,因此保持原样输出。)