版本 1.0#
有关此版本主要亮点的简短说明,请参阅 scikit-learn 1.0 的发行亮点。
变更日志图例
主要功能 以前无法实现的重要功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多的计算或内存。
增强 各种各样的次要改进。
修复 以前未按文档说明工作或未达到合理预期的问题现在已解决。
API 变更 您需要更改代码才能在将来获得相同的效果;或者将来会删除某个功能。
版本 1.0.2#
2021 年 12 月
修复
cluster.Birch、feature_selection.RFECV、ensemble.RandomForestRegressor、ensemble.RandomForestClassifier、ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier现在不再在拟合 pandas DataFrame 时发出警告。 #21578 由 Thomas Fan 完成。
变更日志#
sklearn.cluster#
修复 通过将迭代计数器从 try 块移动到 except 块,修复了
cluster.SpectralClustering中的无限循环问题。 #21271 由 Tyler Martin 完成。
sklearn.datasets#
修复
datasets.fetch_openml现在是线程安全的。数据首先下载到一个临时子文件夹,然后重命名。 #21833 由 Siavash Rezazadeh 完成。
sklearn.decomposition#
修复 修复了
decomposition.DictionaryLearning、decomposition.MiniBatchDictionaryLearning、decomposition.SparsePCA和decomposition.MiniBatchSparsePCA目标函数的约束,使其成为凸函数并与参考文章相匹配。 #19210 由 Jérémie du Boisberranger 完成。
sklearn.ensemble#
已修复
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor和ensemble.RandomTreesEmbedding现在在bootstrap=False且max_samples不为None时会抛出ValueError异常。 #21295 徐浩垠。已修复 修复了
ensemble.GradientBoostingClassifier中的一个bug,该bug导致指数损失函数计算的是正梯度而不是负梯度。 #22050 由 Guillaume Lemaitre 完成。
sklearn.feature_selection#
已修复 通过改进对未设置
feature_names_in_属性的基估计器的支持,修复了feature_selection.SelectFromModel。 #21991 由 Thomas Fan 完成。
sklearn.impute#
已修复 修复了
linear_model.RidgeClassifierCV中的一个bug,该bug导致predict方法对decision_function获得的分数执行了argmax操作,而不是返回多标签指示矩阵。 #19869 由 Guillaume Lemaitre 完成。
sklearn.linear_model#
已修复
linear_model.LassoLarsIC现在可以正确计算AIC和BIC。当n_features > n_samples以及未提供噪声方差时,现在会抛出错误。 #21481 由 Guillaume Lemaitre 和 Andrés Babino 完成。
sklearn.manifold#
已修复 修复了使用预计算的密集距离矩阵拟合
manifold.Isomap时,邻居图具有多个不相连组件时出现的无必要错误。 #21915 由 Tom Dupre la Tour 完成。
sklearn.metrics#
已修复 所有
sklearn.metrics.DistanceMetric子类现在都正确支持只读缓冲区属性。这修复了1.0.0版本相对于0.24.2版本引入的回归问题。 #21694 由 Julien Jerphanion 完成。已修复 所有
sklearn.metrics.MinkowskiDistance现在都接受一个权重参数,这使得编写与scipy 1.8及更早版本都一致的代码成为可能。反过来,这意味着所有基于邻居的估计器(使用algorithm="kd_tree"的估计器除外)现在都接受带有metric="minknowski"的权重参数,以产生始终与scipy.spatial.distance.cdist一致的结果。 #21741 由 Olivier Grisel 完成。
sklearn.multiclass#
已修复 当使用常数整数目标拟合时,
multiclass.OneVsRestClassifier.predict_proba不再报错。 #21871 由 Thomas Fan 贡献。
sklearn.neighbors#
已修复
neighbors.KDTree和neighbors.BallTree正确支持只读缓冲区属性。 #21845 由 Thomas Fan 贡献。
sklearn.preprocessing#
已修复 修复了
preprocessing.OneHotEncoder中与 NumPy 1.22 的兼容性错误。 #21517 由 Thomas Fan 贡献。
sklearn.tree#
已修复 防止
tree.plot_tree绘制超出图形边界的图形。 #21917 由 Thomas Fan 贡献。已修复 支持加载决策树模型的pickle文件,即使该pickle文件是在位数不同的平台上生成的。一个典型的例子是在64位机器上训练和保存模型,然后在32位机器上加载模型进行预测。 #21552 由 Loïc Estève 贡献。
sklearn.utils#
已修复
utils.estimator_html_repr现在对生成的HTML中的所有估计器描述进行转义。 #21493 由 Aurélien Geron 贡献。
版本 1.0.1#
2021年10月
已修复的模型#
已修复 以下类的非拟合方法在使用具有有效特征名称的DataFrame拟合时不会引发UserWarning:
covariance.EllipticEnvelope,ensemble.IsolationForest,ensemble.AdaBoostClassifier,neighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,neighbors.RadiusNeighborsRegressor。 #21199 由 Thomas Fan 贡献。
sklearn.calibration#
已修复 修复了
calibration.CalibratedClassifierCV,使其在计算基本估计器预测时考虑sample_weight(当ensemble=False时)。 #20638 由 Julien Bohné 贡献。已修复 修复了
calibration.CalibratedClassifierCV(使用method="sigmoid") 中的一个错误,该错误在计算贝叶斯先验时忽略了sample_weight。 #21179 由 Guillaume Lemaitre 贡献。
sklearn.cluster#
已修复 修复了
cluster.KMeans中的一个错误,确保稀疏和密集输入之间的可重复性和等效性。 #21195 由 Jérémie du Boisberranger 贡献。
sklearn.ensemble#
已修复 修复了一个错误,该错误在极少数情况下会导致
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor出现段错误。 #21130 Christian Lorentzen 贡献。
sklearn.gaussian_process#
修复 在
sklearn.gaussian_process.GaussianProcessRegressor中,使用多目标时正确计算y_std,从而允许在多目标场景中进行正确的归一化。 #20761 由 Patrick de C. T. R. Ferreira 完成。
sklearn.feature_extraction#
效率提升 修复了1.0.0版本中引入的
feature_extraction.text.CountVectorizer的transform方法的效率回归问题,该方法不再检查提供的词汇表中是否存在大写字符。 #21251 由 Jérémie du Boisberranger 完成。修复 修复了
feature_extraction.text.CountVectorizer和feature_extraction.text.TfidfVectorizer中的一个错误,当 ‘min_idf’ 或 ‘max_idf’ 为大于1的浮点数时,会引发错误。 #20752 由 Alek Lefebvre 完成。
sklearn.linear_model#
修复 提高了不同版本的 openblas 的
linear_model.LassoLars的稳定性。 #21340 由 Thomas Fan 完成。修复
linear_model.LogisticRegression现在在求解器不支持具有 int64 索引的稀疏矩阵时,会抛出一个更好的错误消息。 #21093 由 Tom Dupre la Tour 完成。
sklearn.neighbors#
修复 当使用
metric="precomputed"时,neighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,neighbors.RadiusNeighborsRegressor对于bsr和dok稀疏矩阵在fit,kneighbors和radius_neighbors方法中会引发错误,这是由于处理bsr和dok稀疏图 格式中的显式零值造成的。 #21199 由 Thomas Fan 完成。
sklearn.pipeline#
修复
pipeline.Pipeline.get_feature_names_out正确地将特征名称从管道的一步传递到下一步。 #21351 由 Thomas Fan 完成。
sklearn.svm#
修复
svm.SVC和svm.SVR检查其内部表示中是否存在不一致,并引发错误而不是段错误。此修复还解决了 CVE-2020-28975。 #21336 由 Thomas Fan 完成。
sklearn.utils#
增强
utils.validation._check_sample_weight可以对样本权重执行非负性检查。可以使用 only_non_negative bool 参数将其打开。更新了检查非负权重的估计器:linear_model.LinearRegression(此处之前的错误消息具有误导性)、ensemble.AdaBoostClassifier、ensemble.AdaBoostRegressor、neighbors.KernelDensity。 #20880 由 Guillaume Lemaitre 和 András Simon 完成。修复 修复了
sklearn.utils.metaestimators.if_delegate_has_method中的一个错误,其中对属性的基本检查不适用于 NumPy 数组。 #21145 由 Zahlii 完成。
其他#
修复 对没有特征名称的数据集拟合估计器,而先前在具有特征名称的数据集上拟合的估计器不再保留存储在
feature_names_in_属性中的旧特征名称。 #21389 由 Jérémie du Boisberranger 完成。
1.0.0 版本#
2021年9月
最小依赖项#
scikit-learn 的 1.0.0 版本需要 python 3.7+、numpy 1.14.6+ 和 scipy 1.1.0+。可选的最小依赖项是 matplotlib 2.2.2+。
强制使用仅限关键字的参数#
为了促进清晰且明确的库使用,现在大多数构造函数和函数参数必须作为关键字参数传递(即使用 param=value 语法)而不是位置参数。如果仅限关键字的参数用作位置参数,则现在会引发 TypeError。 #15005 #20002 由 Joel Nothman、Adrin Jalali、Thomas Fan、Nicolas Hug 和 Tom Dupre la Tour 完成。更多详情请参见 SLEP009。
更改的模型#
使用相同数据和参数拟合的以下估计器和函数可能会产生与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机采样程序中的更改造成的。
修复
manifold.TSNE现在避免了在亲和矩阵计算期间出现数值下溢问题。修复
manifold.Isomap现在沿着一些最小距离对连接邻居图的断开连接的组件,而不是将所有无限距离更改为零。修复
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor的分割标准可能会受到处理舍入误差的修复的影响。以前可能会出现一些额外的虚假分割。修复 使用
stratify参数的model_selection.train_test_split和model_selection.StratifiedShuffleSplit可能会导致略微不同的结果。
详细信息列在下面的更改日志中。
(虽然我们正在努力通过提供此信息来更好地告知用户,但我们无法保证此列表完整。)
更改日志#
API变更 通过
loss和criterion参数使用平方误差的选项已变得更加一致。推荐的方式是将值设置为"squared_error"。旧的选项名称仍然有效,会生成相同的模型,但已被弃用,并将在1.2版本中移除。 #19310 由 Christian Lorentzen 贡献。对于
ensemble.ExtraTreesRegressor,criterion="mse"已被弃用,请改用"squared_error",现在这是默认值。对于
ensemble.GradientBoostingRegressor,loss="ls"已被弃用,请改用"squared_error",现在这是默认值。对于
ensemble.RandomForestRegressor,criterion="mse"已被弃用,请改用"squared_error",现在这是默认值。对于
ensemble.HistGradientBoostingRegressor,loss="least_squares"已被弃用,请改用"squared_error",现在这是默认值。对于
linear_model.RANSACRegressor,loss="squared_loss"已被弃用,请改用"squared_error"。对于
linear_model.SGDRegressor,loss="squared_loss"已被弃用,请改用"squared_error",现在这是默认值。对于
tree.DecisionTreeRegressor,criterion="mse"已被弃用,请改用"squared_error",现在这是默认值。对于
tree.ExtraTreeRegressor,criterion="mse"已被弃用,请改用"squared_error",现在这是默认值。
API变更 通过
loss和criterion参数使用绝对误差的选项已变得更加一致。推荐的方式是将值设置为"absolute_error"。旧的选项名称仍然有效,会生成相同的模型,但已被弃用,并将在1.2版本中移除。 #19733 由 Christian Lorentzen 贡献。对于
ensemble.ExtraTreesRegressor,criterion="mae"已被弃用,请改用"absolute_error"。对于
ensemble.GradientBoostingRegressor,loss="lad"已被弃用,请改用"absolute_error"。对于
ensemble.RandomForestRegressor,criterion="mae"已被弃用,请改用"absolute_error"。对于
ensemble.HistGradientBoostingRegressor,loss="least_absolute_deviation"已被弃用,请改用"absolute_error"。对于
linear_model.RANSACRegressor,loss="absolute_loss"已被弃用,请改用"absolute_error",现在这是默认值。对于
tree.DecisionTreeRegressor,criterion="mae"已被弃用,请改用"absolute_error"。对于
tree.ExtraTreeRegressor,criterion="mae"已被弃用,请改用"absolute_error"。
API变更 在1.0版本中已弃用
np.matrix的用法,并在1.2版本中将引发TypeError。 #20165 由 Thomas Fan贡献。API变更 转换器API中添加了get_feature_names_out 来获取输出特征的名称。
get_feature_names已被弃用。 #18444 由 Thomas Fan贡献。API变更 所有估计器在拟合pandas Dataframes时都会存储
feature_names_in_。这些特征名称会与在非fit方法(例如transform)中看到的名称进行比较,如果不一致,将引发FutureWarning。这些FutureWarning将在1.2版本中变为ValueError。 #18010 由 Thomas Fan贡献。
sklearn.base#
修复
config_context现在是线程安全的。 #18736 由 Thomas Fan贡献。
sklearn.calibration#
新增功能 添加了
calibration.CalibrationDisplay用于绘制校准曲线。 #17443 由 Lucy Liu贡献。修复
calibration.CalibratedClassifierCV的predict和predict_proba方法现在可以正确地用于预先拟合的管道。 #19641 由 Alek Lefebvre贡献。修复 修复了在
calibration.CalibratedClassifierCV中使用ensemble.VotingClassifier作为base_estimator时的错误。 #20087 由 Clément Fauchereau贡献。
sklearn.cluster#
效率提升
cluster.KMeans和cluster.MiniBatchKMeans的"k-means++"初始化现在更快,尤其是在多核环境中。 #19002 由 Jon Crall 和 Jérémie du Boisberranger贡献。效率提升 使用
algorithm='elkan'的cluster.KMeans现在在多核环境中更快。 #19052 由 Yusuke Nagasaka贡献。效率提升
cluster.MiniBatchKMeans现在在多核环境中更快。 #17622 由 Jérémie du Boisberranger贡献。效率提升
cluster.OPTICS现在可以使用memory参数缓存树计算的输出。 #19024 由 Frankie Robertson贡献。增强
cluster.AffinityPropagation的predict和fit_predict方法现在接受稀疏数据类型作为输入数据。 #20117 由 Venkatachalam Natchiappan贡献。修复 修复了
cluster.MiniBatchKMeans中的一个bug,该bug导致在输入为稀疏数据时样本权重被部分忽略。 #17622 由 Jérémie du Boisberranger贡献。修复 基于
cluster.MiniBatchKMeans中心变化改进的收敛检测,该检测几乎从未实现过。 #17622 由 Jérémie du Boisberranger 完成。修复
cluster.AgglomerativeClustering现在支持只读内存映射数据集。 #19883 由 Julien Jerphanion 完成。修复 当连接性和亲和性都被预计算并且连接组件的数量大于1时,
cluster.AgglomerativeClustering正确连接组件。 #20597 由 Thomas Fan 完成。修复
cluster.FeatureAgglomeration的fit函数不再接受**params关键字参数,从而产生更简洁的错误消息。 #20899 由 Adam Li 完成。修复 修复了
cluster.KMeans中的一个bug,确保稀疏和密集输入之间的可重复性和等效性。 #20200 由 Jérémie du Boisberranger 完成。API变更
cluster.Birch的属性fit_和partial_fit_已弃用,将在1.2版本中移除。 #19297 由 Thomas Fan 完成。API变更 由于效率原因,
cluster.MiniBatchKMeans的batch_size参数的默认值已从100更改为1024。cluster.MiniBatchKMeans的n_iter_属性现在报告已启动的轮数,而n_steps_属性报告已处理的小批次数。 #17622 由 Jérémie du Boisberranger 完成。API变更 当传递
np.matrix时,cluster.spectral_clustering会引发改进的错误。 #20560 由 Thomas Fan 完成。
sklearn.compose#
增强
compose.ColumnTransformer现在在output_indices_中记录每个转换器的输出。 #18393 由 Luca Bittarello 完成。增强
compose.ColumnTransformer现在允许DataFrame输入在其列在transform中以更改的顺序出现。此外,如果remainder='drop',则转换中不需要丢弃的列,并且将忽略额外的列。 #19263 由 Thomas Fan 完成。增强 向
compose.TransformedTargetRegressor.predict添加**predict_params关键字参数,该参数将关键字参数传递给回归器。 #19244 由 Ricardo 完成。修复
compose.ColumnTransformer.get_feature_names支持其任何转换器返回的非字符串特征名称。但是,请注意get_feature_names已弃用,请改用get_feature_names_out。 #18459 由 Albert Villanova del Moral 和 Alonso Silva Allende 完成。修复
compose.TransformedTargetRegressor现在使用合适的转换器来处理nD目标。 #18898 由 Oras Phongpanagnam 完成。API 变更 向
compose.ColumnTransformer添加了verbose_feature_names_out。此标志控制 get_feature_names_out 中特征名称的前缀。由 Thomas Fan 完成,相关 PR:#18444 和 #21080。
sklearn.covariance#
修复 向
covariance.ledoit_wolf和covariance.ledoit_wolf_shrinkage添加了数组检查。由 Hugo Defois 完成,相关 PR:#20416。API 变更 已弃用
cv_results_中的以下键:'mean_score'、'std_score'和'split(k)_score',建议使用'mean_test_score'、'std_test_score'和'split(k)_test_score'。由 Thomas Fan 完成,相关 PR:#20583。
sklearn.datasets#
增强
datasets.fetch_openml现在在返回 pandas DataFrame 时支持包含缺失值的类别。由 Thomas Fan、Amanda Dsouza 和 EL-ATEIF Sara 完成,相关 PR:#19365。增强
datasets.fetch_kddcup99在缓存文件无效时会发出更清晰的错误消息。由 Thomas Fan 完成,相关 PR:#19669。增强 将与资源文件 I/O 相关的
__file__用法替换为importlib.resources,以避免假设这些资源文件(例如iris.csv)已存在于文件系统中,并由此扩展以支持PyOxidizer等工具。由 Jack Liu 完成,相关 PR:#20297。修复 缩短 openml 测试中的数据文件名,以更好地支持在 Windows 上安装以及其默认的 260 个字符的文件名限制。由 Thomas Fan 完成,相关 PR:#20209。
修复
datasets.fetch_kddcup99在return_X_y=True和as_frame=True时返回 DataFrame。由 Thomas Fan 完成,相关 PR:#19011。API 变更 在 1.0 版本中弃用
datasets.load_boston,并将在 1.2 版本中移除。文档中提供了加载类似数据集的替代代码片段。详情请参阅函数的文档字符串。由 Guillaume Lemaitre 完成,相关 PR:#20729。
sklearn.decomposition#
增强 向
decomposition.KernelPCA添加了一个新的近似求解器(随机 SVD,可通过eigen_solver='randomized'使用)。当样本数量远大于所需组件数量时,这会显著加快计算速度。由 Sylvain Marié 完成,相关 PR:#12069。修复 修复了对布尔数据进行聚类时出现的多个不正确的数 据转换警告。由 Surya Prakash 完成,相关 PR:#19046。
修复 修复了
decomposition.dict_learning(由decomposition.DictionaryLearning使用)以确保输出的确定性。通过翻转用于初始化代码的 SVD 输出的符号来实现。由 Bruno Charron 完成,相关 PR:#18433。修复 修复了
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中字典更新不正确的错误。由 Jérémie du Boisberranger 完成,相关 PR:#19198。修复 修复了
decomposition.DictionaryLearning、decomposition.SparsePCA、decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA、decomposition.dict_learning和decomposition.dict_learning_online中的一个bug,该bug导致字典更新期间未使用的原子重启功能无法按预期工作。#19198 由 Jérémie du Boisberranger提交。API变更 在
decomposition.DictionaryLearning、decomposition.MiniBatchDictionaryLearning、decomposition.dict_learning和decomposition.dict_learning_online中,从1.2版本开始,transform_alpha的默认值将等于alpha,而不是1.0。#19159 由 Benoît Malézieux提交。API变更 重命名
decomposition.KernelPCA中的变量名以提高可读性。lambdas_和alphas_分别重命名为eigenvalues_和eigenvectors_。lambdas_和alphas_已弃用,将在1.2版本中移除。#19908 由 Kei Ishikawa提交。API变更
decomposition.NMF和decomposition.non_negative_factorization的alpha和regularization参数已弃用,将在1.2版本中移除。请改用新的参数alpha_W和alpha_H。#20512 由 Jérémie du Boisberranger提交。
sklearn.dummy#
API变更
dummy.DummyRegressor的属性n_features_in_已弃用,将在1.2版本中移除。#20960 由 Thomas Fan提交。
sklearn.ensemble#
增强
HistGradientBoostingClassifier和HistGradientBoostingRegressor在决定OpenMP使用的线程数量时,会考虑cgroups配额。这避免了例如在docker容器中使用这些类时因过度订阅而导致的性能问题。#20477 由 Thomas Fan提交。增强
HistGradientBoostingClassifier和HistGradientBoostingRegressor不再是实验性的。它们现在被认为是稳定的,并遵循与所有其他估计器相同的弃用周期。#19799 由 Nicolas Hug提交。增强 改善了
ensemble.StackingClassifier和ensemble.StackingRegressor的HTML渲染。#19564 由 Thomas Fan提交。增强 为
ensemble.RandomForestRegressor添加了泊松准则。#19836 由 Brian Sun提交。修复 由于scikit-learn没有提供支持这种目标类型的任何指标,因此不允许在
ensemble.RandomForestClassifier和ensemble.ExtraTreesClassifier中计算多类别多输出目标的包外(OOB)得分。此外,还进行了私有重构。#19162 by Guillaume Lemaitre.修复 提高
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中权重提升的数值精度,以避免下溢。#10096 by Fenil Suchak.修复 将
ensemble.RandomForestClassifier,ensemble.RandomForestRegressor中参数max_samples的范围修正为(0.0, 1.0],其中max_samples=1.0被解释为使用所有n_samples进行bootstrap。#20159 by @murata-yu.修复 修复了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中的一个bug,其中sample_weight参数在fit过程中被覆盖。#20534 by Guillaume Lemaitre.API变更 删除了
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor中的tol=None选项。请使用tol=0以获得相同的结果。#19296 by Thomas Fan.
sklearn.feature_extraction#
修复 修复了
feature_extraction.text.HashingVectorizer中的一个bug,其中某些输入字符串会导致转换后的数据中出现负索引。#19035 by Liu Yu.修复 通过引发不支持的值类型的错误,修复了
feature_extraction.DictVectorizer中的一个bug。#19520 by Jeff Zhao.修复 修复了
feature_extraction.image.img_to_graph和feature_extraction.image.grid_to_graph中的一个bug,其中单例连通分量未被正确处理,导致顶点索引错误。#18964 by Bertrand Thirion.修复 当存在具有大写字符的词汇表条目时,在
feature_extraction.text.CountVectorizer中使用lowercase=True时发出警告,以避免在结果特征向量中出现静默丢失。#19401 by Zito Relova
sklearn.feature_selection#
功能
feature_selection.r_regression计算特征与目标之间的皮尔逊R相关系数。#17169 by Dmytro Lituiev and Julien Jerphanion.增强
feature_selection.RFE.fit现在接受额外传递给估计器fit方法的估计器参数。 #20380 由 Iván Pulido, Felipe Bidu, Gil Rutter 和 Adrin Jalali 贡献。修复 修复了
isotonic.isotonic_regression中的一个 bug,该 bug 会在fit过程中覆盖用户传递的sample_weight。 #20515 由 Carsten Allefeld 贡献。修复 修改了
feature_selection.SequentialFeatureSelector以允许无监督建模,这样fit签名就不需要进行任何y验证,并允许y=None。 #19568 由 Shyam Desai 贡献。API变更 当方差阈值小于零时,
feature_selection.VarianceThreshold会引发错误。 #20207 由 Tomohiro Endo 贡献。API变更 弃用
feature_selection.RFECV中的grid_scores_,转而使用cv_results_中的分数。grid_scores_将在 1.2 版本中移除。 #20161 由 Shuhei Kayawari 和 @arka204 贡献。
sklearn.inspection#
增强 在
inspection.permutation_importance中添加了max_samples参数。它可以抽取样本子集来计算置换重要性。这在评估大型数据集上的特征重要性时,有助于保持方法的可处理性。 #20431 由 Oliver Pfaffel 贡献。增强 在部分依赖图
inspection.plot_partial_dependence和inspection.PartialDependenceDisplay.plot中添加了 kwargs,以便分别格式化 ICE 和 PD 线。 #19428 由 Mehdi Hamoumi 贡献。修复 允许
inspection.permutation_importance输入多个评分器。 #19411 由 Simona Maggio 贡献。API变更
inspection.PartialDependenceDisplay公开了类方法:from_estimator。inspection.plot_partial_dependence已弃用,推荐使用此类方法,并在 1.2 版本中移除。 #20959 由 Thomas Fan 贡献。
sklearn.kernel_approximation#
修复 修复了
kernel_approximation.Nystroem中的一个 bug,该 bug 使属性component_indices_与用于生成近似核的样本索引子集不对应。 #20554 由 Xiangyin Kong 贡献。
sklearn.linear_model#
主要功能 添加了
linear_model.QuantileRegressor,它实现了具有 L1 惩罚的线性分位数回归。 #9978 由 David Dale 和 Christian Lorentzen 贡献。新增功能 新的
linear_model.SGDOneClassSVM提供了线性 One-Class SVM 的 SGD 实现。结合核近似技术,该实现近似于核化 One Class SVM 的解,同时受益于样本数量的线性复杂度。 #10027 由 Albert Thomas 完成。新增功能 为
linear_model.LassoCV和linear_model.ElasticNetCV添加了sample_weight参数。 #16449 由 Christian Lorentzen 完成。新增功能 为
linear_model.Ridge添加了新的求解器lbfgs(使用solver="lbfgs"可用)和positive参数。当positive设置为True时,强制系数为正(仅lbfgs支持)。 #20231 由 Toshihiro Nakae 完成。效率提升 当使用
solver='newton-cg'和multi_class!='multinomial'时,linear_model.LogisticRegression的实现针对密集矩阵进行了优化。 #19571 由 Julien Jerphanion 完成。改进
linear_model.Lars、linear_model.LassoLars、linear_model.LarsCV和linear_model.LassoLarsCV的fit方法现在会保留 numpy.float32 的数据类型。 #20155 由 Takeshi Oura 完成。改进 通过
precompute参数验证传递给线性模型的用户提供的 Gram 矩阵。 #19004 由 Adam Midvidy 完成。错误修复
linear_model.ElasticNet.fit现在不再就地修改sample_weight。 #19055 由 Thomas Fan 完成。错误修复
linear_model.Lasso和linear_model.ElasticNet不再存在与目标函数不对应的dual_gap_。 #19172 由 Mathurin Massias 完成。错误修复 当
normalize=True时,线性模型中现在完全考虑了sample_weight,用于特征中心化和特征缩放。 #19426 由 Alexandre Gramfort 和 Maria Telenczuk 完成。错误修复 残差等于
residual_threshold的点现在被linear_model.RANSACRegressor视为内点。当residual_threshold=0时,这允许在某些数据集上完美拟合模型。 #19499 由 Gregory Strubel 完成。错误修复
linear_model.Ridge的样本权重不变性已在 #19616 中修复,由 Oliver Grisel 和 Christian Lorentzen 完成。错误修复
linear_model.enet_path和linear_model.lasso_path中的字典params应仅包含坐标下降求解器的参数。否则,将引发错误。 #19391 由 Shao Yang Hong 完成。API变更 在
linear_model.RANSACRegressor中发出警告,从 1.2 版本开始,对于除linear_model.LinearRegression之外的模型,需要显式设置min_samples参数。 #19390 由 Shao Yang Hong 贡献。API变更:
linear_model.LinearRegression的参数normalize已弃用,并将从 1.2 版本中移除。弃用的原因:如果fit_intercept设置为 False,则normalize参数无效,因此被认为容易造成混淆。已弃用的LinearModel(normalize=True)的行为可以通过使用包含LinearModel(其中LinearModel可以是LinearRegression、Ridge、RidgeClassifier、RidgeCV或RidgeClassifierCV)的Pipeline来重现:make_pipeline(StandardScaler(with_mean=False), LinearModel())。LinearRegression中的normalize参数已在 #17743 中被 Maria Telenczuk 和 Alexandre Gramfort 弃用。Ridge、RidgeClassifier、RidgeCV和RidgeClassifierCV也一样,参见:#17772 由 Maria Telenczuk 和 Alexandre Gramfort 贡献。BayesianRidge、ARDRegression也一样,参见:#17746 由 Maria Telenczuk 贡献。Lasso、LassoCV、ElasticNet、ElasticNetCV、MultiTaskLasso、MultiTaskLassoCV、MultiTaskElasticNet、MultiTaskElasticNetCV也一样,参见:#17785 由 Maria Telenczuk 和 Alexandre Gramfort 贡献。API变更
OrthogonalMatchingPursuit和OrthogonalMatchingPursuitCV的normalize参数在 1.2 版本中将默认为 False,并在 1.4 版本中移除。 #17750 由 Maria Telenczuk 和 Alexandre Gramfort 完成。LarsLarsCVLassoLarsLassoLarsCVLassoLarsIC同样如此, #17769 由 Maria Telenczuk 和 Alexandre Gramfort 完成。API变更 关键字验证已从以下符合 scikit-learn 规范的估计器的
__init__和set_params方法移动到fit方法:SGDClassifier,SGDRegressor,SGDOneClassSVM,PassiveAggressiveClassifier和PassiveAggressiveRegressor。 #20683 由 Guillaume Lemaitre 完成。
sklearn.manifold#
增强 为
manifold.TSNE中的learning_rate实现了'auto'启发式方法。它将在 1.2 版本中成为默认值。默认初始化将在 1.2 版本中更改为pca。PCA 初始化的标准差将在 1.2 版本中缩放为 1e-4。 #19491 由 Dmitry Kobak 完成。修复 更改数值精度以防止
manifold.TSNE在亲和矩阵计算期间出现下溢问题。 #19472 由 Dmitry Kobak 完成。修复
manifold.Isomap现在使用scipy.sparse.csgraph.shortest_path计算图的最短路径。它还在某些最小距离对上连接邻居图的断开连接的组件,而不是将所有无限距离更改为零。 #20531 由 Roman Yurchak 和 Tom Dupre la Tour 完成。修复 减小
manifold.spectral_embedding中 lobpcg 调用的数值默认容差,以防止数值不稳定。 #21194 由 Andrew Knyazev 完成。
sklearn.metrics#
特性
metrics.mean_pinball_loss提供了用于分位数回归的宾球损失函数。 #19415 由 Xavier Dupré 和 Oliver Grisel 完成。特性
metrics.d2_tweedie_score计算具有幂参数power的 Tweedie 偏差的 D^2 回归得分。这是r2_score的推广,可以解释为解释的 Tweedie 偏差的百分比。 #17036 由 Christian Lorentzen 完成。特性
metrics.mean_squared_log_error现在支持squared=False。 #20326 由 Uttam kumar 完成。效率提升 当标签为整数时,提高了
metrics.confusion_matrix的速度。 #9843 由 Jon Crall 贡献。增强 修复了
metrics.hinge_loss的一个错误,该错误在多分类情况下出现,当pred_decision为一维数组,或者pred_decision参数与labels参数不一致时引发。 #19643 由 Pierre Attard 贡献。修复
metrics.ConfusionMatrixDisplay.plot使用了正确的颜色映射最大值。 #19784 由 Thomas Fan 贡献。修复 样本权重
sample_weight为零的样本不会影响metrics.det_curve,metrics.precision_recall_curve和metrics.roc_curve的结果。 #18328 由 Albert Villanova del Moral 和 Alonso Silva Allende 贡献。修复 避免了在
metrics.adjusted_rand_score中处理大量数据时出现的溢出问题。 #20312 由 Divyanshu Deoli 贡献。API变更
metrics.ConfusionMatrixDisplay公开了两个类方法from_estimator和from_predictions,允许使用估计器或预测结果创建混淆矩阵图。metrics.plot_confusion_matrix已弃用,建议使用这两个类方法代替,将在 1.2 版本中移除。 #18543 由 Guillaume Lemaitre 贡献。API变更
metrics.PrecisionRecallDisplay公开了两个类方法from_estimator和from_predictions,允许使用估计器或预测结果创建精确召回曲线。metrics.plot_precision_recall_curve已弃用,建议使用这两个类方法代替,将在 1.2 版本中移除。 #20552 由 Guillaume Lemaitre 贡献。API变更
metrics.DetCurveDisplay公开了两个类方法from_estimator和from_predictions,允许使用估计器或预测结果创建检测错误率曲线图。metrics.plot_det_curve已弃用,建议使用这两个类方法代替,将在 1.2 版本中移除。 #19278 由 Guillaume Lemaitre 贡献。
sklearn.mixture#
修复 确保在
mixture.GaussianMixture和mixture.BayesianGaussianMixture发散的情况下,最佳参数被正确设置。 #20030 由 Tingshan Liu 和 Benjamin Pedigo 贡献。
sklearn.model_selection#
新增功能 添加了
model_selection.StratifiedGroupKFold,它结合了model_selection.StratifiedKFold和model_selection.GroupKFold,能够在保持每次拆分中类别分布的同时,确保每个组都在单个拆分中。 #18649 由 Leandro Hermida 和 Rodion Martynov 完成。改进 在交叉验证中,仅在主进程中针对每次拆分的拟合失败发出一次警告。 #20619 由 Loïc Estève 完成。
改进
model_selection.BaseShuffleSplit基类现在是公开的。 #20056 由 @pabloduque0 完成。修复 避免在
model_selection.train_test_split中过早溢出。 #20904 由 Tomasz Jakubek 完成。
sklearn.naive_bayes#
修复 离散朴素贝叶斯分类器(
naive_bayes.BernoulliNB,naive_bayes.CategoricalNB,naive_bayes.ComplementNB和naive_bayes.MultinomialNB)的fit和partial_fit方法现在可以正确处理训练集中只有一个类别的简并情况。 #18925 由 David Poznik 完成。API变更 属性
sigma_在naive_bayes.GaussianNB中已被弃用,将在 1.2 版本中移除。请使用var_代替。 #18842 由 Hong Shao Yang 完成。
sklearn.neighbors#
改进
neighbors.KDTree和neighbors.BallTree的创建已得到改进,其最坏情况时间复杂度从 \(\mathcal{O}(n^2)\) 提高到 \(\mathcal{O}(n)\)。 #19473 由 jiefangxuanyan 和 Julien Jerphanion 完成。修复
neighbors.DistanceMetric子类现在支持只读内存映射数据集。 #19883 由 Julien Jerphanion 完成。修复
neighbors.NearestNeighbors,neighbors.KNeighborsClassifier,neighbors.RadiusNeighborsClassifier,neighbors.KNeighborsRegressor和neighbors.RadiusNeighborsRegressor不再在__init__中验证weights,而是在fit中验证weights。 #20072 由 Juan Carlos Alfaro Jiménez 完成。API变更
neighbors.RadiusNeighborsClassifier的参数kwargs已弃用,将在 1.2 版本中移除。 #20842 由 Juan Martín Loyola 完成。
sklearn.neural_network#
修复
neural_network.MLPClassifier和neural_network.MLPRegressor现在可以正确支持从pickle文件中加载模型后继续训练。 #19631 由 Thomas Fan 完成。
sklearn.pipeline#
API变更
pipeline.Pipeline的predict_proba和predict_log_proba方法现在支持将预测关键字参数传递给最终估计器。 #19790 由 Christopher Flynn 完成。
sklearn.preprocessing#
新功能 新的
preprocessing.SplineTransformer是一个用于生成B样条的特征预处理工具,由样条的多项式degree、节点数n_knots和节点定位策略knots参数化。 #18368 由 Christian Lorentzen 完成。preprocessing.SplineTransformer还通过extrapolation参数支持周期性样条。 #19483 由 Malte Londschien 完成。preprocessing.SplineTransformer支持节点位置策略"quantile"的样本权重。 #20526 由 Malte Londschien 完成。新功能
preprocessing.OrdinalEncoder默认支持直接传递缺失值。 #19069 由 Thomas Fan 完成。新功能
preprocessing.OneHotEncoder现在支持handle_unknown='ignore'和丢弃类别。 #19041 由 Thomas Fan 完成。新功能
preprocessing.PolynomialFeatures现在支持将元组传递给degree,即degree=(min_degree, max_degree)。 #20250 由 Christian Lorentzen 完成。效率提升
preprocessing.StandardScaler速度更快,内存效率更高。 #20652 由 Thomas Fan 完成。效率提升 将
preprocessing.KBinsDiscretizer中cluster.KMeans的algorithm参数从auto改为full。 #19934 由 Gleb Levitskiy 完成。效率提升
preprocessing.PolynomialFeatures的fit方法实现现在速度更快。在大规模稀疏输入上尤其明显。 #19734 由 Fred Robinson 完成。修复 当输入数据为一维时,
preprocessing.StandardScaler.inverse_transform方法现在会引发错误。 #19752 由 Zhehao Liu 完成。修复
preprocessing.scale,preprocessing.StandardScaler和类似的缩放器检测近乎恒定的特征,以避免将其缩放至非常大的值。此问题尤其在对具有常量列和样本权重的稀疏数据使用缩放器时发生,在这种情况下,通常会禁用居中。#19527 由 Oliver Grisel 和 Maria Telenczuk 完成,以及 #19788 由 Jérémie du Boisberranger 完成。修复
preprocessing.StandardScaler.inverse_transform现在可以正确处理整数数据类型。#19356 由 @makoeppel 完成。修复
preprocessing.OrdinalEncoder.inverse_transform不支持稀疏矩阵,并抛出相应的错误消息。#19879 由 Guillaume Lemaitre 完成。修复 当
handle_unknown='ignore'且未知类别被提供给fit时,preprocessing.OrdinalEncoder的fit方法不会抛出错误。#19906 由 Zhehao Liu 完成。修复 修复了
preprocessing.OrdinalEncoder中的一个回归问题,其中大型 Python 数值由于转换为 C 类型(np.float64或np.int64)时发生溢出而导致错误。#20727 由 Guillaume Lemaitre 完成。修复
preprocessing.FunctionTransformer没有根据inverse_transform的输入设置n_features_in_。#20961 由 Thomas Fan 完成。API 变更
preprocessing.PolynomialFeatures的n_input_features_属性已弃用,推荐使用n_features_in_,并将在 1.2 版本中移除。#20240 由 Jérémie du Boisberranger 完成。
sklearn.svm#
API 变更
svm.OneClassSVM.fit的参数**params已弃用,并将在 1.2 版本中移除。#20843 由 Juan Martín Loyola 完成。
sklearn.tree#
增强 在
tree.export_graphviz中添加fontname参数,用于处理非英文字符。#18959 由 Zero 和 wstates 完成。修复 提高了
tree.plot_tree与高 DPI 屏幕的兼容性。#20023 由 Thomas Fan 完成。修复 修复了
tree.DecisionTreeClassifier,tree.DecisionTreeRegressor中的一个错误,由于舍入误差处理不正确,导致节点可能被分割,而实际上不应该分割。#19336 由 Jérémie du Boisberranger 完成。API变更
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor的n_features_属性已弃用,建议使用n_features_in_属性替代,该属性将在 1.2 版本中移除。 #20272 由 Jérémie du Boisberranger 完成。
sklearn.utils#
增强
randomized_svd中random_state=0的默认值已弃用。从 1.2 版本开始,random_state的默认值将设置为None。 #19459 由 Cindy Bezuidenhout 和 Clifford Akai-Nettey 完成。增强 添加了辅助装饰器
utils.metaestimators.available_if,以更易读的方式为元估计器提供灵活性,使其方法可根据状态启用或禁用。 #19948 由 Joel Nothman 完成。增强
utils.validation.check_is_fitted现在使用__sklearn_is_fitted__(如果可用),而不是检查以下划线结尾的属性。这也使得pipeline.Pipeline和preprocessing.FunctionTransformer通过check_is_fitted(estimator)检查。 #20657 由 Adrin Jalali 完成。修复 修复了
utils.sparsefuncs.mean_variance_axis中的一个bug,当真实方差恰好为零时,计算出的方差精度非常差。 #19766 由 Jérémie du Boisberranger 完成。修复 使用
utils.deprecated装饰的属性的文档字符串现在已正确包装。 #20385 由 Thomas Fan 完成。修复
utils.stats._weighted_percentile现在正确地忽略了对于percentile=0,权重为零且小于具有正权重的最小观测值的观测值。受影响的类包括quantile=0的dummy.DummyRegressor以及alpha=0的ensemble.HuberLossFunction和ensemble.HuberLossFunction。 #20528 由 Malte Londschien 完成。修复 当提供整数索引时,
utils._safe_indexing会显式地创建数据框的副本,避免引发 Pandas 的警告。此警告之前在重采样实用程序和使用这些实用程序的函数(例如model_selection.train_test_split、model_selection.cross_validate、model_selection.cross_val_score、model_selection.cross_val_predict)中引发。 #20673 由 Joris Van den Bossche 完成。修复 修复了
utils.is_scalar_nan中的回归问题,其中大型 Python 数字由于 C 类型(np.float64或np.int64)溢出而引发错误。 #20727 由 Guillaume Lemaitre 完成。修复
check_array中对np.matrix的支持已在 1.0 版本中弃用,并在 1.2 版本中将引发TypeError。 #20165 由 Thomas Fan 完成。API变更
utils._testing.assert_warns和utils._testing.assert_warns_message在1.0版本中已弃用,将在1.2版本中移除。请改用pytest.warns上下文管理器。请注意,这些函数未在文档中记录,并且不是公共API的一部分。 #20521 由 Olivier Grisel提交。API变更 修复了
utils.graph.graph_shortest_path中的几个错误,该函数现已弃用。请改用scipy.sparse.csgraph.shortest_path。 #20531 由 Tom Dupre la Tour提交。
代码和文档贡献者
感谢自0.24版本以来为项目维护和改进做出贡献的每一个人,包括:
Abdulelah S. Al Mesfer, Abhinav Gupta, Adam J. Stewart, Adam Li, Adam Midvidy, Adrian Garcia Badaracco, Adrian Sadłocha, Adrin Jalali, Agamemnon Krasoulis, Alberto Rubiales, Albert Thomas, Albert Villanova del Moral, Alek Lefebvre, Alessia Marcolini, Alexandr Fonari, Alihan Zihna, Aline Ribeiro de Almeida, Amanda, Amanda Dsouza, Amol Deshmukh, Ana Pessoa, Anavelyz, Andreas Mueller, Andrew Delong, Ashish, Ashvith Shetty, Atsushi Nukariya, Aurélien Geron, Avi Gupta, Ayush Singh, baam, BaptBillard, Benjamin Pedigo, Bertrand Thirion, Bharat Raghunathan, bmalezieux, Brian Rice, Brian Sun, Bruno Charron, Bryan Chen, bumblebee, caherrera-meli, Carsten Allefeld, CeeThinwa, Chiara Marmo, chrissobel, Christian Lorentzen, Christopher Yeh, Chuliang Xiao, Clément Fauchereau, cliffordEmmanuel, Conner Shen, Connor Tann, David Dale, David Katz, David Poznik, Dimitri Papadopoulos Orfanos, Divyanshu Deoli, dmallia17, Dmitry Kobak, DS_anas, Eduardo Jardim, EdwinWenink, EL-ATEIF Sara, Eleni Markou, EricEllwanger, Eric Fiegel, Erich Schubert, Ezri-Mudde, Fatos Morina, Felipe Rodrigues, Felix Hafner, Fenil Suchak, flyingdutchman23, Flynn, Fortune Uwha, Francois Berenger, Frankie Robertson, Frans Larsson, Frederick Robinson, frellwan, Gabriel S Vicente, Gael Varoquaux, genvalen, Geoffrey Thomas, geroldcsendes, Gleb Levitskiy, Glen, Glòria Macià Muñoz, gregorystrubel, groceryheist, Guillaume Lemaitre, guiweber, Haidar Almubarak, Hans Moritz Günther, Haoyin Xu, Harris Mirza, Harry Wei, Harutaka Kawawari, Hassan Alsawadi, Helder Geovane Gomes de Lima, Hugo DEFOIS, Igor Ilic, Ikko Ashimine, Isaack Mungui, Ishaan Bhat, Ishan Mishra, Iván Pulido, iwhalvic, J Alexander, Jack Liu, James Alan Preiss, James Budarz, James Lamb, Jannik, Jeff Zhao, Jennifer Maldonado, Jérémie du Boisberranger, Jesse Lima, Jianzhu Guo, jnboehm, Joel Nothman, JohanWork, John Paton, Jonathan Schneider, Jon Crall, Jon Haitz Legarreta Gorroño, Joris Van den Bossche, José Manuel Nápoles Duarte, Juan Carlos Alfaro Jiménez, Juan Martin Loyola, Julien Jerphanion, Julio Batista Silva, julyrashchenko, JVM, Kadatatlu Kishore, Karen Palacio, Kei Ishikawa, kmatt10, kobaski, Kot271828, Kunj, KurumeYuta, kxytim, lacrosse91, LalliAcqua, Laveen Bagai, Leonardo Rocco, Leonardo Uieda, Leopoldo Corona, Loic Esteve, LSturtew, Luca Bittarello, Luccas Quadros, Lucy Jiménez, Lucy Liu, ly648499246, Mabu Manaileng, Manimaran, makoeppel, Marco Gorelli, Maren Westermann, Mariangela, Maria Telenczuk, marielaraj, Martin Hirzel, Mateo Noreña, Mathieu Blondel, Mathis Batoul, mathurinm, Matthew Calcote, Maxime Prieur, Maxwell, Mehdi Hamoumi, Mehmet Ali Özer, Miao Cai, Michal Karbownik, michalkrawczyk, Mitzi, mlondschien, Mohamed Haseeb, Mohamed Khoualed, Muhammad Jarir Kanji, murata-yu, Nadim Kawwa, Nanshan Li, naozin555, Nate Parsons, Neal Fultz, Nic Annau, Nicolas Hug, Nicolas Miller, Nico Stefani, Nigel Bosch, Nikita Titov, Nodar Okroshiashvili, Norbert Preining, novaya, Ogbonna Chibuike Stephen, OGordon100, Oliver Pfaffel, Olivier Grisel, Oras Phongpanangam, Pablo Duque, Pablo Ibieta-Jimenez, Patric Lacouth, Paulo S. Costa, Paweł Olszewski, Peter Dye, PierreAttard, Pierre-Yves Le Borgne, PranayAnchuri, Prince Canuma, putschblos, qdeffense, RamyaNP, ranjanikrishnan, Ray Bell, Rene Jean Corneille, Reshama Shaikh, ricardojnf, RichardScottOZ, Rodion Martynov, Rohan Paul, Roman Lutz, Roman Yurchak, Samuel Brice, Sandy Khosasi, Sean Benhur J, Sebastian Flores, Sebastian Pölsterl, Shao Yang Hong, shinehide, shinnar, shivamgargsya, Shooter23, Shuhei Kayawari, Shyam Desai, simonamaggio, Sina Tootoonian, solosilence, Steven Kolawole, Steve Stagg, Surya Prakash, swpease, Sylvain Marié, Takeshi Oura, Terence Honles, TFiFiE, Thomas A Caswell, Thomas J. Fan, Tim Gates, TimotheeMathieu, Timothy Wolodzko, Tim Vink, t-jakubek, t-kusanagi, tliu68, Tobias Uhmann, tom1092, Tomás Moreyra, Tomás Ronald Hughes, Tom Dupré la Tour, Tommaso Di Noto, Tomohiro Endo, TONY GEORGE, Toshihiro NAKAE, tsuga, Uttam kumar, vadim-ushtanit, Vangelis Gkiastas, Venkatachalam N, Vilém Zouhar, Vinicius Rios Fuck, Vlasovets, waijean, Whidou, xavier dupré, xiaoyuchai, Yasmeen Alsaedy, yoch, Yosuke KOBAYASHI, Yu Feng, YusukeNagasaka, yzhenman, Zero, ZeyuSun, ZhaoweiWang, Zito, Zito Relova