版本 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#
修复 当
bootstrap=False且max_samples不为None时,ensemble.RandomForestClassifier、ensemble.RandomForestRegressor、ensemble.ExtraTreesClassifier、ensemble.ExtraTreesRegressor和ensemble.RandomTreesEmbedding现在会引发ValueError。#21295 Haoyin Xu。修复 解决了
ensemble.GradientBoostingClassifier中的一个错误,其中指数损失(exponential loss)计算的是正梯度而不是负梯度。#22050 由 Guillaume Lemaitre 贡献。
sklearn.feature_selection#
修复 通过改进对未设置
feature_names_in_的基础估计器的支持,修复了feature_selection.SelectFromModel。#21991 由 Thomas Fan 贡献。
sklearn.impute#
修复 修复了
linear_model.RidgeClassifierCV中的一个错误,其中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="minkowski"的权重参数,以产生始终与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在ensemble=False时,计算基础估计器预测时未考虑sample_weight的问题。#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在极少数情况下可能导致段错误(segfault)的错误。#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#
修复 改进了
linear_model.LassoLars在不同 openblas 版本下的稳定性。#21340 由 Thomas Fan 贡献。修复 当求解器不支持带有 int64 索引的稀疏矩阵时,
linear_model.LogisticRegression现在会引发更友好的错误消息。#21093 由 Tom Dupre la Tour 贡献。
sklearn.neighbors#
修复
neighbors.KNeighborsClassifier、neighbors.KNeighborsRegressor、neighbors.RadiusNeighborsClassifier、neighbors.RadiusNeighborsRegressor在使用metric="precomputed"时,由于对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布尔参数将其开启。检查非负权重的估计器已更新: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 变更
np.matrix的用法在 1.0 版本中已弃用,并将在 1.2 版本中引发TypeError。 #20165 作者:Thomas Fan。API 变更 get_feature_names_out 已添加到转换器 API 中,用于获取输出特征的名称。
get_feature_names已相应地弃用。 #18444 作者:Thomas Fan。API 变更 所有估计器在基于 pandas Dataframe 进行拟合时,都会存储
feature_names_in_。这些特征名称会与在非fit方法(例如transform)中看到的名称进行比较,如果不一致则会引发FutureWarning,详见 scikit-learn 1.0 发布亮点。这些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中的一个错误,该错误导致当输入为稀疏数据时,样本权重部分被忽略。 #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中的一个错误,确保了稀疏和密集输入之间的可复现性和等效性。 #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 变更 添加
verbose_feature_names_out到compose.ColumnTransformer。此标志控制 get_feature_names_out 中输出特征名称的前缀。 #18444 和 #21080 作者:Thomas Fan。
sklearn.covariance#
修复 为
covariance.ledoit_wolf和covariance.ledoit_wolf_shrinkage添加了数组检查。 #20416 作者:Hugo Defois。API 变更
cv_results_中的以下键已弃用:'mean_score'、'std_score'和'split(k)_score',转而使用'mean_test_score'、'std_test_score'和'split(k)_test_score'。 #20583 作者:Thomas Fan。
sklearn.datasets#
改进
datasets.fetch_openml现在在返回 pandas 数据框时支持带缺失值的类别。 #19365 作者:Thomas Fan、Amanda Dsouza 和 EL-ATEIF Sara。改进 当缓存文件无效时,
datasets.fetch_kddcup99会引发更详细的消息。 #19669 作者:Thomas Fan。改进 将所有与资源文件 I/O 相关的
__file__用法替换为importlib.resources,以避免假定这些资源文件(例如iris.csv)已存在于文件系统上,从而实现与PyOxidizer等工具的兼容性。 #20297 作者:Jack Liu。修复 缩短 openml 测试中的数据文件名,以更好地支持在 Windows 上安装及其默认的 260 字符文件名限制。 #20209 作者:Thomas Fan。
修复 当
return_X_y=True和as_frame=True时,datasets.fetch_kddcup99返回数据框。 #19011 作者:Thomas Fan。API 变更
datasets.load_boston在 1.0 版本中已弃用,并将在 1.2 版本中移除。提供了加载类似数据集的替代代码片段。详情请参阅该函数的文档字符串。 #20729 作者:Guillaume Lemaitre。
sklearn.decomposition#
改进 为
decomposition.KernelPCA添加了新的近似求解器(随机 SVD,可通过eigen_solver='randomized'获得)。当样本数量远大于所需组件数量时,这将显著加速计算。 #12069 作者:Sylvain Marié。修复 修复了聚类布尔数据时出现的不正确的多次数据转换警告。 #19046 作者:Surya Prakash。
修复 修复了
decomposition.dict_learning的一个错误,该函数由decomposition.DictionaryLearning使用,以确保输出的确定性。通过翻转用于初始化代码的 SVD 输出符号实现。 #18433 作者:Bruno Charron。修复 修复了
decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA和decomposition.dict_learning_online中的一个错误,其中字典更新不正确。 #19198 作者:Jérémie du Boisberranger。修复 修复了
decomposition.DictionaryLearning、decomposition.SparsePCA、decomposition.MiniBatchDictionaryLearning、decomposition.MiniBatchSparsePCA、decomposition.dict_learning和decomposition.dict_learning_online中的一个错误,其中字典更新期间未使用原子的重启未按预期工作。 #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和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。修复 不允许在
ensemble.RandomForestClassifier和ensemble.ExtraTreesClassifier中计算袋外 (OOB) 分数,因为 scikit-learn 不提供支持此类型目标的任何度量。此外还进行了内部重构。 #19162 作者:Guillaume Lemaitre。修复 改进了
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor中权重提升的数值精度,以避免下溢。 #10096 作者:Fenil Suchak。修复 修复了
ensemble.RandomForestClassifier和ensemble.RandomForestRegressor中max_samples参数的范围应为(0.0, 1.0]的错误,其中max_samples=1.0被解释为使用所有n_samples进行引导。 #20159 作者:@murata-yu。修复 修复了 #20534 中由 Guillaume Lemaitre 提交的,
ensemble.AdaBoostClassifier和ensemble.AdaBoostRegressor在fit期间sample_weight参数被覆盖的错误。API 变更 移除了
ensemble.HistGradientBoostingClassifier和ensemble.HistGradientBoostingRegressor中的tol=None选项。请使用tol=0来实现相同的行为。 #19296 作者:Thomas Fan。
sklearn.feature_extraction#
修复 修复了
feature_extraction.text.HashingVectorizer中的一个错误,该错误导致某些输入字符串在转换后的数据中产生负索引。 #19035 作者:Liu Yu。修复 修复了
feature_extraction.DictVectorizer中的一个错误,通过对不支持的值类型引发错误。 #19520 作者:Jeff Zhao。修复 修复了
feature_extraction.image.img_to_graph和feature_extraction.image.grid_to_graph中的一个错误,其中单例连通分量未得到正确处理,导致顶点索引错误。 #18964 作者:Bertrand Thirion。修复 当
lowercase=True且词汇表条目中包含大写字符时,feature_extraction.text.CountVectorizer中会发出警告,以避免结果特征向量中出现静默的缺失。 #19401 作者:Zito Relova
sklearn.feature_selection#
新功能
feature_selection.r_regression计算特征与目标之间的皮尔逊 R 相关系数。 #17169 作者:Dmytro Lituiev 和 Julien Jerphanion。改进
feature_selection.RFE.fit接受额外的估计器参数,这些参数直接传递给估计器的fit方法。 #20380 作者:Iván Pulido、Felipe Bidu、Gil Rutter 和 Adrin Jalali。修复 修复了
isotonic.isotonic_regression中的一个错误,其中用户传递的sample_weight在fit期间被覆盖。修复 更改
feature_selection.SequentialFeatureSelector以允许无监督建模,这样fit签名无需进行任何y验证,并允许y=None。 #19568 作者:Shyam Desai。API 变更 当方差阈值为负时,
feature_selection.VarianceThreshold会引发错误。 #20207 作者:Tomohiro EndoAPI 变更
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中,添加了用于单独格式化 ICE 和 PD 线的 kwargs。 #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中的一个错误,其中属性component_indices_与用于生成近似核的样本索引子集不对应。 #20554 作者:Xiangyin Kong。
sklearn.linear_model#
主要新功能 添加了
linear_model.QuantileRegressor,它实现了带 L1 惩罚的线性分位数回归。 #9978 作者:David Dale 和 Christian Lorentzen。新功能 新的
linear_model.SGDOneClassSVM提供了线性独类支持向量机的 SGD 实现。结合核近似技术,该实现近似于核化独类支持向量机的解,同时受益于样本数量上的线性复杂度。 #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。改进
fit方法在linear_model.Lars、linear_model.LassoLars、linear_model.LassoLars、linear_model.LarsCV和linear_model.LassoLarsCV中保留 numpy.float32 的 dtype。 #20155 作者:Takeshi Oura。改进 验证通过
precompute参数传递给线性模型的用户提供的格拉姆矩阵。 #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。修复 对于
linear_model.RANSACRegressor,残差等于residual_threshold的点现在被视为内点。这允许在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)的行为可以通过使用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也是如此,见 #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。Lars、LarsCV、LassoLars、LassoLarsCV、LassoLarsIC也是如此,见 #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 贡献。改进 一个修复,当
pred_decision为 1D 但为多分类问题时,或当pred_decision参数与labels参数不一致时,在metrics.hinge_loss中引发错误。 #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 变更
naive_bayes.GaussianNB中的属性sigma_现已弃用,并将在 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中进行验证。 #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现在在从 pickled 文件加载时正确支持继续训练。 #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 由 Hleb Levitski 贡献。效率
preprocessing.PolynomialFeatures转换器的fit方法实现现在更快。这在大规模稀疏输入上尤其明显。 #19734 由 Fred Robinson 贡献。修复
preprocessing.StandardScaler.inverse_transform方法现在在输入数据为 1D 时引发错误。 #19752 由 Zhehao Liu 贡献。修复
preprocessing.scale、preprocessing.StandardScaler和类似的缩放器会检测接近常数的特征,以避免将它们缩放为非常大的值。当在具有样本权重的常量列的稀疏数据上使用缩放器时,尤其会出现此问题,在这种情况下通常会禁用中心化。 #19527 由 Oliver Grisel 和 Maria Telenczuk 贡献,以及 #19788 由 Jérémie du Boisberranger 贡献。修复
preprocessing.StandardScaler.inverse_transform现在正确处理整数 dtypes。 #19356 由 @makoeppel 贡献。修复
preprocessing.OrdinalEncoder.inverse_transform不支持稀疏矩阵,并引发相应的错误消息。 #19879 由 Guillaume Lemaitre 贡献。修复
preprocessing.OrdinalEncoder的fit方法在handle_unknown='ignore'且将未知类别传递给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中的一个错误,即当实际方差恰好为零时,计算方差的精度非常差。 #19766 由 Jérémie du Boisberranger 贡献。修复 使用
utils.deprecated装饰的属性的文档字符串现在已正确封装。 #20385 由 Thomas Fan 贡献。修复
utils.stats._weighted_percentile现在对于percentile=0的情况,正确忽略权重为零且小于具有正权重的最小观测值的观测。受影响的类是dummy.DummyRegressor(当quantile=0时) 和ensemble.HuberLossFunction(当alpha=0时)。 #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 贡献。修复 在 1.0 版本中,
check_array对np.matrix的支持已弃用,并将在 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, Hleb Levitski, 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, 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