版本 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#
修复 修复了
decomposition.KernelPCA中的一个错误,通过强制内部preprocessing.KernelCenterer的输出为默认数组。当使用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月
变更的模型#
当使用相同数据和参数拟合时,以下估计器和函数可能与以前版本产生不同的模型。这通常是由于建模逻辑的更改(错误修复或增强)或随机抽样程序导致的。
修复 使用
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为整数dtype时,现在可以正确计算结果。 #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#
修复 从用户提供的
precisions_init初始化mixture.GaussianMixture(用于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。改进
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可能会产生不同的结果。现在它将正确选择为拟合数据中特征数量的倒数,而之前可能会错误地选择为传递给inverse_transform的数据中特征数量的倒数。提供了一个新属性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。修复 如果
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 等人完成。
改进
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为类数组的组合,在这种情况下运行一次初始化。 #26657 由 Binesh Bannerjee。API变更
cluster.KMeans.predict和cluster.MiniBatchKMeans.predict中的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数据帧的索引彼此不一致,且输出配置为pandas时,会引发一个信息性错误。 #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。效率
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor在warm_start=True时,现在只在后续的fit调用中实际有更多的n_estimators时才重新计算袋外分数。 #26318 由 Joshua Choo Yun Keat。改进
ensemble.BaggingClassifier和ensemble.BaggingRegressor公开底层估计器的allow_nan标签。 #25506 由 Thomas Fan。修复
ensemble.RandomForestClassifier.fit当max_samples为浮点数且round(n_samples * max_samples) < 1时,将max_samples = 1。 #25601 由 Jan Fidor。修复 当在pandas数据帧上调用
ensemble.IsolationForest.fit且contamination不为"auto"时,不再警告缺少特征名称。 #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版本不一致的版本反序列化时会引发此警告。 #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的dtype。 #25102 由 Thomas Fan。修复
feature_selection.SequentialFeatureSelector的cv参数现在支持生成器。 #25973 由Yao Xiao <Charlie-XIAO>。
sklearn.impute#
改进 将参数
fill_value添加到impute.IterativeImputer。 #25232 由 Thijs van Weezel。修复 当
set_config(transform_output="pandas")时,impute.IterativeImputer现在可以正确保留Pandas索引。 #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#
效率 避免在
linear_model.LinearRegression中当sample_weight=None时的数据缩放以及其他不必要的数据复制和意外的密集到稀疏数据转换。 #26207 由 Olivier Grisel。改进
linear_model.SGDClassifier、linear_model.SGDRegressor和linear_model.SGDOneClassSVM现在保留numpy.float32的dtype。 #25587 由 Omar Salman。改进 属性
n_iter_已包含在linear_model.ARDRegression中,以显示达到停止准则所需的实际迭代次数。 #25697 由 John Pangas。修复 使用更鲁棒的准则来检测
linear_model.LogisticRegression在线性可分问题上使用penalty="l1"和solver="liblinear"时的收敛。 #25214 由 Tom Dupre la Tour。修复 修复了在对
linear_model.LogisticRegression调用fit时,若solver="newton-cholesky"且max_iter=0则会崩溃的问题。该问题是由于在第一次参数更新前未能检查模型状态引起的。 #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#
修复 当
set_config(transform_output="pandas")时,manifold.Isomap现在可以正确保留 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中,当唯一标签数量较大时,预期互信息(expected mutual information)的计算现在更快,并且总体内存使用量也减少了。 #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,由 Yao Xiao 提交。功能增强
metrics.PrecisionRecallDisplay.from_estimator和metrics.PrecisionRecallDisplay.from_predictions现在接受两个新关键字参数plot_chance_level和chance_level_kw,用于绘制基线偶然水平。这条线通过chance_level_属性暴露。 #26019,由 Yao Xiao 提交。修复
metrics.pairwise.manhattan_distances现在支持只读稀疏数据集。 #25432,由 Julien Jerphanion 提交。修复 修复了
metrics.classification_report,使其在输入为空时返回np.nan。此前,“macro avg” 和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 提交。修复
metrics.log_loss在参数y_pred的值未归一化时会发出警告,而不是在指标中实际对其进行归一化。从 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,由 Zhehao Liu 提交。
sklearn.mixture#
效率改进
mixture.GaussianMixture现在效率更高,如果用户提供了权重、均值和精度,它将跳过不必要的初始化。 #26021,由 Jiawei Zhang 提交。
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,用于返回每个交叉验证分割的训练-测试索引。 #25659,由 Guillaume Lemaitre 提交。
sklearn.multioutput#
修复 在
getattr上对multioutput.MultiOutputRegressor.partial_fit和multioutput.MultiOutputClassifier.partial_fit操作,如果调用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的支持。此相异度不是度量(metric),因此 BallTree 无法支持。 #25417,由 Guillaume Lemaitre 提交。API变更
neighbors.NearestNeighbors中除了euclidean和manhattan之外的其他度量以及可调用对象的支持已被弃用,并将在 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属性且所有列均为字符串(例如X是一个pandas.DataFrame),pipeline.FeatureUnion现在可以访问feature_names_in_属性。 #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选择。当元素数量足够少时,它现在可以输出indices/indptr组件为np.int32的csr矩阵,对于足够大的矩阵则会自动使用np.int64。 #20524 由 niuk-a 提交,以及 #23731 由 Meekail Zain 提交。功能增强
preprocessing.SplineTransformer新增参数sparse_output,从 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 由 Hleb Levitski 提交。功能增强 现在,无论使用何种策略,
preprocessing.KBinsDiscretizer都可以通过subsample参数进行子采样。 #26424,由 Jérémie du Boisberranger 提交。修复 当
set_config(transform_output="pandas")时,preprocessing.PowerTransformer现在可以正确保留 Pandas 索引。 #26454,由 Thomas Fan 提交。修复
preprocessing.PowerTransformer现在在使用method="box-cox"处理包含常数np.nan列的数据时,会正确引发错误。 #26400,由 Yao Xiao 提交。修复 使用
method="yeo-johnson"的preprocessing.PowerTransformer现在会保持常数特征不变,而不是使用任意的lambdas_拟合参数值进行转换。 #26566,由 Jérémie du Boisberranger 提交。API变更
preprocessing.KBinsDiscretizer的subsample参数的默认值将从None在 1.5 版本中变更为200_000,当strategy="kmeans"或strategy="uniform"时。 #26424,由 Jérémie du Boisberranger 提交。
sklearn.svm#
API变更
svm.LinearSVC和svm.LinearSVR的dual参数现在接受auto选项。 #26093,由 Hleb Levitski 提交。
sklearn.tree#
重大功能
tree.DecisionTreeRegressor和tree.DecisionTreeClassifier在splitter='best'且分类的准则为gini、entropy或log_loss,或回归的准则为squared_error、friedman_mse或poisson时,支持缺失值。 #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,由 Yao Xiao 提交。
sklearn.utils#
修复 修复了
utils.check_array,使其能够正确转换 pandas 扩展数组。 #25813 和 #26106,由 Thomas Fan 提交。修复
utils.check_array现在支持包含扩展数组和对象 dtype 的 pandas DataFrame,通过返回一个对象 dtype 的 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, 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, 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