版本 1.3#
有关发布主要亮点简短说明,请参阅 scikit-learn 1.3 的发布亮点。
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 1.3.2#
2023 年 10 月
更新日志#
sklearn.datasets#
修复 所有数据集获取器现在都接受
data_home作为实现了os.PathLike接口的任何对象,例如pathlib.Path。 #27468,作者 Yao Xiao。
sklearn.decomposition#
修复 通过强制内部
preprocessing.KernelCenterer的输出为默认数组,修复了decomposition.KernelPCA中的一个错误。当使用 arpack 求解器时,它需要一个具有dtype属性的数组。 #27583,作者 Guillaume Lemaitre。
sklearn.metrics#
修复 修复了在并行循环(例如
cross_val_score)中使用zero_division=np.nan(例如precision_score)的度量标准中的一个错误,其中子进程中的np.nan的单例将不同。 #27573,作者 Guillaume Lemaitre。
sklearn.tree#
修复 不会在决策树 pickle 文件中通过未初始化的内存泄露数据,并使这些文件的生成具有确定性。 #27580,作者 Loïc Estève。
版本 1.3.1#
2023 年 9 月
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
修复 具有
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#
修复 当使用一维
y进行拟合时,cross_decomposition.PLSRegression现在会自动展平predict的输出。 #26602,作者 Yao Xiao。
sklearn.ensemble#
修复 修复了
ensemble.AdaBoostClassifier中使用algorithm="SAMME"时的一个错误,其中每个弱学习器的决策函数应该是对称的(即,样本的分数之和应为零)。 #26521,作者 Guillaume Lemaitre。
sklearn.feature_selection#
修复 当
X是整数类型时,feature_selection.mutual_info_regression现在可以正确计算结果。 #26748,作者 Yao Xiao。
sklearn.impute#
修复 当
add_indicator设置为True并在fit期间观察到缺失值时,impute.KNNImputer现在可以在transform中正确添加缺失指示符列。 #26600,作者 Shreesha Kumar Bhat。
sklearn.metrics#
修复 与
metrics.get_scorer一起使用的评分器可以正确处理多标签指示矩阵。 #27002,作者 Guillaume Lemaitre。
sklearn.mixture#
修复 从用户提供的
precisions_init初始化full或tied的covariance_type的mixture.GaussianMixture是不正确的,现已修复。 #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。修复 当
param_distributions参数的输入是字典列表时,sklearn.model_selection.HalvingRandomSearchCV不再引发错误。 #26893,作者 Stefanie Senger。修复 基于邻居的估计器现在可以在
metric="minkowski"且度量参数p在范围0 < p < 1内时正确工作,而与X的dtype无关。 #26760,作者 Shreesha Kumar Bhat。
sklearn.preprocessing#
修复
preprocessing.LabelEncoder现在可以正确地将y作为关键字参数接受。 #26940,作者 Thomas Fan。修复 当
sparse_output=True且输出配置为 pandas 时,preprocessing.OneHotEncoder会显示更具信息量的错误消息。 #26931,作者 Thomas Fan。
sklearn.tree#
修复
tree.plot_tree现在接受class_names=True,如文档所述。 #26903,作者 Thomas Roehr修复
tree.plot_tree的feature_names参数现在接受任何类数组(array-like)而不是仅列表。 #27292,作者 Rahil Parikh。
版本 1.3.0#
2023 年 6 月
更改的模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
增强
multiclass.OutputCodeClassifier.predict现在使用更高效的成对距离约简。因此,平局策略不同,预测标签也可能不同。 #25196,作者 Guillaume Lemaitre。增强
decomposition.DictionaryLearning的fit_transform方法效率更高,但当transform_algorithm与fit_algorithm不同且迭代次数较少时,其结果可能与以前的版本不同。 #24871,作者 Omar Salman。增强
sample_weight参数现在将用于cluster.KMeans、cluster.BisectingKMeans和cluster.MiniBatchKMeans的质心初始化。此更改将破坏向后兼容性,因为使用相同随机种子的生成数字将不同。 #25752,作者 Hleb 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,作者 Yao Xiao。
更改的显示#
增强
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。
增强 添加了一个多线程 Cython 例程,用于计算稀疏 CSR 矩阵和密集 NumPy 组成的两个数据集之间的平方欧几里得距离(有时后面跟着一个融合约简操作)。
这可以提高以下函数和估计器的性能
这种性能改进的一个典型示例发生在将稀疏 CSR 矩阵传递给依赖于密集 NumPy 表示来存储其拟合参数(或反之)的估计器的
predict或transform方法时。例如,对于常见笔记本电脑上的这种情况,
sklearn.neighbors.NearestNeighbors.kneighbors的速度现在最多可提高 2 倍。增强 所有内部依赖 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。修复
base.TransformerMixin现在会在transform返回命名元组(namedtuple)时保留命名元组的类。 #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 等人。
增强
sample_weight参数现在将用于cluster.KMeans、cluster.BisectingKMeans和cluster.MiniBatchKMeans的质心初始化。此更改将破坏向后兼容性,因为使用相同随机种子的生成数字将不同。 #25752,作者 Hleb Levitski、Jérémie du Boisberranger、Guillaume Lemaitre。修复
cluster.KMeans、cluster.MiniBatchKMeans和cluster.k_means现在可以正确处理n_init="auto"和init是数组(array-like)的组合,在这种情况下将运行一次初始化。 #26657,作者 Binesh Bannerjee。API 更改
cluster.KMeans.predict和cluster.MiniBatchKMeans.predict中的sample_weight参数现已弃用,将在 v1.5 中移除。 #25251,作者 Hleb Levitski。API 更改
cluster.FeatureAgglomeration.inverse_transform中的Xred参数已重命名为Xt,并将在 v1.5 中移除。 #26503,作者 Adrin Jalali。
sklearn.compose#
修复 当
compose.ColumnTransformer的各个转换器生成索引不一致的 pandas DataFrames,并且输出配置为 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 更改
covariance.graphical_lasso中的cov_init参数在 1.3 版本中已弃用,因为它没有效果。它将在 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#
增强 允许使用
read_csv_kwargs参数来覆盖打开 ARFF 文件时使用的参数,该参数位于datasets.fetch_openml中,当使用 pandas 解析器时。 #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。修复 当使用 pandas 解析器
"pandas"和"liac-arff"时,datasets.fetch_openml将一致地使用np.nan作为缺失标记。 #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。有关更多详细信息,请参阅 Array 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 DataFrame 调用
contamination不为"auto"时,ensemble.IsolationForest.fit不再警告缺失的特征名称。 #25931,作者 Yao Xiao。修复
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier将分类特征的负值视为缺失值,遵循 LightGBM 和 pandas 的约定。 #25629,作者 Thomas Fan。修复 修复了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中 #23819 中引入的base_estimator的弃用警告。 #26242,作者 Marko Toplak。
sklearn.exceptions#
功能 添加了
exceptions.InconsistentVersionWarning,当 scikit-learn 估计器使用与该估计器被 pickle 时的 scikit-learn 版本不一致的 scikit-learn 版本反序列化时,会引发此警告。 #25297,作者 Thomas Fan。
sklearn.feature_extraction#
API 更改
feature_extraction.image.PatchExtractor现在遵循 scikit-learn 的 transformer API。此类定义为无状态转换器,这意味着在调用transform之前不需要调用fit。参数验证仅在fit时发生。 #24230,作者 Guillaume Lemaitre。
sklearn.feature_selection#
增强
sklearn.feature_selection中的所有选择器在转换时将保留 DataFrame 的 dtype。 #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的 dtype。 #25587,作者 Omar Salman。增强
linear_model.ARDRegression中已包含n_iter_属性,以公开达到停止标准所需的实际迭代次数。 #25697,作者 John Pangas。修复 对线性可分问题使用更鲁棒的标准来检测
penalty="l1"和solver="liblinear"的linear_model.LogisticRegression的收敛性。 #25214,作者 Tom Dupre la Tour。修复 修复了当使用
solver="newton-cholesky"和max_iter=0在linear_model.LogisticRegression上调用fit时发生的崩溃,该崩溃未能检查第一次参数更新之前的模型状态。 #26653,作者 Olivier Grisel。API Change
n_iter在linear_model.BayesianRidge和linear_model.ARDRegression中已被弃用,推荐使用max_iter。n_iter将在 scikit-learn 1.5 中移除。此更改使这些估计器与其他估计器保持一致。 #25697 by John Pangas.
sklearn.manifold#
Fix 当
set_config(transform_output="pandas")时,manifold.Isomap现在可以正确保留 Pandas Index。 #26454 by 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 by Marc Torrellas Socastro。Feature
metrics.average_precision_score现在支持多类别情况。 #17388 by Geoffrey Bolmier and #24769 by Ashwin Mathur。Efficiency 当唯一标签数量很大时,
metrics.adjusted_mutual_info_score中期望互信息的计算现在更快,并且总体内存使用量已减少。 #25713 by Kshitij Mathur, Guillaume Lemaitre, Omar Salman and Jérémie du Boisberranger。Enhancement
metrics.silhouette_samples现在接受样本之间成对距离的稀疏矩阵,或特征数组。 #18723 by Sahil Gupta and #24677 by Ashwin Mathur。Enhancement 向
metrics.precision_recall_curve,metrics.PrecisionRecallDisplay.from_estimator,metrics.PrecisionRecallDisplay.from_predictions添加了一个新参数drop_intermediate,该参数会删除一些次优阈值以创建更轻量的精确率-召回率曲线。 #24668 by @dberenbaum。Enhancement
metrics.RocCurveDisplay.from_estimator和metrics.RocCurveDisplay.from_predictions现在接受两个新关键字参数plot_chance_level和chance_level_kw来绘制基准机会水平线。此线可以通过chance_level_属性访问。 #25987 by Yao Xiao。Enhancement
metrics.PrecisionRecallDisplay.from_estimator和metrics.PrecisionRecallDisplay.from_predictions现在接受两个新关键字参数plot_chance_level和chance_level_kw来绘制基准机会水平线。此线可以通过chance_level_属性访问。 #26019 by Yao Xiao。Fix
metrics.pairwise.manhattan_distances现在支持只读稀疏数据集。 #25432 by Julien Jerphanion。Fix 修复了
metrics.classification_report,以便空输入将返回np.nan。之前,“macro avg”和weighted avg将返回例如f1-score=np.nan和f1-score=0.0,存在不一致。现在,它们都返回np.nan。 #25531 by Marc Torrellas Socastro。Fix
metrics.ndcg_score现在为长度为 1 的输入提供有意义的错误消息。 #25672 by Lene Preuss and Wei-Chun Chu。Fix
metrics.log_loss如果y_pred参数的值未标准化,则会引发警告,而不是在指标中进行实际标准化。从 1.5 开始,这将引发一个错误。 #25299 by Omar Salman。Fix 在
metrics.roc_curve中,使用阈值np.inf而不是任意的max(y_score) + 1。此阈值与 ROC 曲线点tpr=0和fpr=0相关联。 #26194 by Guillaume Lemaitre。Fix 当使用 SciPy>=1.9 时,已移除
'matching'指标,以与scipy.spatial.distance保持一致,后者不再支持'matching'。 #26264 by Barata T. OnggoAPI Change
metrics.log_loss的eps参数已被弃用,并将于 1.5 版本移除。 #25299 by Omar Salman。
sklearn.gaussian_process#
Fix
gaussian_process.GaussianProcessRegressor新增了一个参数n_targets,该参数用于在从先验分布采样时确定输出的数量。 #23099 by Zhehao Liu。
sklearn.mixture#
Efficiency
mixture.GaussianMixture现在更高效,如果用户提供了权重、均值和精度,将跳过不必要的初始化。 #26021 by Jiawei Zhang。
sklearn.model_selection#
Major Feature 添加了类
model_selection.ValidationCurveDisplay,它允许轻松绘制通过函数model_selection.validation_curve获得的验证曲线。 #25120 by Guillaume Lemaitre。API Change
model_selection.LearningCurveDisplay类的plot方法中的log_scale参数在 1.3 版本中已被弃用,并将于 1.5 版本移除。默认比例可以通过直接在ax对象上设置来覆盖,否则将根据数据点的间距自动设置。 #25120 by Guillaume Lemaitre。Enhancement
model_selection.cross_validate接受一个新参数return_indices,用于返回每次交叉验证分割的训练-测试索引。 #25659 by Guillaume Lemaitre。
sklearn.multioutput#
Fix 在
fit被调用之前,对multioutput.MultiOutputRegressor.partial_fit和multioutput.MultiOutputClassifier.partial_fit调用getattr现在会正确地引发AttributeError。 #26333 by Adrin Jalali。
sklearn.naive_bayes#
Fix 当提供的
sample_weight在fit中将问题简化为单个类别时,naive_bayes.GaussianNB不再引发ZeroDivisionError。 #24140 by Jonathan Ohayon and Chiara Marmo。
sklearn.neighbors#
Enhancement 当
n_neighbors较大且algorithm="brute"并使用非欧几里得度量时,neighbors.KNeighborsClassifier.predict和neighbors.KNeighborsClassifier.predict_proba的性能得到了提高。 #24076 by Meekail Zain, Julien Jerphanion。Fix 移除了
neighbors.BallTree中对KulsinskiDistance的支持。这种不相似度不是度量,BallTree 无法支持。 #25417 by Guillaume Lemaitre。API Change
neighbors.NearestNeighbors中除euclidean和manhattan之外的度量支持以及对可调用对象的支持已被弃用,并将于 1.5 版本移除。 #24083 by Valentin Laurent。
sklearn.neural_network#
Fix
neural_network.MLPRegressor和neural_network.MLPClassifier在warm_start=True时会报告正确的n_iter_。它对应于当前调用fit时执行的迭代次数,而不是估计器初始化以来执行的总迭代次数。 #25443 by Marvin Krawutschke。
sklearn.pipeline#
Feature
pipeline.FeatureUnion现在可以使用索引表示法(例如feature_union["scalar"])按名称访问转换器。 #25093 by Thomas Fan。Feature 如果在
.fit期间看到的X值具有columns属性且所有列都是字符串,则pipeline.FeatureUnion现在可以访问feature_names_in_属性。例如,当X是pandas.DataFrame时。 #25220 by Ian Thompson。Fix 如果管道的最后一步不支持
fit_transform,则pipeline.Pipeline.fit_transform现在会引发AttributeError。 #26325 by Adrin Jalali。
sklearn.preprocessing#
Major Feature 引入了
preprocessing.TargetEncoder,这是一种基于条件于类别值的目标均值的分类编码。 #25334 by Thomas Fan。Feature
preprocessing.OrdinalEncoder现在支持将不频繁的类别分组到单个特征中。可以通过指定min_frequency或max_categories来选择不频繁类别,从而启用分组。 #25677 by Thomas Fan。Enhancement
preprocessing.PolynomialFeatures在处理稀疏csr矩阵时,现在会预先计算扩展项的数量,以优化indices和indptr的dtype选择。当元素数量较少时,它现在可以输出具有np.int32indices/indptr组件的csr矩阵,对于足够大的矩阵会自动使用np.int64。 #20524 by niuk-a and #23731 by Meekail ZainEnhancement 在
preprocessing.SplineTransformer中添加了一个新参数sparse_output,该参数自 SciPy 1.8 起可用。如果sparse_output=True,preprocessing.SplineTransformer将返回稀疏 CSR 矩阵。 #24145 by Christian Lorentzen。Enhancement 向
preprocessing.OneHotEncoder添加了一个feature_name_combiner参数。这指定了一个自定义可调用对象来创建由preprocessing.OneHotEncoder.get_feature_names_out返回的特征名称。该可调用对象将输入参数(input_feature, category)组合成一个字符串。 #22506 by Mario Kostelac。Enhancement 为
preprocessing.KBinsDiscretizer添加了对sample_weight的支持。这允许在拟合过程中为每个样本指定sample_weight参数。此选项仅在strategy设置为quantile和kmeans时可用。 #24935 by Seladus, Guillaume Lemaitre, and Dea María Léon, #25257 by Hleb Levitski。Enhancement 通过
subsample参数进行的子采样现在可以在preprocessing.KBinsDiscretizer中使用,无论使用何种策略。 #26424 by Jérémie du Boisberranger。Fix 当
set_config(transform_output="pandas")时,preprocessing.PowerTransformer现在可以正确保留 Pandas Index。 #26454 by Thomas Fan。Fix 当对具有常量
np.nan列的数据使用method="box-cox"时,preprocessing.PowerTransformer现在会正确地引发错误。 #26400 by Yao Xiao。Fix 使用
method="yeo-johnson"的preprocessing.PowerTransformer现在会将常量特征保持不变,而不是使用拟合参数lambdas_的任意值进行转换。 #26566 by Jérémie du Boisberranger。API Change 在 1.5 版本中,当
strategy="kmeans"或strategy="uniform"时,preprocessing.KBinsDiscretizer的subsample参数的默认值将从None更改为200_000。 #26424 by Jérémie du Boisberranger。
sklearn.svm#
API Change
dual参数现在接受auto选项,用于svm.LinearSVC和svm.LinearSVR。 #26093 by Hleb Levitski。
sklearn.tree#
Major Feature
tree.DecisionTreeRegressor和tree.DecisionTreeClassifier在splitter='best'且 criterion 为分类的gini,entropy, 或log_loss,或回归的squared_error,friedman_mse, 或poisson时支持缺失值。 #23595, #26376 by Thomas Fan。Enhancement 向
tree.export_text添加了class_names参数。这允许按升序数字顺序为每个目标类别指定class_names参数。 #25387 by William M and crispinlogan。Fix
tree.export_graphviz和tree.export_text现在接受类数组(array-like)而不是列表作为feature_names和class_names。 #26289 by Yao Xiao
sklearn.utils#
Fix 修复了
utils.check_array以正确转换 pandas 扩展数组。 #25813 and #26106 by Thomas Fan。Fix
utils.check_array现在通过返回具有 object dtype 的 ndarray 来支持具有扩展数组和 object dtypes 的 pandas DataFrame。 #25814 by Thomas Fan。API Change 引入了
utils.estimator_checks.check_transformers_unfitted_stateless,以确保无状态转换器在调用fit或fit_transform之前调用transform时不会引发NotFittedError。 #25190 by Vincent Maladière。API Change 当实例化一个继承自已弃用的基类(即使用
utils.deprecated装饰的类)并且覆盖了__init__方法时,现在会引发FutureWarning。 #25733 by Brigitta Sipőcz and Jérémie du Boisberranger。
sklearn.semi_supervised#
Enhancement
semi_supervised.LabelSpreading.fit和semi_supervised.LabelPropagation.fit现在接受稀疏度量。 #19664 by Kaushik Amar Das。
杂项#
Enhancement 替换了过时的异常
EnvironmentError、IOError和WindowsError。 #26466 by 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, Hleb 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, Maxime Saur, 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