版本 1.3#
有关此版本主要亮点的简短说明,请参阅 scikit-learn 1.3 的发行亮点。
变更日志图例
主要功能 以前无法实现的重要功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 各种各样的次要改进。
修复 以前未按文档说明工作或未达到合理预期的情况现在应该可以工作了。
API 变更 您需要更改代码才能在将来获得相同的效果;或者某个功能将在将来被移除。
版本 1.3.2#
2023 年 10 月
变更日志#
sklearn.datasets#
修复 所有数据集获取器现在都接受
data_home作为任何实现os.PathLike接口的对象,例如pathlib.Path。#27468 由 姚晓 完成。
sklearn.decomposition#
修复 修复了
decomposition.KernelPCA中的一个错误,通过强制内部preprocessing.KernelCenterer的输出为默认数组。当使用arpack求解器时,它期望一个具有dtype属性的数组。#27583 由 Guillaume Lemaitre 完成。
sklearn.metrics#
修复 修复了使用
zero_division=np.nan的指标(例如precision_score)在并行循环(例如cross_val_score)中的一个错误,其中np.nan的单例在子进程中将不同。#27573 由 Guillaume Lemaitre 完成。
sklearn.tree#
修复 不要在决策树 pickle 文件中通过未初始化的内存泄漏数据,并使这些文件的生成确定性。#27580 由 Loïc Estève 完成。
版本 1.3.1#
2023 年 9 月
已更改的模型#
以下估计器和函数,当使用相同的数据和参数拟合时,可能会产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机采样过程中的更改造成的。
修复 使用
solver='sparse_cg'的 Ridge 模型在 scipy>=1.12 中的结果可能略有不同,这是由于 scipy 求解器底层更改造成的(有关更多详细信息,请参阅 scipy#18488)#26814 由 Loïc Estève 完成。
影响所有模块的更改#
修复
set_outputAPI 可正确处理列表输入。#27044 由 Thomas Fan 完成。
变更日志#
sklearn.calibration#
修复
calibration.CalibratedClassifierCV现在可以处理产生较大预测分数的模型。之前它在数值上是不稳定的。 #26913 由 Omar Salman 完成。
sklearn.cluster#
修复
cluster.BisectingKMeans在对与用于拟合模型的数据具有不同尺度的数据进行预测时可能会崩溃。 #27167 由 Olivier Grisel 完成。修复
cluster.BisectingKMeans现在可以处理只有一个特征的数据。 #27243 由 Jérémie du Boisberranger 完成。
sklearn.cross_decomposition#
修复
cross_decomposition.PLSRegression现在如果使用一维y拟合,则会自动展开predict的输出。 #26602 由 肖瑶 (Yao Xiao) 完成。
sklearn.ensemble#
修复 修复了
ensemble.AdaBoostClassifier中使用algorithm="SAMME"时的一个错误,其中每个弱学习器的决策函数应该是对称的(即,对于一个样本,分数之和应为零)。 #26521 由 Guillaume Lemaitre 完成。
sklearn.feature_selection#
修复
feature_selection.mutual_info_regression现在可以在X为整数数据类型时正确计算结果。 #26748 由 肖瑶 (Yao Xiao) 完成。
sklearn.impute#
修复
impute.KNNImputer现在在add_indicator设置为True并且在fit期间观察到缺失值时,会在transform中正确添加缺失值指示列。 #26600 由 Shreesha Kumar Bhat 完成。
sklearn.metrics#
修复 与
metrics.get_scorer一起使用的评分器可以正确处理多标签指示矩阵。 #27002 由 Guillaume Lemaitre 完成。
sklearn.mixture#
修复
mixture.GaussianMixture从用户提供的precisions_init初始化covariance_type为full或tied时是不正确的,现已修复。 #26416 由 陶阳 (Yang Tao) 完成。
sklearn.neighbors#
修复
neighbors.KNeighborsClassifier.predict对于pandas.DataFrames输入不再引发异常。 #26772 由 Jérémie du Boisberranger 完成。修复 将
sklearn.neighbors.BallTree.valid_metrics和sklearn.neighbors.KDTree.valid_metrics重新引入为公共类属性。 #26754 由 Julien Jerphanion 完成。修复
sklearn.model_selection.HalvingRandomSearchCV不再在param_distributions参数的输入为字典列表时抛出异常。 #26893 由 Stefanie Senger 完成。修复 基于邻域的估计器现在可以在
metric="minkowski"且度量参数p在范围0 < p < 1内时正常工作,而不管X的dtype是什么。 #26760 由 Shreesha Kumar Bhat 完成。
sklearn.preprocessing#
修复
preprocessing.LabelEncoder正确地接受y作为关键字参数。 #26940 由 Thomas Fan 完成。修复
preprocessing.OneHotEncoder在sparse_output=True且输出配置为pandas时,显示更具信息量的错误消息。 #26931 由 Thomas Fan 完成。
sklearn.tree#
修复
tree.plot_tree现在接受文档中记录的class_names=True。 #26903 由 Thomas Roehr 完成。修复
tree.plot_tree的feature_names参数现在接受任何类型的类数组对象,而不仅仅是列表。 #27292 由 Rahil Parikh 完成。
版本 1.3.0#
2023年6月
模型变更#
以下估计器和函数,当使用相同的数据和参数拟合时,可能会产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机采样过程中的更改造成的。
增强
multiclass.OutputCodeClassifier.predict现在使用更有效的成对距离约简。因此,去除非重复策略不同,预测的标签可能也不同。 #25196 由 Guillaume Lemaitre 完成。增强
decomposition.DictionaryLearning的fit_transform方法更高效,但在transform_algorithm与fit_algorithm不相同时且迭代次数较少时,可能会产生与以前版本不同的结果。 #24871 由 Omar Salman 完成。增强
cluster.KMeans、cluster.BisectingKMeans和cluster.MiniBatchKMeans现在将在质心初始化中使用sample_weight参数。此更改将破坏向后兼容性,因为使用相同随机种子生成的数字将不同。 #25752 由 Gleb Levitski、Jérémie du Boisberranger 和 Guillaume Lemaitre 完成。修复 在
decomposition.NMF和decomposition.MiniBatchNMF的fit和transform步骤中,更一致地处理W和H矩阵中的小值,这可能会产生与以前版本不同的结果。 #25438 由 Yotam Avidar-Constantini 完成。修复 如果
gamma为None,decomposition.KernelPCA可能会通过inverse_transform产生不同的结果。现在它将被正确地选择为其拟合数据的1/n_features,而之前它可能被错误地选择为传递给inverse_transform的数据的1/n_features。提供了一个新的属性gamma_用于显示每次调用内核时gamma的实际值。 #26337 由 肖瑶 完成。
显示更改#
增强
model_selection.LearningCurveDisplay默认显示训练曲线和测试曲线。您可以设置score_type="test"以保持之前的行为。 #25120 由 Guillaume Lemaitre 完成。修复
model_selection.ValidationCurveDisplay现在接受将列表传递给param_range参数。 #27311 由 Arturo Amor 完成。
影响所有模块的更改#
增强 如果实例未拟合,以下类的
get_feature_names_out方法现在将引发NotFittedError。这确保了所有具有get_feature_names_out方法的估计器的错误一致性。NotFittedError显示一条信息丰富的消息,要求使用适当的参数拟合实例。#25294,#25308,#25291,#25367,#25402,由 John Pangas,Rahil Parikh 和 Alex Buzenet 完成。
增强 为计算一对数据集(包含稀疏 CSR 矩阵和密集 NumPy 数组)的平方欧几里得距离(有时后面跟着融合约简运算)添加了一个多线程 Cython 例程。
这可以提高以下函数和估计器的性能
例如,将稀疏 CSR 矩阵传递给依赖密集 NumPy 表示来存储其拟合参数(反之亦然)的估计器的
predict或transform方法时,通常会出现这种性能改进。例如,对于这种情况,在常用的笔记本电脑上,
sklearn.neighbors.NearestNeighbors.kneighbors现在快了多达 2 倍。#25044 由 Julien Jerphanion 完成。
增强 所有内部依赖 OpenMP 多线程(通过 Cython)的估计器现在默认使用等于物理核心数(而不是逻辑核心数)的线程数。过去,我们观察到在 SMT 主机上使用与逻辑核心数一样多的线程有时会根据算法和数据的形状导致严重的性能问题。 请注意,仍然可以手动调整 OpenMP 使用的线程数,如 并行处理 中所述。
实验性/开发中#
主要功能 本版本包含了元数据路由的相关基础方法。此功能仅通过
enable_metadata_routing特性标志可用,该标志可以使用sklearn.set_config和sklearn.config_context启用。目前,此功能主要对第三方开发者有用,以便他们为元数据路由准备代码库,我们强烈建议他们也将其隐藏在相同的特性标志之后,而不是默认启用它。#24027 由 Adrin Jalali、Benjamin Bossan和Omar Salman贡献。
变更日志#
sklearn#
功能 为函数
sklearn.set_config和上下文管理器sklearn.config_context添加了一个新选项skip_parameter_validation,允许跳过传递给估计器和公共函数的参数验证。这有助于加快代码速度,但应谨慎使用,因为它可能导致意外行为或在设置无效参数时引发难以理解的错误消息。#25815 由 Jérémie du Boisberranger贡献。
sklearn.base#
功能 现在可以使用
__sklearn_clone__协议来覆盖base.clone的默认行为。#24568 由 Thomas Fan贡献。修复 如果
transform返回一个命名元组,base.TransformerMixin现在会保留命名元组的类。#26121 由 Thomas Fan贡献。
sklearn.calibration#
修复
calibration.CalibratedClassifierCV现在不再强制对fit_params进行样本对齐。#25805 由 Adrin Jalali贡献。
sklearn.cluster#
主要功能 添加了
cluster.HDBSCAN,这是一种现代的基于层次密度聚类算法。与cluster.OPTICS类似,它可以被看作是cluster.DBSCAN的泛化,因为它允许层次聚类而不是扁平聚类,但是它的方法与cluster.OPTICS有所不同。该算法对其超参数的值非常鲁棒,可以在各种数据上使用,几乎无需或无需任何调整。此实现改编自scikit-learn-contrib/hdbscan中HDBSCAN的原始实现,由Leland McInnes等人贡献。
#26385 由 Meekail Zain贡献
增强
cluster.KMeans、cluster.BisectingKMeans和cluster.MiniBatchKMeans现在将在质心初始化中使用sample_weight参数。此更改将破坏向后兼容性,因为使用相同随机种子生成的数字将不同。 #25752 由 Gleb Levitski、Jérémie du Boisberranger 和 Guillaume Lemaitre 完成。修复
cluster.KMeans、cluster.MiniBatchKMeans和cluster.k_means现在可以正确处理n_init="auto"和init为类数组的组合,在这种情况下运行一次初始化。#26657 由 Binesh Bannerjee贡献。API变更
cluster.KMeans.predict和cluster.MiniBatchKMeans.predict中的sample_weight参数已弃用,并将从 v1.5 版本中移除。 #25251 由 Gleb Levitski 完成。API变更
cluster.FeatureAgglomeration.inverse_transform中的Xred参数已重命名为Xt,并将从 v1.5 版本中移除。 #26503 由 Adrin Jalali 完成。
sklearn.compose#
修复 当
ColumnTransformer的单个转换器输出的 pandas 数据框索引不一致,且输出配置为 pandas 时,compose.ColumnTransformer会抛出一个包含信息的错误。 #26286 由 Thomas Fan 完成。修复 调用
set_output时,compose.ColumnTransformer正确设置剩余部分的输出。 #26323 由 Thomas Fan 完成。
sklearn.covariance#
修复 允许在
covariance.GraphicalLasso中使用alpha=0,以与covariance.graphical_lasso保持一致。 #26033 由 Genesis Valencia 完成。修复 当输入不合适时,
covariance.empirical_covariance现在会给出包含信息的错误消息。 #26108 由 Quentin Barthélemy 完成。API变更 自 1.3 版本起弃用
covariance.graphical_lasso中的cov_init,因为该参数无效。它将在 1.5 版本中移除。 #26033 由 Genesis Valencia 完成。API变更 在
covariance.GraphicalLasso和covariance.GraphicalLassoCV中添加了拟合属性costs_。 #26033 由 Genesis Valencia 完成。API变更 在
covariance.GraphicalLasso中添加了covariance参数。 #26033 由 Genesis Valencia 完成。API变更 在
covariance.GraphicalLasso、covariance.graphical_lasso和covariance.GraphicalLassoCV中添加了eps参数。 #26033 由 Genesis Valencia 完成。
sklearn.datasets#
增强 使用 pandas 解析器时,允许使用
datasets.fetch_openml中的read_csv_kwargs参数覆盖用于打开 ARFF 文件的参数。 #26433 由 Guillaume Lemaitre 完成。修复 当
as_frame=True且parser="liac-arff"时,datasets.fetch_openml返回改进的数据类型。 #26386 由 Thomas Fan 完成。修复 遵循 ARFF 规范,现在只有标记符
"?"在使用 pandas 解析器打开通过datasets.fetch_openml获取的 ARFF 文件时被视为缺失值。参数read_csv_kwargs允许覆盖此行为。 #26551 由 Guillaume Lemaitre 完成。修复
datasets.fetch_openml将始终使用np.nan作为缺失值标记符,适用于"pandas"和"liac-arff"两种解析器。 #26579 由 Guillaume Lemaitre 完成。API 变更
datasets.make_sparse_coded_signal的data_transposed参数已弃用,并将从 v1.5 版本中移除。 #25784 由 @Jérémie du Boisberranger 完成。
sklearn.decomposition#
效率提升 通过避免重复验证,
decomposition.MiniBatchDictionaryLearning和decomposition.MiniBatchSparsePCA在小批量大小的情况下速度更快。 #25490 由 Jérémie du Boisberranger 完成。增强
decomposition.DictionaryLearning现在接受参数callback,以与函数decomposition.dict_learning保持一致。 #24871 由 Omar Salman 完成。修复 在
decomposition.NMF和decomposition.MiniBatchNMF的fit和transform步骤中,更一致地处理W和H矩阵中的小值,这可能会产生与以前版本不同的结果。 #25438 由 Yotam Avidar-Constantini 完成。API 变更
decomposition.NMF.inverse_transform和decomposition.MiniBatchNMF.inverse_transform中的W参数已重命名为Xt,并将从 v1.5 版本中移除。 #26503 由 Adrin Jalali 完成。
sklearn.discriminant_analysis#
增强
discriminant_analysis.LinearDiscriminantAnalysis现在支持 PyTorch。更多详情请参见 数组API支持(实验性)。 #25956 由 Thomas Fan 完成。
sklearn.ensemble#
新增功能
ensemble.HistGradientBoostingRegressor现在通过loss="gamma"支持 Gamma 偏差损失。使用 Gamma 偏差作为损失函数对于建模偏态分布的、严格正值的目标变量非常有用。 #22409 由 Christian Lorentzen 完成。新增功能 通过向
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier和ensemble.ExtraTreesRegressor传递可调用对象来计算自定义袋外评分。 #25177 由 Tim Head 完成。新特性
ensemble.GradientBoostingClassifier现在通过oob_scores_或oob_score_属性暴露袋外分数。 #24882 由 Ashwin Mathur 完成。效率提升
ensemble.IsolationForest的预测速度现在更快了(通常快 8 倍或更多)。在内部,估计器现在在fit阶段预计算每棵树的决策路径长度。因此,无法加载使用 scikit-learn 1.2 训练的估计器以便使其在 scikit-learn 1.3 中进行预测:需要使用 scikit-learn 1.3 重新训练。 #25186 由 Felipe Breve Siola 完成。效率提升 带有
warm_start=True的ensemble.RandomForestClassifier和ensemble.RandomForestRegressor现在只在后续fit调用中实际存在更多n_estimators时才重新计算袋外分数。 #26318 由 Joshua Choo Yun Keat 完成。增强
ensemble.BaggingClassifier和ensemble.BaggingRegressor公开了底层估计器的allow_nan标签。 #25506 由 Thomas Fan 完成。修复 当
max_samples是浮点数且round(n_samples * max_samples) < 1时,ensemble.RandomForestClassifier.fit将max_samples = 1。 #25601 由 Jan Fidor 完成。修复 当在 pandas 数据框上调用
contamination不是"auto"时,ensemble.IsolationForest.fit不再警告缺少特征名称。 #25931 由 Yao Xiao 完成。修复
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier根据 LightGBM 和 pandas 的约定,一致地将分类特征的负值视为缺失值。 #25629 由 Thomas Fan 完成。修复 修复了 #23819 中引入的
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中base_estimator的弃用问题。 #26242 由 Marko Toplak 完成。
sklearn.exceptions#
新特性 添加了
exceptions.InconsistentVersionWarning,当使用与 scikit-learn 估计器腌制时使用的 scikit-learn 版本不一致的 scikit-learn 版本解腌制 scikit-learn 估计器时,将引发此警告。 #25297 由 Thomas Fan 完成。
sklearn.feature_extraction#
API变更
feature_extraction.image.PatchExtractor现在遵循 scikit-learn 的转换器 API。此类定义为无状态转换器,这意味着在调用transform之前不需要调用fit。参数验证仅在fit时发生。#24230 由 Guillaume Lemaitre 完成。
sklearn.feature_selection#
增强
sklearn.feature_selection中的所有选择器在转换后都将保留 DataFrame 的数据类型。#25102 由 Thomas Fan 完成。修复
feature_selection.SequentialFeatureSelector的cv参数现在支持生成器。#25973 由Yao Xiao <Charlie-XIAO>完成。
sklearn.impute#
增强 为
impute.IterativeImputer添加了参数fill_value。#25232 由 Thijs van Weezel 完成。修复 当
set_config(transform_output="pandas")时,impute.IterativeImputer现在可以正确保留 Pandas Index。#26454 由 Thomas Fan 完成。
sklearn.inspection#
增强 为
inspection.partial_dependence和inspection.PartialDependenceDisplay.from_estimator添加了对sample_weight的支持。这允许在针对我们进行检查的网格的每个值进行聚合时进行加权平均。仅当method设置为brute时才可以使用此选项。#25209 和 #26644 由 Carlo Lemos 完成。API变更
inspection.partial_dependence返回一个带有新键grid_values的utils.Bunch。values键已弃用,推荐使用grid_values,values键将在 1.5 版本中移除。#21809 和 #25732 由 Thomas Fan 完成。
sklearn.kernel_approximation#
修复
kernel_approximation.AdditiveChi2Sampler现在是无状态的。sample_interval_属性已弃用,将在 1.5 版本中移除。#25190 由 Vincent Maladière 完成。
sklearn.linear_model#
效率提升 当
sample_weight=None时避免数据缩放,以及在linear_model.LinearRegression中避免其他不必要的数据复制和意外的稠密到稀疏数据的转换。#26207 由 Olivier Grisel 完成。增强
linear_model.SGDClassifier、linear_model.SGDRegressor和linear_model.SGDOneClassSVM现在保留numpy.float32的数据类型。 #25587 由 Omar Salman 完成。增强
linear_model.ARDRegression中已包含n_iter_属性,用于显示达到停止条件所需的实际迭代次数。 #25697 由 John Pangas 完成。修复 使用更强大的标准来检测
linear_model.LogisticRegression在线性可分问题中使用penalty="l1"和solver="liblinear"时的收敛性。 #25214 由 Tom Dupre la Tour 完成。修复 修复了在
linear_model.LogisticRegression中使用solver="newton-cholesky"和max_iter=0调用fit时发生的崩溃问题,该问题未能检查模型在第一次参数更新之前的状态。 #26653 由 Olivier Grisel 完成。API 变更 弃用
linear_model.BayesianRidge和linear_model.ARDRegression中的n_iter属性,转而使用max_iter。n_iter将在 scikit-learn 1.5 中移除。此更改使这些估计器与其他估计器保持一致。 #25697 由 John Pangas 完成。
sklearn.manifold#
修复
manifold.Isomap现在在set_config(transform_output="pandas")时能够正确保留 Pandas 索引。 #26454 由 Thomas Fan 完成。
sklearn.metrics#
特性 为多个分类指标添加了
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 完成。特性
metrics.average_precision_score现在支持多类别情况。 #17388 由 Geoffrey Bolmier 完成, #24769 由 Ashwin Mathur 完成。效率 当唯一标签数量很大时,
metrics.adjusted_mutual_info_score中互信息期望值的计算速度更快,并且总体内存使用量减少。 #25713 由 Kshitij Mathur、Guillaume Lemaitre、Omar Salman 和 Jérémie du Boisberranger 完成。增强
metrics.silhouette_samples现在可以接受样本之间成对距离的稀疏矩阵或特征数组。 #18723 由 Sahil Gupta 和 #24677 由 Ashwin Mathur 完成。增强 为
metrics.precision_recall_curve、metrics.PrecisionRecallDisplay.from_estimator、metrics.PrecisionRecallDisplay.from_predictions添加了一个新的参数drop_intermediate,用于删除一些次优阈值以创建更轻量级的精确召回曲线。 #24668 由 @dberenbaum 完成。增强
metrics.RocCurveDisplay.from_estimator和metrics.RocCurveDisplay.from_predictions现在接受两个新的关键字参数plot_chance_level和chance_level_kw用于绘制基线机会水平。此线在chance_level_属性中公开。 #25987 由 肖瑶 完成。增强
metrics.PrecisionRecallDisplay.from_estimator和metrics.PrecisionRecallDisplay.from_predictions现在接受两个新的关键字参数plot_chance_level和chance_level_kw用于绘制基线机会水平。此线在chance_level_属性中公开。 #26019 由 肖瑶 完成。修复
metrics.pairwise.manhattan_distances现在支持只读稀疏数据集。 #25432 由 Julien Jerphanion 完成。修复 修复了
metrics.classification_report,以便空输入将返回np.nan。以前,“宏观平均值”和weighted avg将返回例如f1-score=np.nan和f1-score=0.0,前后不一致。现在,它们都返回np.nan。 #25531 由 Marc Torrellas Socastro 完成。修复
metrics.ndcg_score现在针对长度为 1 的输入给出有意义的错误消息。 #25672 由 Lene Preuss 和 Wei-Chun Chu 完成。修复 如果参数
y_pred的值未标准化,metrics.log_loss将发出警告,而不是在度量中实际对其进行标准化。从 1.5 版本开始,这将引发错误。 #25299 由 @Omar Salman <OmarManzoor 完成。修复 在
metrics.roc_curve中,使用阈值np.inf代替任意的max(y_score) + 1。此阈值与 ROC 曲线点tpr=0和fpr=0相关。 #26194 由 Guillaume Lemaitre 完成。修复 使用 SciPy>=1.9 时,已删除
'matching'度量标准,以与不再支持'matching'的scipy.spatial.distance保持一致。 #26264 由 Barata T. Onggo 完成。API 变更
metrics.log_loss的eps参数已被弃用,并将从 1.5 版本中删除。 #25299 由 Omar Salman 完成。
sklearn.gaussian_process#
修复
gaussian_process.GaussianProcessRegressor新增了一个参数n_targets,用于在从先验分布采样时确定输出的数量。#23099 由 刘哲昊 完成。
sklearn.mixture#
效率提升
mixture.GaussianMixture现在效率更高,如果权重、均值和精度由用户给出,则会绕过不必要的初始化。#26021 由 张家伟 完成。
sklearn.model_selection#
主要功能 新增了
model_selection.ValidationCurveDisplay类,允许轻松绘制通过函数model_selection.validation_curve获得的验证曲线。#25120 由 Guillaume Lemaitre 完成。API变更
model_selection.LearningCurveDisplay类中的参数log_scale已在 1.3 版本中弃用,并将在 1.5 版本中移除。可以通过直接在ax对象上设置来覆盖默认比例,否则将根据数据点的间距自动设置。#25120 由 Guillaume Lemaitre 完成。增强
model_selection.cross_validate新增了一个参数return_indices,用于返回每个 cv 分割的训练测试索引。#25659 由 Guillaume Lemaitre 完成。
sklearn.multioutput#
修复 对
multioutput.MultiOutputRegressor.partial_fit和multioutput.MultiOutputClassifier.partial_fit使用getattr现在会在调用fit之前正确地引发AttributeError。#26333 由 Adrin Jalali 完成。
sklearn.naive_bayes#
修复
naive_bayes.GaussianNB在fit中提供的sample_weight将问题简化为单一类别时,不再引发ZeroDivisionError。#24140 由 Jonathan Ohayon 和 Chiara Marmo 完成。
sklearn.neighbors#
增强 当
n_neighbors很大且algorithm="brute"使用非欧几里德度量时,neighbors.KNeighborsClassifier.predict和neighbors.KNeighborsClassifier.predict_proba的性能得到了提升。#24076 由 Meekail Zain、Julien Jerphanion 完成。修复 移除
neighbors.BallTree中对KulsinskiDistance的支持。此差异性不是度量,BallTree 不支持。#25417 由 Guillaume Lemaitre 完成。API变更 除了
euclidean和manhattan以外的度量标准,以及在neighbors.NearestNeighbors中使用可调用对象的功能已弃用,并将在1.5版本中移除。 #24083 由 Valentin Laurent贡献。
sklearn.neural_network#
修复
neural_network.MLPRegressor和neural_network.MLPClassifier在warm_start=True时会报告正确的n_iter_值。它对应于当前对fit的调用中执行的迭代次数,而不是自估计器初始化以来执行的总迭代次数。 #25443 由 Marvin Krawutschke贡献。
sklearn.pipeline#
新增功能
pipeline.FeatureUnion现在可以使用索引表示法(例如feature_union["scalar"])按名称访问转换器。 #25093 由 Thomas Fan贡献。新增功能 如果在
.fit期间看到的X值具有columns属性并且所有列都是字符串,则pipeline.FeatureUnion现在可以访问feature_names_in_属性。例如,当X是pandas.DataFrame时。 #25220 由 Ian Thompson贡献。修复 如果管道的最后一步不支持
fit_transform,则pipeline.Pipeline.fit_transform现在会引发AttributeError。 #26325 由 Adrin Jalali贡献。
sklearn.preprocessing#
主要功能 引入
preprocessing.TargetEncoder,这是一种基于目标均值(以类别值为条件)的类别编码。 #25334 由 Thomas Fan贡献。新增功能
preprocessing.OrdinalEncoder现在支持将不频繁的类别分组到单个特征中。可以通过使用min_frequency或max_categories指定如何选择不频繁的类别来启用不频繁类别的分组。 #25677 由 Thomas Fan贡献。增强
preprocessing.PolynomialFeatures现在在处理稀疏csr矩阵时会预先计算扩展项的数量,以便优化indices和indptr的dtype选择。当元素数量足够少时,它现在可以输出具有np.int32indices/indptr分量的csr矩阵,并且会自动对足够大的矩阵使用np.int64。 #20524 由 niuk-a 和 #23731 由 Meekail Zain贡献。增强 一个新的参数
sparse_output已添加到preprocessing.SplineTransformer(自 SciPy 1.8 起可用)。如果sparse_output=True,则preprocessing.SplineTransformer将返回一个稀疏 CSR 矩阵。 #24145 由 Christian Lorentzen贡献。增强 向
preprocessing.OneHotEncoder添加了一个feature_name_combiner参数。该参数指定一个自定义的可调用对象,用于创建preprocessing.OneHotEncoder.get_feature_names_out返回的特征名称。此可调用对象将输入参数(input_feature, category)组合成一个字符串。#22506 由 Mario Kostelac 贡献。增强 在
preprocessing.KBinsDiscretizer中添加了对sample_weight的支持。这允许为每个样本指定sample_weight参数,以便在拟合过程中使用。此选项仅在strategy设置为quantile和kmeans时可用。#24935 由 Seladus、Guillaume Lemaitre 和 Dea María Léon 贡献,#25257 由 Gleb Levitski 贡献。增强 现在,无论使用哪种策略,都可以在
preprocessing.KBinsDiscretizer中使用subsample参数进行子采样。#26424 由 Jérémie du Boisberranger 贡献。修复 当
set_config(transform_output="pandas")时,preprocessing.PowerTransformer现在可以正确保留 Pandas 索引。#26454 由 Thomas Fan 贡献。修复 当使用
method="box-cox"对包含常量np.nan列的数据进行处理时,preprocessing.PowerTransformer现在会正确地抛出错误。#26400 由 Yao Xiao 贡献。修复 使用
method="yeo-johnson"的preprocessing.PowerTransformer现在会将常量特征保持不变,而不是使用拟合参数lambdas_的任意值进行转换。#26566 由 Jérémie du Boisberranger 贡献。API 变更 当
strategy="kmeans"或strategy="uniform"时,preprocessing.KBinsDiscretizer的subsample参数的默认值将在 1.5 版本中从None更改为200_000。#26424 由 Jérémie du Boisberranger 贡献。
sklearn.svm#
API 变更
svm.LinearSVC和svm.LinearSVR的dual参数现在接受auto选项。#26093 由 Gleb Levitski 贡献。
sklearn.tree#
主要功能 当
splitter='best'且标准为分类的gini、entropy或log_loss,或回归的squared_error、friedman_mse或poisson时,tree.DecisionTreeRegressor和tree.DecisionTreeClassifier支持缺失值。#23595,#26376 由 Thomas Fan 贡献。增强 向
tree.export_text添加了一个class_names参数。这允许为每个目标类别(按升序数字顺序)指定class_names参数。#25387 由 William M 和 crispinlogan 贡献。修复
tree.export_graphviz和tree.export_text现在接受feature_names和class_names为类数组而非列表。 #26289 由 肖瑶 完成。
sklearn.utils#
修复 修复了
utils.check_array以正确转换 pandas 扩展数组。 #25813 和 #26106 由 Thomas Fan 完成。修复
utils.check_array现在支持包含扩展数组和 object 数据类型的 pandas DataFrame,并返回一个 object 数据类型的 ndarray。 #25814 由 Thomas Fan 完成。API 变更 引入了
utils.estimator_checks.check_transformers_unfitted_stateless以确保无状态转换器在没有先前调用fit或fit_transform的情况下,transform不会引发NotFittedError。 #25190 由 Vincent Maladière 完成。API 变更 当实例化继承自已弃用基类(即用
utils.deprecated装饰)并覆盖__init__方法的类时,现在会引发FutureWarning警告。 #25733 由 Brigitta Sipőcz 和 Jérémie du Boisberranger 完成。
sklearn.semi_supervised#
增强
semi_supervised.LabelSpreading.fit和semi_supervised.LabelPropagation.fit现在接受稀疏度量。 #19664 由 Kaushik Amar Das 完成。
其他#
增强 替换已弃用的异常
EnvironmentError、IOError和WindowsError。 #26466 由 Dimitri Papadopoulos ORfanos 完成。
代码和文档贡献者
感谢自 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