版本 1.0#
有关本次发布主要亮点的简要描述,请参阅 scikit-learn 1.0 版本发布亮点 。
Legend for changelogs
Major Feature something big that you couldn’t do before.
Feature something that you couldn’t do before.
Efficiency an existing feature now may not require as much computation or memory.
Enhancement a miscellaneous minor improvement.
Fix something that previously didn’t work as documented – or according to reasonable expectations – should now work.
API Change you will need to change your code to have the same effect in the future; or a feature will be removed in the future.
版本 1.0.2#
2021年12月
Fix
cluster.Birch、feature_selection.RFECV、ensemble.RandomForestRegressor、ensemble.RandomForestClassifier、ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier在拟合 pandas DataFrame 时不再引发警告。#21578 由 Thomas Fan 提交。
更新日志#
sklearn.cluster#
Fix 修复了
cluster.SpectralClustering中的无限循环问题,将迭代计数器从 try 移动到 except。 #21271 由 Tyler Martin 提交。
sklearn.datasets#
Fix
datasets.fetch_openml现在线程安全。数据首先下载到临时子文件夹,然后重命名。 #21833 由 Siavash Rezazadeh 提交。
sklearn.decomposition#
Fix 修复了
decomposition.DictionaryLearning、decomposition.MiniBatchDictionaryLearning、decomposition.SparsePCA和decomposition.MiniBatchSparsePCA的目标函数的约束条件,使其为凸函数并符合参考文章。 #19210 由 Jérémie du Boisberranger 提交。
sklearn.ensemble#
Fix
ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor和ensemble.RandomTreesEmbedding现在在bootstrap=False且max_samples不为None时引发ValueError。
Fix 修复了
ensemble.GradientBoostingClassifier中的一个错误,其中指数损失计算的是正梯度而不是负梯度。 #22050 由 Guillaume Lemaitre 提交。
sklearn.feature_selection#
Fix 通过改进对未设置
feature_names_in_的基础估计器的支持,修复了feature_selection.SelectFromModel。 #21991 由 Thomas Fan 提交。
sklearn.impute#
Fix 修复了
linear_model.RidgeClassifierCV中的一个错误,其中predict方法在从decision_function获得的分数上执行argmax而不是返回多标签指示矩阵。 #19869 由 Guillaume Lemaitre 提交。
sklearn.linear_model#
Fix
linear_model.LassoLarsIC现在正确计算 AIC 和 BIC。当n_features > n_samples且未提供噪声方差时,现在会引发错误。 #21481 由 Guillaume Lemaitre 和 Andrés Babino 提交。
sklearn.manifold#
Fix 修复了在使用预计算的密集距离矩阵拟合
manifold.Isomap时,当邻居图具有多个不连通组件时出现的不必要错误。 #21915 由 Tom Dupre la Tour 提交。
sklearn.metrics#
Fix 所有
sklearn.metrics.DistanceMetric子类现在都正确支持只读缓冲区属性。 这修复了相对于 0.24.2 在 1.0.0 中引入的回归问题。 #21694 由 Julien Jerphanion 提交。Fix 所有
sklearn.metrics.MinkowskiDistance现在接受一个权重参数,使得代码在 scipy 1.8 和早期版本中行为一致。这反过来意味着所有
基于邻居的估计器(除了使用 algorithm="kd_tree" 的那些)现在接受一个带有 metric="minknowski" 的权重参数,以产生始终与 scipy.spatial.distance.cdist 一致的结果。#21741 由 Olivier Grisel 贡献。
sklearn.multiclass#
Fix
multiclass.OneVsRestClassifier.predict_proba在拟合常量整数目标时不会出错。#21871 由 Thomas Fan 贡献。
sklearn.neighbors#
Fix
neighbors.KDTree和neighbors.BallTree正确支持只读缓冲区属性。#21845 由 Thomas Fan 贡献。
sklearn.preprocessing#
Fix 修复了与 NumPy 1.22 的兼容性问题,在
preprocessing.OneHotEncoder中。#21517 由 Thomas Fan 贡献。
sklearn.tree#
Fix 防止
tree.plot_tree绘制超出图表边界。#21917 由 Thomas Fan 贡献。Fix 支持加载决策树模型的 pickle 文件,当 pickle 是在具有不同位数的平台上生成时。一个典型的例子是在 64 位机器上训练和 pickle 模型,然后在 32 位机器上加载模型进行预测。#21552 由 Loïc Estève 贡献。
sklearn.utils#
Fix
utils.estimator_html_repr现在在生成的 HTML 中转义所有估计器描述。#21493 由 Aurélien Geron 贡献。
版本 1.0.1#
2021年10月
修复的模型#
Fix 以下类的非拟合方法在拟合具有有效特征名称的 DataFrame 时不会引发 UserWarning:
covariance.EllipticEnvelope,ensemble.IsolationForest,ensemble.AdaBoostClassifier,neighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,
neighbors.RadiusNeighborsRegressor . #21199 由 Thomas Fan 提交。
sklearn.calibration#
Fix 修复了
calibration.CalibratedClassifierCV在ensemble=False时计算基估计器预测时未考虑sample_weight的问题。 #20638 由 Julien Bohné 提交。Fix 修复了
calibration.CalibratedClassifierCV在method="sigmoid"时计算贝叶斯先验时忽略sample_weight的错误。 #21179 由 Guillaume Lemaitre 提交。
sklearn.cluster#
Fix 修复了
cluster.KMeans中的一个错误,确保稀疏和密集输入之间的可重复性和等价性。 #21195 由 Jérémie du Boisberranger 提交。
sklearn.ensemble#
Fix 修复了在极少数情况下可能导致
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor产生段错误的错误。 #21130 由 Christian Lorentzen 提交。
sklearn.gaussian_process#
Fix 在多目标场景中,正确计算
sklearn.gaussian_process.GaussianProcessRegressor中的y_std,实现适当的归一化。 #20761 由 Patrick de C. T. R. Ferreira 提交。
sklearn.feature_extraction#
Efficiency 修复了在 1.0.0 版本中引入的
feature_extraction.text.CountVectorizer的transform方法中的效率回归问题,该方法不再检查提供的词汇表中的大写字符。 #21251 由 Jérémie du Boisberranger 提交。Fix 修复了
feature_extraction.text.CountVectorizer和feature_extraction.text.TfidfVectorizer中的错误,当 ‘min_idf’ 或 ‘max_idf’ 大于 1 的浮点数时会引发错误。 #20752 由 Alek Lefebvre 提交。
sklearn.linear_model#
Fix 提高了
linear_model.LassoLars在不同版本的 openblas 下的稳定性。#21340 由 Thomas Fan 提交。Fix
linear_model.LogisticRegression现在在求解器不支持带有 int64 索引的稀疏矩阵时会抛出一个更好的错误信息。#21093 由 Tom Dupre la Tour 提交。
sklearn.neighbors#
Fix
neighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,neighbors.RadiusNeighborsRegressor在metric="precomputed"时,对于bsr和dok稀疏矩阵在方法fit,kneighbors和radius_neighbors中会抛出错误,因为bsr和dok稀疏图格式中显式零的处理。#21199 由 Thomas Fan 提交。
sklearn.pipeline#
Fix
pipeline.Pipeline.get_feature_names_out正确地将特征名称从一个管道步骤传递到下一个步骤。#21351 由 Thomas Fan 提交。
sklearn.svm#
Fix
svm.SVC和svm.SVR检查其内部表示的不一致性并抛出错误而不是段错误。此修复还解决了 CVE-2020-28975 。#21336 由 Thomas Fan 提交。
sklearn.utils#
Enhancement
utils.validation._check_sample_weight可以对样本权重进行非负性检查。可以通过 only_non_negative 布尔参数开启。更新了检查非负权重的估计器:linear_model.LinearRegression(之前的错误信息有误导性),ensemble.AdaBoostClassifier,ensemble.AdaBoostRegressor,neighbors.KernelDensity。
#20880 由 Guillaume Lemaitre 和 András Simon 贡献。
杂项#
Fix 在数据集没有特征名称的情况下拟合估计器,之前在具有特征名称的数据集上拟合的估计器不再保留旧的特征名称存储在
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 。
更改的模型#
以下估计器和函数,当使用相同的数据和参数拟合时,可能会产生与之前版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或随机抽样过程的变化。
Fix
manifold.TSNE现在在亲和矩阵计算过程中避免了数值下溢问题。Fix
manifold.Isomap现在连接了断开的组件。 邻居图沿着一些最小距离对,而不是将所有无限距离更改为零。Fix
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor的分裂准则可能会受到处理舍入误差的修复的影响。之前可能会出现一些额外的虚假分裂。Fix 使用
stratify参数的model_selection.train_test_split和model_selection.StratifiedShuffleSplit可能会导致稍微不同的结果。
详细信息列在下面的变更日志中。
(虽然我们试图通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。)
变更日志#
API Change 通过
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 Change 通过
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 Change
np.matrix的使用在 1.0 版本中已被弃用,并将在 1.2 版本中引发TypeError。#20165 由 Thomas Fan 提交。API Change 已向转换器 API 添加了 get_feature_names_out 以获取输出特征的名称。
get_feature_names已被弃用。#18444 由 Thomas Fan 提交。API Change 所有估计器在拟合 pandas DataFrame 时存储
feature_names_in_。这些特征名称与非fit方法(例如transform)中看到的名称进行比较,如果不一致将引发FutureWarning。这些FutureWarning将在 1.2 版本中变为ValueError。#18010 由 Thomas Fan 提交。
sklearn.base#
Fix
config_context现在线程安全。#18736 由 Thomas Fan 提交。
sklearn.calibration#
Feature 添加了
calibration.CalibrationDisplay以绘制校准曲线。#17443 由 Lucy Liu 提交。Fix
calibration.CalibratedClassifierCV的predict和predict_proba方法现在可以正确用于预拟合的管道。#19641 由 Alek Lefebvre 提交。Fix 修复了在
calibration.CalibratedClassifierCV中使用ensemble.VotingClassifier作为base_estimator时的错误。#20087 由 Clément Fauchereau 提交。
sklearn.cluster#
Efficiency
cluster.KMeans和cluster.MiniBatchKMeans的"k-means++"初始化现在更快,特别是在多核设置中。#19002 由 Jon Crall 和 Jérémie du Boisberranger 提交。Efficiency 使用
algorithm='elkan'的cluster.KMeans在多核设置中现在更快。#19052 由 Yusuke Nagasaka 提交。Efficiency
cluster.MiniBatchKMeans在多核设置中现在更快。#17622 由 Jérémie du Boisberranger 提交。Efficiency
cluster.OPTICS现在可以使用memory参数缓存树的计算输出。#19024 由 Frankie Robertson 贡献。Enhancement
cluster.AffinityPropagation的predict和fit_predict方法现在接受稀疏数据类型的输入数据。#20117 由 Venkatachalam Natchiappan 贡献。Fix 修复了
cluster.MiniBatchKMeans中的一个错误,当输入为稀疏时,样本权重被部分忽略。#17622 由 Jérémie du Boisberranger 贡献。Fix 改进了
cluster.MiniBatchKMeans中基于中心变化的收敛检测,该检测几乎从未实现。#17622 由 Jérémie du Boisberranger 贡献。Fix
cluster.AgglomerativeClustering现在支持只读内存映射数据集。#19883 由 Julien Jerphanion 贡献。Fix
cluster.AgglomerativeClustering在连接性和亲和性都预计算且连接组件数量大于1时,正确连接组件。#20597 由 Thomas Fan 贡献。Fix
cluster.FeatureAgglomeration不再接受fit函数中的**params关键字参数,从而产生更简洁的错误消息。#20899 由 Adam Li 贡献。Fix 修复了
cluster.KMeans中的一个错误,确保稀疏和密集输入之间的可重复性和等价性。#20200 由 Jérémie du Boisberranger 贡献。API Change
cluster.Birch属性fit_和partial_fit_已弃用,将在1.2版本中移除。#19297 由 Thomas Fan 贡献。API Change
cluster.MiniBatchKMeans的batch_size参数默认值从100改为1024,出于效率原因。cluster.MiniBatchKMeans的n_iter_属性现在报告已开始的迭代次数。n_steps_属性报告已处理的小批量数量。 #17622 由 Jérémie du Boisberranger 提供。API Change
cluster.spectral_clustering在传递np.matrix时引发改进的错误。 #20560 由 Thomas Fan 提供。
sklearn.compose#
Enhancement
compose.ColumnTransformer现在记录每个转换器的输出在output_indices_中。 #18393 由 Luca Bittarello 提供。Enhancement
compose.ColumnTransformer现在允许 DataFrame 输入在transform中以改变的顺序出现列。此外,在转换中被删除的列将不再需要,如果remainder='drop',额外的列将被忽略。 #19263 由 Thomas Fan 提供。Enhancement 在
compose.TransformedTargetRegressor.predict中添加**predict_params关键字参数,传递关键字参数给回归器。 #19244 由 Ricardo 提供。Fix
compose.ColumnTransformer.get_feature_names支持由其任何转换器返回的非字符串特征名称。然而,请注意get_feature_names已被弃用,请改用get_feature_names_out。 #18459 由 Albert Villanova del Moral 和 Alonso Silva Allende 提供。Fix
compose.TransformedTargetRegressor现在支持具有适当转换器的 nD 目标。 #18898 由 Oras Phongpanagnam 提供。API Change 在
compose.ColumnTransformer中添加verbose_feature_names_out。此标志控制 get_feature_names_out 中的特征名称前缀。 #18444 和 #21080 由 Thomas Fan 提供。
sklearn.covariance#
Fix 在
covariance.ledoit_wolf和covariance.ledoit_wolf_shrinkage中添加数组检查。 #20416 由 Hugo Defois 提供。API Change 弃用了
cv_results_中的以下键:'mean_score'、'std_score'和'split(k)_score',改为使用'mean_test_score'、'std_test_score'和'split(k)_test_score'。#20583 由 Thomas Fan 提交。
sklearn.datasets#
Enhancement
datasets.fetch_openml现在支持在返回 pandas DataFrame 时处理缺失值的类别。#19365 由 Thomas Fan 、Amanda Dsouza 和 EL-ATEIF Sara 提交。Enhancement
datasets.fetch_kddcup99在缓存文件无效时提供更好的错误信息。#19669 由 Thomas Fan 提交。Enhancement 使用
importlib.resources替换与资源文件 I/O 相关的__file__用法,以避免假设这些资源文件(例如iris.csv)已经存在于文件系统中,并由此实现与PyOxidizer等工具的兼容性。#20297 由 Jack Liu 提交。Fix 缩短 openml 测试中的数据文件名,以更好地支持在 Windows 上安装,并适应其默认的 260 字符文件名限制。#20209 由 Thomas Fan 提交。
Fix
datasets.fetch_kddcup99在return_X_y=True和as_frame=True时返回 DataFrame。#19011 由 Thomas Fan 提交。API Change 在 1.0 版本中弃用
datasets.load_boston,并将在 1.2 版本中移除。提供了加载类似数据集的替代代码片段。详情请参阅函数的文档字符串。#20729 由 Guillaume Lemaitre 提交。
sklearn.decomposition#
Enhancement 为
decomposition.KernelPCA添加了一个新的近似求解器(随机 SVD,可通过eigen_solver='randomized'使用)。当样本数量远大于所需组件数量时,这显著加速了计算。#12069 由 Sylvain Marié 提交。Fix 修复了在聚类布尔数据时出现的不正确的多数据转换警告。#19046 由 Surya Prakash 贡献。
Fix 修复了
decomposition.dict_learning,该函数被decomposition.DictionaryLearning使用,以确保输出的确定性。通过翻转用于初始化代码的 SVD 输出的符号来实现。#18433 由 Bruno Charron 贡献。Fix 修复了
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中的一个错误,其中字典的更新不正确。#19198 由 Jérémie du Boisberranger 贡献。Fix 修复了
decomposition.DictionaryLearning、decomposition.SparsePCA、decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA、decomposition.dict_learning和decomposition.dict_learning_online中的一个错误,其中在字典更新期间未使用的原子的重新启动未按预期工作。#19198 由 Jérémie du Boisberranger 贡献。API Change 在
decomposition.DictionaryLearning、decomposition.MiniBatchDictionaryLearning、decomposition.dict_learning和decomposition.dict_learning_online中,从版本 1.2 开始,transform_alpha将默认等于alpha而不是 1.0。#19159 由 Benoît Malézieux 贡献。API Change 重命名
decomposition.KernelPCA中的变量名以提高可读性。lambdas_和alphas_分别重命名为eigenvalues_和eigenvectors_。lambdas_和alphas_已弃用,将在 1.2 版本中移除。#19908 由 Kei Ishikawa 贡献。API Change
decomposition.NMF和decomposition.non_negative_factorization的alpha和regularization参数已弃用,并将在未来版本中移除。 在1.2版本中,请使用新的参数alpha_W和alpha_H代替。#20512 由 Jérémie du Boisberranger 提交。
sklearn.dummy#
API Change
dummy.DummyRegressor和dummy.DummyRegressor中的属性n_features_in_已弃用,并将在1.2版本中移除。 #20960 由 Thomas Fan 提交。
sklearn.ensemble#
Enhancement
HistGradientBoostingClassifier和HistGradientBoostingRegressor在决定OpenMP使用的线程数时会考虑cgroups配额。 这避免了在使用这些类时,例如在docker容器中,因过度订阅导致的性能问题。#20477 由 Thomas Fan 提交。Enhancement
HistGradientBoostingClassifier和HistGradientBoostingRegressor不再处于实验阶段。 它们现在被认为是稳定的,并且与其他所有估计器一样,遵循相同的弃用周期。#19799 由 Nicolas Hug 提交。Enhancement 改进了
ensemble.StackingClassifier和ensemble.StackingRegressor的HTML渲染。 #19564 由 Thomas Fan 提交。Enhancement 在
ensemble.RandomForestRegressor中添加了泊松准则。#19836 由 Brian Sun 提交。Fix 不允许在
ensemble.RandomForestClassifier和ensemble.ExtraTreesClassifier中计算袋外(OOB)分数,因为scikit-learn不支持这种类型的目标的任何度量。 进行了额外的私有重构。#19162 由 Guillaume Lemaitre 提交。Fix 改进了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中权重提升的数值精度,以避免下溢。 #10096 由 Fenil Suchak 提交。Fix 修复了
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor中参数max_samples的范围为(0.0, 1.0], 其中max_samples=1.0被解释为使用所有n_samples进行自助采样。#20159 由 @murata-yu 提交。Fix 修复了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中的一个错误,其中sample_weight参数在fit过程中被覆盖。 #20534 由 Guillaume Lemaitre 提交。API Change 移除了
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor中的tol=None选项。请使用tol=0以获得相同的行为。 #19296 由 Thomas Fan 提交。
sklearn.feature_extraction#
Fix 修复了
feature_extraction.text.HashingVectorizer中的一个错误, 其中某些输入字符串会导致转换后的数据中出现负索引。#19035 由 Liu Yu 提交。Fix 修复了
feature_extraction.DictVectorizer中的一个错误,通过引发不支持的值类型的错误。 #19520 由 Jeff Zhao 提交。Fix 修复了
feature_extraction.image.img_to_graph和feature_extraction.image.grid_to_graph中的一个错误,其中单例连接组件未被正确处理,导致顶点索引错误。 #18964 由 Bertrand Thirion 提交。Fix 在
feature_extraction.text.CountVectorizer中,当lowercase=True且词汇表条目包含大写字符时, 引发警告以避免在生成的特征向量中出现静默遗漏。#19401 由 Zito Relova 提交。
sklearn.feature_selection#
Feature
feature_selection.r_regression计算特征与目标之间的皮尔逊相关系数 R。 #17169 由 Dmytro Lituiev 提交。 和 Julien Jerphanion 。Enhancement
feature_selection.RFE.fit接受额外的估计器参数,这些参数直接传递给估计器的fit方法。 #20380 由 Iván Pulido 、Felipe Bidu 、 Gil Rutter 和 Adrin Jalali 贡献。Fix 修复了
isotonic.isotonic_regression中的一个错误,其中用户传递的sample_weight在fit过程中被覆盖。 #20515 由 Carsten Allefeld 贡献。Fix 修改
feature_selection.SequentialFeatureSelector以允许无监督建模,使得fit签名不需要进行任何y验证,并允许y=None。 #19568 由 Shyam Desai 贡献。API Change 当方差阈值为负时,在
feature_selection.VarianceThreshold中引发错误。 #20207 由 Tomohiro Endo 贡献。API Change 弃用
grid_scores_,转而使用cv_results_中的分割分数,在feature_selection.RFECV中。grid_scores_将在版本 1.2 中移除。 #20161 由 Shuhei Kayawari 和 @arka204 贡献。
sklearn.inspection#
Enhancement 在
inspection.permutation_importance中添加max_samples参数。它允许抽取样本子集来计算排列重要性。这对于在大数据集上评估特征重要性时保持方法的可行性很有用。 #20431 由 Oliver Pfaffel 贡献。Enhancement 在部分依赖图
inspection.plot_partial_dependence和inspection.PartialDependenceDisplay.plot中添加 kwargs 以分别格式化 ICE 和 PD 线。#19428 由 Mehdi Hamoumi 贡献。Fix 允许向
inspection.permutation_importance输入多个评分器。#19411 由 Simona Maggio 贡献。API Change
inspection.PartialDependenceDisplay暴露了一个类方法:from_estimator。inspection.plot_partial_dependence已被弃用,取而代之的是该类方法,并将在 1.2 版本中移除。#20959 由 Thomas Fan 提交。
sklearn.kernel_approximation#
Fix 修复了
kernel_approximation.Nystroem中的一个错误, 其中属性component_indices_与用于生成近似核的样本索引子集不对应。#20554 由 Xiangyin Kong 提交。
sklearn.linear_model#
Major Feature 新增了
linear_model.QuantileRegressor,实现了带有 L1 惩罚的线性分位数回归。 #9978 由 David Dale 和 Christian Lorentzen 提交。Feature 新的
linear_model.SGDOneClassSVM提供了线性 One-Class SVM 的 SGD 实现。结合核近似技术,该实现近似于核化 One Class SVM 的解,同时受益于样本数量的线性复杂度。 #10027 由 Albert Thomas 提交。Feature 为
linear_model.LassoCV和linear_model.ElasticNetCV添加了sample_weight参数。 #16449 由 Christian Lorentzen 提交。Feature 新增了新的求解器
lbfgs(可通过solver="lbfgs"使用)和positive参数到linear_model.Ridge。当positive设置为True时,强制系数为正(仅支持lbfgs)。#20231 由 Toshihiro Nakae 提交。Efficiency 对使用
solver='newton-cg'和multi_class!='multinomial'时的密集矩阵进行了linear_model.LogisticRegression实现的优化。 #19571 由 Julien Jerphanion 提交。Enhancement
fit方法在linear_model.Lars、linear_model.LassoLars、linear_model.LarsCV和linear_model.LassoLarsCV中保留了 numpy.float32 的 dtype。 #20155 由 Takeshi Oura 贡献。Enhancement 验证通过
precompute参数传递给线性模型的用户提供的 gram 矩阵。 #19004 由 Adam Midvidy 贡献。Fix
linear_model.ElasticNet.fit不再就地修改sample_weight。 #19055 由 Thomas Fan 贡献。Fix
linear_model.Lasso和linear_model.ElasticNet不再具有与其目标不对应的dual_gap_。 #19172 由 Mathurin Massias 贡献。Fix 当
normalize=True时,线性模型中的sample_weight现在完全考虑了特征中心化和特征缩放。 #19426 由 Alexandre Gramfort 和 Maria Telenczuk 贡献。Fix 对于
linear_model.RANSACRegressor,残差等于residual_threshold的点现在被视为内点。 这允许在residual_threshold=0时对某些数据集完美拟合模型。 #19499 由 Gregory Strubel 贡献。Fix
linear_model.Ridge的样本权重不变性在 #19616 中由 Oliver Grisel 和 Christian Lorentzen 修复。Fix
linear_model.enet_path和linear_model.lasso_path中的字典params应仅包含坐标下降求解器的参数。 否则,将引发错误。 #19391 由 Shao Yang Hong 贡献。API Change 在
linear_model.RANSACRegressor中引发警告,从版本 1.2 开始,对于除linear_model.LinearRegression之外的模型,需要显式设置min_samples。 #19390 由 Shao Yang Hong 贡献。API Change :
linear_model.LinearRegression的参数normalize已被弃用,并将在 1.2 版本中移除。弃用此参数的原因是:当fit_intercept设置为 False 时,normalize参数没有任何效果,因此被认为容易引起混淆。已弃用的LinearModel(normalize=True)的行为可以通过使用Pipeline和LinearModel(其中LinearModel可以是LinearRegression、Ridge、RidgeClassifier、RidgeCV或RidgeClassifierCV)来重现,如下所示:make_pipeline(StandardScaler(with_mean=False), LinearModel())。LinearRegression中的normalize参数在 #17743 中被 Maria Telenczuk 和 Alexandre Gramfort 弃用。同样,Ridge、RidgeClassifier、RidgeCV和RidgeClassifierCV中的normalize参数在 #17772 中被 Maria Telenczuk 和 Alexandre Gramfort 弃用。同样,BayesianRidge和ARDRegression中的normalize参数在 #17746 中被 Maria Telenczuk 弃用。同样,Lasso、LassoCV、ElasticNet、ElasticNetCV、MultiTaskLasso、MultiTaskLassoCV、MultiTaskElasticNet和MultiTaskElasticNetCV中的normalize参数在 #17785 中被 Maria Telenczuk 和 Alexandre Gramfort 弃用。API Change
OrthogonalMatchingPursuit和OrthogonalMatchingPursuitCV的normalize参数在 1.2 版本中将默认为 False,并将在 1.4 版本中移除。此更改在 #17750 中由 Maria Telenczuk 提出。<maikia>和 Alexandre Gramfort 。同样适用于LarsLarsCVLassoLarsLassoLarsCVLassoLarsIC,在 #17769 中由 Maria Telenczuk 和 Alexandre Gramfort 完成。API Change 关键字验证已从
__init__和set_params移动到fit对于以下符合 scikit-learn 约定的估计器:SGDClassifier,SGDRegressor,SGDOneClassSVM,PassiveAggressiveClassifier,以及PassiveAggressiveRegressor。 #20683 由 Guillaume Lemaitre 完成。
sklearn.manifold#
Enhancement 在
manifold.TSNE中实现'auto'启发式学习率。它将在 1.2 版本中成为默认设置。默认初始化将在 1.2 版本中更改为pca。PCA 初始化将在 1.2 版本中缩放为标准差 1e-4。 #19491 由 Dmitry Kobak 完成。Fix 更改数值精度以防止在
manifold.TSNE的亲和矩阵计算过程中出现下溢问题。 #19472 由 Dmitry Kobak 完成。Fix
manifold.Isomap现在使用scipy.sparse.csgraph.shortest_path来计算图的最短路径。它还连接邻居图的一些最小距离对,而不是将每个无限距离更改为零。 #20531 由 Roman Yurchak 和 Tom Dupre la Tour 完成。Fix 在
manifold.spectral_embedding中降低 lobpcg 调用的数值默认容差,以防止数值不稳定性。 #21194 由 Andrew Knyazev 完成。
sklearn.metrics#
Feature
metrics.mean_pinball_loss暴露了 pinball 损失, 分位数回归。#19415 由 Xavier Dupré 和 Oliver Grisel 贡献。Feature
metrics.d2_tweedie_score计算带有参数power的 Tweedie 偏差的 D^2 回归得分。这是r2_score的泛化,可以解释为 Tweedie 偏差解释的百分比。 #17036 由 Christian Lorentzen 贡献。Feature
metrics.mean_squared_log_error现在支持squared=False。 #20326 由 Uttam kumar 贡献。Efficiency 当标签为整数时,提高了
metrics.confusion_matrix的速度。 #9843 由 Jon Crall 贡献。Enhancement 修复了在
metrics.hinge_loss中当pred_decision为 1 维而它是一个多类分类时或当pred_decision参数与labels参数不一致时引发错误的修复。 #19643 由 Pierre Attard 贡献。Fix
metrics.ConfusionMatrixDisplay.plot使用正确的颜色映射最大值。 #19784 由 Thomas Fan 贡献。Fix 具有零
sample_weight值的样本不会影响metrics.det_curve、metrics.precision_recall_curve和metrics.roc_curve的结果。 #18328 由 Albert Villanova del Moral 和 Alonso Silva Allende 贡献。Fix 在
metrics.adjusted_rand_score中避免大量数据时的溢出。 #20312 由 Divyanshu Deoli 贡献。API Change
metrics.ConfusionMatrixDisplay暴露了两个类方法from_estimator和from_predictions,允许使用估计器或预测来创建混淆矩阵图。metrics.plot_confusion_matrix已被弃用,取而代之的是这两个类方法,并将在 1.2 版本中移除。 #18543 由 Guillaume Lemaitre 提交。API Change
metrics.PrecisionRecallDisplay暴露了两个类方法from_estimator和from_predictions,允许使用估计器或预测结果创建精确召回曲线。metrics.plot_precision_recall_curve已被弃用,取而代之的是这两个类方法,并将在 1.2 版本中移除。 #20552 由 Guillaume Lemaitre 提交。API Change
metrics.DetCurveDisplay暴露了两个类方法from_estimator和from_predictions,允许使用估计器或预测结果创建混淆矩阵图。metrics.plot_det_curve已被弃用,取而代之的是这两个类方法,并将在 1.2 版本中移除。 #19278 由 Guillaume Lemaitre 提交。
sklearn.mixture#
Fix 确保在
mixture.GaussianMixture和mixture.BayesianGaussianMixture出现分歧的情况下,最佳参数被适当地设置。 #20030 由 Tingshan Liu 和 Benjamin Pedigo 提交。
sklearn.model_selection#
Feature 添加了
model_selection.StratifiedGroupKFold,它结合了model_selection.StratifiedKFold和model_selection.GroupKFold,提供了一种在保持每个分割中类别分布的同时,将每个组保持在单个分割内的能力。 #18649 由 Leandro Hermida 和 Rodion Martynov 提交。Enhancement 在交叉验证中,每个分割的拟合失败仅在主进程中警告一次。 #20619 由 Loïc Estève 提交。
Enhancement
model_selection.BaseShuffleSplit基类现在已公开。 #20056 由 @pabloduque0 提交。Fix 避免在
model_selection.train_test_split中过早溢出。 #20904 由 Tomasz Jakubek 贡献。
sklearn.naive_bayes#
Fix 离散朴素贝叶斯分类器的
fit和partial_fit方法(naive_bayes.BernoulliNB、naive_bayes.CategoricalNB、naive_bayes.ComplementNB和naive_bayes.MultinomialNB)现在正确处理训练集中只有一个类别的退化情况。 #18925 由 David Poznik 贡献。API Change
naive_bayes.GaussianNB中的属性sigma_现已弃用,并将在 1.2 版本中移除。 请改用var_。 #18842 由 Hong Shao Yang 贡献。
sklearn.neighbors#
Enhancement
neighbors.KDTree和neighbors.BallTree的创建已改进, 其最坏情况时间复杂度从 \(\mathcal{O}(n^2)\) 提升至 \(\mathcal{O}(n)\) 。 #19473 由 jiefangxuanyan 和 Julien Jerphanion 贡献。Fix
neighbors.DistanceMetric子类现在支持只读内存映射数据集。 #19883 由 Julien Jerphanion 贡献。Fix
neighbors.NearestNeighbors、neighbors.KNeighborsClassifier、neighbors.RadiusNeighborsClassifier、neighbors.KNeighborsRegressor和neighbors.RadiusNeighborsRegressor在__init__中不再验证weights,而是在fit中验证。 #20072 由 Juan Carlos Alfaro Jiménez 贡献。API Change
neighbors.RadiusNeighborsClassifier的参数kwargs已弃用,并将在 1.2 版本中移除。 #20842 由 Juan Martín Loyola 贡献。
sklearn.neural_network#
neural_network.MLPRegressor 现在正确支持从 pickle 文件加载后的继续训练。#19631 由 Thomas Fan 贡献。
sklearn.pipeline#
API Change
pipeline.Pipeline的predict_proba和predict_log_proba方法现在支持将预测 kwargs 传递给最终估计器。#19790 由 Christopher Flynn 贡献。
sklearn.preprocessing#
Feature 新的
preprocessing.SplineTransformer是一个用于生成 B-样条的特征预处理工具,参数化由样条的degree多项式、结点数量n_knots和结点定位策略knots决定。#18368 由 Christian Lorentzen 贡献。preprocessing.SplineTransformer还通过extrapolation参数支持周期样条。#19483 由 Malte Londschien 贡献。preprocessing.SplineTransformer支持结点定位策略"quantile"的样本权重。#20526 由 Malte Londschien 贡献。Feature
preprocessing.OrdinalEncoder默认支持传递缺失值。#19069 由 Thomas Fan 贡献。Feature
preprocessing.OneHotEncoder现在支持handle_unknown='ignore'和删除类别。#19041 由 Thomas Fan 贡献。Feature
preprocessing.PolynomialFeatures现在支持传递一个元组给degree,即degree=(min_degree, max_degree)。#20250 由 Christian Lorentzen 贡献。Efficiency
preprocessing.StandardScaler更快且更节省内存。#20652 由 Thomas Fan 贡献。Efficiency 在
preprocessing.KBinsDiscretizer中,cluster.KMeans的algorithm参数从auto改为full。#19934 由 Gleb Levitskiy 贡献。Efficiency
fit方法的实现preprocessing.PolynomialFeatures转换器现在更快了。这在大型稀疏输入上尤为明显。#19734 由 Fred Robinson 贡献。Fix
preprocessing.StandardScaler.inverse_transform方法现在在输入数据为1D时会引发错误。#19752 由 Zhehao Liu 贡献。Fix
preprocessing.scale、preprocessing.StandardScaler以及类似的缩放器会检测接近常量的特征,以避免将其缩放到非常大的值。这个问题尤其在使用带有样本权重的稀疏数据和常量列的缩放器时发生,在这种情况下通常会禁用中心化。#19527 由 Oliver Grisel 和 Maria Telenczuk 贡献,以及 #19788 由 Jérémie du Boisberranger 贡献。Fix
preprocessing.StandardScaler.inverse_transform现在正确处理整数类型。#19356 由 @makoeppel 贡献。Fix
preprocessing.OrdinalEncoder.inverse_transform不支持稀疏矩阵,并会引发适当的错误消息。#19879 由 Guillaume Lemaitre 贡献。Fix
preprocessing.OrdinalEncoder的fit方法在handle_unknown='ignore'且给定未知类别时不会引发错误。#19906 由 Zhehao Liu 贡献。Fix 修复了
preprocessing.OrdinalEncoder中的一个回归问题,其中大型 Python 数值在转换为 C 类型(np.float64或np.int64)时会因溢出而引发错误。#20727 由 Guillaume Lemaitre 贡献。Fix
preprocessing.FunctionTransformer不会根据inverse_transform的输入设置n_features_in_。#20961 由 Thomas Fan 贡献。API Change
preprocessing.PolynomialFeatures的n_input_features_属性已被弃用,取而代之的是n_features_in_,并将在 1.2 版本中移除。#20240 由 Jérémie du Boisberranger 贡献。
sklearn.svm#
API Change
svm.OneClassSVM.fit的参数**params已弃用,并将在 1.2 版本中移除。 #20843 由 Juan Martín Loyola 提交。
sklearn.tree#
Enhancement 在
tree.export_graphviz中添加fontname参数,以支持非英文字符。 #18959 由 Zero 和 wstates 提交。Fix 改进了
tree.plot_tree与高DPI屏幕的兼容性。 #20023 由 Thomas Fan 提交。Fix 修复了
tree.DecisionTreeClassifier和tree.DecisionTreeRegressor中的一个错误, 该错误可能导致节点被错误地分割,原因是处理舍入误差不当。 #19336 由 Jérémie du Boisberranger 提交。API Change
tree.DecisionTreeClassifier、tree.DecisionTreeRegressor、tree.ExtraTreeClassifier和tree.ExtraTreeRegressor的n_features_属性已弃用, 改为使用n_features_in_,并将在 1.2 版本中移除。 #20272 由 Jérémie du Boisberranger 提交。
sklearn.utils#
Enhancement 在
randomized_svd中弃用了random_state=0的默认值。 从 1.2 版本开始,random_state的默认值将设置为None。 #19459 由 Cindy Bezuidenhout 和 Clifford Akai-Nettey 提交。Enhancement 添加了辅助装饰器
utils.metaestimators.available_if, 以提供在元估计器中根据状态灵活地使方法可用或不可用的方式,使其更易读。 #19948 由 Joel Nothman 提交。Enhancement
utils.validation.check_is_fitted现在优先使用__sklearn_is_fitted__(如果可用), 而不是检查以下划线结尾的属性。这也使得pipeline.Pipeline和
preprocessing.FunctionTransformerpasscheck_is_fitted(estimator). #20657 by Adrin Jalali .
Fix 修复了
utils.sparsefuncs.mean_variance_axis中的一个错误,当实际方差恰好为零时,计算出的方差精度非常差。#19766 by Jérémie du Boisberranger .Fix 现在,使用
utils.deprecated装饰的属性的文档字符串已正确包装。#20385 by Thomas Fan .Fix
utils.stats._weighted_percentile现在正确忽略了权重为零且小于具有正权重的最小观测值的观测值,适用于percentile=0。受影响的类包括dummy.DummyRegressor对于quantile=0以及ensemble.HuberLossFunction和ensemble.HuberLossFunction对于alpha=0。#20528 by Malte Londschien .Fix
utils._safe_indexing在提供整数索引时显式采用数据框副本,避免了从 Pandas 引发警告。此警告之前在重采样实用程序和使用这些实用程序的函数(例如model_selection.train_test_split、model_selection.cross_validate、model_selection.cross_val_score、model_selection.cross_val_predict)中引发。#20673 by Joris Van den Bossche .Fix 修复了
utils.is_scalar_nan中的一个回归问题,其中大型 Python 数字会因 C 类型(np.float64或np.int64)中的溢出而引发错误。#20727 by Guillaume Lemaitre .Fix 在 1.0 版本中,
check_array对np.matrix的支持已弃用,并将在 1.2 版本中引发TypeError。#20165 by Thomas Fan .API Change
utils._testing.assert_warns和utils._testing.assert_warns_message在 1.0 版本中已弃用,并将在 1.2 版本中移除。请改用pytest.warns上下文管理器。请注意,这些函数未被记录且不属于公共 API。
公共 API。#20521 由 Olivier Grisel 贡献。
API Change 修复了
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 Kawamura, 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