版本 0.24#
有关此版本主要亮点的简短描述,请参阅scikit-learn 0.24 版本亮点。
更新日志图例
重大功能 以前无法实现的大功能。
功能 以前无法实现的功能。
效率提升 现有功能现在可能不需要那么多计算或内存。
增强 一般性的小改进。
修复 以前无法按文档或合理预期工作的问题现在应该可以了。
API 变更 未来你需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 0.24.2#
2021年4月
更新日志#
sklearn.compose#
修复
compose.ColumnTransformer.get_feature_names不会为具有空列选择的转换器调用get_feature_names。 #19579,作者:Thomas Fan。
sklearn.cross_decomposition#
修复 修复了
cross_decomposition.CCA中的回归问题。 #19646,作者:Thomas Fan。修复
cross_decomposition.PLSRegression对恒定 y 残差发出警告,而不是引发StopIteration错误。 #19922,作者:Thomas Fan。
sklearn.decomposition#
修复 修复了
decomposition.KernelPCA的inverse_transform中的一个错误。 #19732,作者:Kei Ishikawa。
sklearn.ensemble#
修复 修复了
ensemble.HistGradientBoostingRegressorfit方法中,当使用sample_weight参数和least_absolute_deviation损失函数时的一个错误。 #19407,作者:Vadim Ushtanit。
sklearn.feature_extraction#
修复 修复了一个错误,以支持在
feature_extraction.DictVectorizer中sparse=False时,一个类别对应多个字符串。 #19982,作者:Guillaume Lemaitre。
sklearn.gaussian_process#
修复 在输出标准差时,避免在
gaussian_process.GaussianProcessRegressor中明确形成逆协方差矩阵。对于某些协方差矩阵,此逆矩阵的计算不稳定。调用Cholesky求解器可以缓解此计算问题。 #19939,作者:Ian Halvic。修复 避免在
gaussian_process.GaussianProcessRegressor中缩放常数目标时除以零。这是由于标准差为0。现在,检测到这种情况并将标准差设置为1,从而避免除以零,从而避免归一化目标中出现NaN值。 #19703,作者:@sobkevich、Boris Villazón-Terrazas 和 Alexandr Fonari。
sklearn.linear_model#
修复 修复了
linear_model.LogisticRegression中的一个错误:sample_weight对象不再被修改。 #19182,作者:Yosuke KOBAYASHI。
sklearn.metrics#
修复
metrics.top_k_accuracy_score现在支持多类别问题,其中y_true中仅出现两个类别,并且所有类别都指定在labels中。 #19721,作者:Joris Clement。
sklearn.model_selection#
修复
model_selection.RandomizedSearchCV和model_selection.GridSearchCV现在正确显示单个指标和 verbose > 2 时的分数。 #19659,作者:Thomas Fan。修复
model_selection.HalvingRandomSearchCV和model_selection.HalvingGridSearchCV的cv_results_属性中的某些值未正确转换为 numpy 数组。 #19211,作者:Nicolas Hug。修复 连续减半参数搜索(
model_selection.HalvingGridSearchCV和model_selection.HalvingRandomSearchCV)的fit方法现在正确处理groups参数。 #19847,作者:Xiaoyu Chai。
sklearn.multioutput#
修复
multioutput.MultiOutputRegressor现在可以与在拟合过程中动态定义predict的估计器一起使用,例如ensemble.StackingRegressor。 #19308,作者:Thomas Fan。
sklearn.preprocessing#
修复 在
preprocessing.OrdinalEncoder中验证构造函数参数handle_unknown,仅允许'error'和'use_encoded_value'策略。 #19234,作者:Guillaume Lemaitre <glemaitre>。修复 修复编码器类别具有dtype='S'的
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder。 #19727,作者:Andrew Delong。修复
preprocessing.OrdinalEncoder.transform正确处理字符串 dtype 的未知值。 #19888,作者:Thomas Fan。修复
preprocessing.OneHotEncoder.fit不再更改drop参数。 #19924,作者:Thomas Fan。
sklearn.semi_supervised#
修复 避免在
LabelPropagation中的标签传播过程中出现NaN。 #19271,作者:Zhaowei Wang。
sklearn.tree#
修复 修复了
tree.BaseDecisionTree的fit中的一个错误,该错误在某些条件下会导致段错误。fit现在对Criterion对象进行深度复制以防止共享并发访问。 #19580,作者:Samuel Brice、Alex Adamson 和 Wil Yegelwel。
sklearn.utils#
修复 通过为html表示提供CSS id,更好地包含
utils.estimator_html_repr提供的CSS。 #19417,作者:Thomas Fan。
版本 0.24.1#
2021年1月
打包#
由于 libomp 的问题,0.24.0 scikit-learn wheels 在 macOS <1.15 上无法正常工作。用于构建 wheels 的 libomp 版本对于旧版 macOS 来说太新了。此问题已在 0.24.1 scikit-learn wheels 中修复。发布在 PyPI.org 上的 Scikit-learn wheels 现在正式支持 macOS 10.13 及更高版本。
更新日志#
sklearn.metrics#
修复 修复了在NumPy 1.20+中使用
metrics.adjusted_mutual_info_score和metrics.mutual_info_score时可能发生的数值稳定性错误。 #19179,作者:Thomas Fan。
sklearn.semi_supervised#
修复
semi_supervised.SelfTrainingClassifier现在接受元估计器(例如ensemble.StackingClassifier)。该估计器的验证是在拟合的估计器上完成的,一旦我们知道predict_proba方法的存在。 #19126,作者:Guillaume Lemaitre。
版本 0.24.0#
2020年12月
变更模型#
以下估计器和函数在用相同数据和参数拟合时,可能会产生与上一个版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机采样过程的更改所致。
修复 当核函数具有小的正特征值时,
decomposition.KernelPCA的行为在 32 位和 64 位数据之间现在更加一致。修复
decomposition.TruncatedSVD通过暴露random_state参数而变得确定性。修复
linear_model.Perceptron当penalty='elasticnet'时。修复 更改了
cluster.KMeans的中心初始化随机抽样过程。
详细信息列在下面的更改日志中。
(虽然我们正试图通过提供此信息来更好地告知用户,但我们不能保证此列表完整。)
更新日志#
sklearn.base#
修复
base.BaseEstimator.get_params现在,如果参数无法作为实例属性检索,将引发AttributeError。以前它会返回None。 #17448,作者:Juan Carlos Alfaro Jiménez。
sklearn.calibration#
效率
calibration.CalibratedClassifierCV.fit现在支持通过joblib.Parallel使用参数n_jobs进行并行化。 #17107,作者:Julien Jerphanion。改进 允许
calibration.CalibratedClassifierCV与预训练的pipeline.Pipeline一起使用,其中数据在开始时不是类数组、稀疏矩阵或数据框。 #17546,作者:Lucy Liu。改进 向
calibration.CalibratedClassifierCV添加了ensemble参数,该参数允许通过校准器集成(当前方法)或仅使用所有数据的单个校准器(类似于sklearn.svm估计器的内置功能,使用probabilities=True参数)实现校准。 #17856,作者:Lucy Liu和Andrea Esuli。
sklearn.cluster#
改进
cluster.AgglomerativeClustering有一个新的参数compute_distances。当设置为True时,即使不使用参数distance_threshold,也会计算集群之间的距离并存储在distances_属性中。这个新参数对于生成树状图可视化很有用,但会引入计算和内存开销。 #17984,作者:Michael Riedmann、Emilie Delattre 和 Francesco Casalegno。改进
cluster.SpectralClustering和cluster.spectral_clustering增加了一个新的关键字参数verbose。当设置为True时,将显示额外的消息,这有助于调试。 #18052,作者:Sean O. Stalley。改进 添加了
cluster.kmeans_plusplus作为公共函数。KMeans++的初始化现在可以单独调用以生成初始聚类质心。 #17937,作者:@g-walshAPI变更
cluster.MiniBatchKMeans属性counts_和init_size_已被弃用,并将在 1.1 版本(0.26 版的重命名)中移除。 #17864,作者:Jérémie du Boisberranger。
sklearn.compose#
修复
compose.ColumnTransformer将跳过列选择器为全False布尔值列表的转换器。 #17616,作者:Thomas Fan。修复
compose.ColumnTransformer现在在图表显示中显示剩余部分。 #18167,作者:Thomas Fan。修复
compose.ColumnTransformer在fit和transform之间强制执行严格的列名计数和顺序,通过引发错误而不是警告,遵循弃用周期。 #18256,作者:Madhura Jayratne。
sklearn.covariance#
API变更 弃用
cv_alphas_,转而使用cv_results_['alphas'];弃用grid_scores_,转而使用cv_results_中的分割分数,在covariance.GraphicalLassoCV中。cv_alphas_和grid_scores_将在版本 1.1(0.26 的重命名)中移除。 #16392,作者:Thomas Fan。
sklearn.cross_decomposition#
修复 修复了
cross_decomposition.PLSSVD中的一个错误,该错误有时会返回重要性顺序颠倒的成分。 #17095,作者:Nicolas Hug。修复 修复了
cross_decomposition.PLSSVD、cross_decomposition.CCA和cross_decomposition.PLSCanonical中的一个错误,该错误在训练数据是单目标时,会导致est.transform(Y)的预测不正确。 #17095,作者:Nicolas Hug。修复 提高了
cross_decomposition.CCA的稳定性。 #18746,作者:Thomas Fan。API变更
n_components参数的界限现在被限制为对于
cross_decomposition.PLSSVD、cross_decomposition.CCA和cross_decomposition.PLSCanonical,范围为[1, min(n_samples, n_features, n_targets)]。对于
cross_decomposition.PLSRegression,范围为[1, n_features]。
在 1.1 版本(0.26 版本重命名)中将引发错误。 #17095,作者:Nicolas Hug。
API变更 对于
cross_decomposition.PLSSVD、cross_decomposition.CCA和cross_decomposition.PLSCanonical,x_scores_和y_scores_属性已弃用,并将于1.1版本(0.26版本重命名)中移除。它们可以通过对训练数据调用transform来检索。norm_y_weights属性也将被移除。 #17095,作者:Nicolas Hug。API变更 对于
cross_decomposition.PLSRegression、cross_decomposition.PLSCanonical、cross_decomposition.CCA和cross_decomposition.PLSSVD,x_mean_、y_mean_、x_std_和y_std_属性已弃用,并将于1.1版本(0.26版本重命名)中移除。 #18768,作者:Maren Westermann。修复
decomposition.TruncatedSVD通过使用random_state变得确定性。它控制底层 ARPACK 求解器的权重初始化。 :pr:` #18302`,作者:Gaurav Desai 和 Ivan Panico。
sklearn.datasets#
新特性
datasets.fetch_openml现在验证下载或缓存的 arff 文件的 md5 校验和,以确保数据完整性。 #14800,作者:Shashank Singh 和 Joel Nothman。改进
datasets.fetch_openml现在允许参数as_frame设置为 'auto',这会尝试将返回的数据转换为 pandas DataFrame,除非数据是稀疏的。 #17396,作者:Jiaxiang。改进
datasets.fetch_covtype现在支持可选参数as_frame;当其设置为 True 时,返回的 Bunch 对象的data和frame成员是 pandas DataFrames,而target成员是 pandas Series。 #17491,作者:Alex Liang。改进
datasets.fetch_kddcup99现在支持可选参数as_frame;当其设置为 True 时,返回的 Bunch 对象的data和frame成员是 pandas DataFrames,而target成员是 pandas Series。 #18280,作者:Alex Liang 和 Guillaume Lemaitre。改进
datasets.fetch_20newsgroups_vectorized现在通过设置as_frame=True支持加载为 pandasDataFrame。 #17499,作者:Brigitta Sipőcz 和 Guillaume Lemaitre。API变更
datasets.fetch_openml中as_frame的默认值从 False 更改为 'auto'。 #17610,作者:Jiaxiang。
sklearn.decomposition#
API变更 对于
decomposition.NMF,当'init=None'且n_components <= min(n_samples, n_features)时,init值将从'nndsvd'更改为'nndsvda',此更改将在1.1版本(0.26版本重命名)中生效。 #18525,作者:Chiara Marmo。改进
decomposition.FactorAnalysis现在支持可选参数rotation,它可以取值为None、'varimax'或'quartimax'。 #11064,作者:Jona Sassenhagen。改进
decomposition.NMF现在支持可选参数regularization,它可以取值为None、'components'、'transformation' 或 'both',与decomposition.NMF.non_negative_factorization保持一致。 #17414,作者:Bharat Raghunathan。修复 当核具有小的正特征值时,
decomposition.KernelPCA的行为在 32 位和 64 位数据输入之间现在更加一致。对于 32 位数据,小的正特征值没有被正确丢弃。 #18149,作者:Sylvain Marié。修复 修复
decomposition.SparseCoder,使其遵循scikit-learn API并支持克隆。components_属性在0.24版本中已弃用,并将在1.1版本(0.26版本重命名)中移除。该属性与dictionary属性和构造函数参数重复。 #17679,作者:Xavier Dupré。修复
decomposition.TruncatedSVD.fit_transform始终返回与decomposition.TruncatedSVD.fit之后再执行decomposition.TruncatedSVD.transform相同的结果。 #18528,作者:Albert Villanova del Moral 和 Ruifeng Zheng。
sklearn.discriminant_analysis#
改进
discriminant_analysis.LinearDiscriminantAnalysis现在可以通过设置covariance_estimator参数使用自定义协方差估计。 #14446,作者:Hugo Richard。
sklearn.ensemble#
主要新功能
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier现在通过categorical_features参数原生支持分类特征。 #18394,作者:Nicolas Hug 和 Thomas Fan。新特性
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier现在支持staged_predict方法,该方法允许监控每个阶段。 #16985,作者:Hao Chun Chang。效率 打破
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier内部使用的树节点中的循环引用,以允许及时垃圾回收大型中间数据结构,并提高fit中的内存使用。 #18334,作者:Olivier Grisel、Nicolas Hug、Thomas Fan和Andreas Müller。效率 在
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier中,直方图初始化现在并行完成,这对于在多核机器上构建大量节点的问题可以提高速度。 #18341,作者:Olivier Grisel、Nicolas Hug、Thomas Fan 和 Egor Smirnov。修复 修复了
ensemble.HistGradientBoostingRegressor和ensemble.HistGradientBoostingClassifier中的一个错误,该错误现在可以接受predict中uint8dtype的数据。 #18410,作者:Nicolas Hug。API变更
ensemble.GradientBoostingRegressor中参数n_classes_已弃用,并返回1。 #17702,作者:Simona Maggio。API变更 在
ensemble.GradientBoostingRegressor和ensemble.GradientBoostingClassifier中,参数criterion的平均绝对误差('mae')已弃用。 #18326,作者:Madhura Jayaratne。
sklearn.exceptions#
API变更
exceptions.ChangedBehaviorWarning和exceptions.NonBLASDotWarning已弃用,并将在 1.1 版本(0.26 版本重命名)中移除。 #17804,作者:Adrin Jalali。
sklearn.feature_extraction#
改进
feature_extraction.DictVectorizer接受一个分类特征的多个值。 #17367,作者:Peng Yu 和 Chiara Marmo。修复 如果提供了一个自定义的令牌模式,该模式捕获了多个组,
feature_extraction.text.CountVectorizer会引发问题。 #15427,作者:Gangesh Gudmalwar 和 Erin R Hoffman。
sklearn.feature_selection#
新特性 添加了
feature_selection.SequentialFeatureSelector,它实现了前向和后向顺序特征选择。 #6545,作者:Sebastian Raschka;#17159,作者:Nicolas Hug。新特性
feature_selection.RFE、feature_selection.RFECV和feature_selection.SelectFromModel添加了新参数importance_getter,允许用户指定属性名称/路径或可调用对象来从估计器中提取特征重要性。 #15361,作者:Venkatachalam N。效率 通过调用
neighbors.KDTree来计数最近邻居,减少了feature_selection.mutual_info_classif和feature_selection.mutual_info_regression中的内存占用。 #17878,作者:Noel Rogers。改进
feature_selection.RFE支持将n_features_to_select的数量指定为表示要选择的特征百分比的浮点数。 #17090,作者:Lisa Schwetlick 和 Marija Vlajic Wheeler。
sklearn.gaussian_process#
改进 拟合高斯过程后,会调用新的方法
gaussian_process.kernel._check_bounds_params,如果超参数的边界过紧,则会引发ConvergenceWarning。 #12638,作者:Sylvain Lannuzel。
sklearn.impute#
新特性
impute.SimpleImputer现在在strategy='most_frequent'或strategy='constant'时支持字符串列表。 #17526,作者:Ayako YAGI 和 Juan Carlos Alfaro Jiménez。新特性 添加了方法
impute.SimpleImputer.inverse_transform,以便在实例化时设置add_indicator=True后,将 imputed 数据恢复到原始状态。 #17612,作者:Srimukh Sripada。修复 将
impute.IterativeImputer中min_value和max_value参数的默认值分别替换为-np.inf和np.inf,而不是None。然而,由于None已经默认这些值,所以类的行为没有改变。 #16493,作者:Darshan N。修复
impute.IterativeImputer将不再尝试设置估计器的random_state属性,从而允许将其与更多外部类一起使用。 #15636,作者:David Cortes。效率 当
impute.SimpleImputer中strategy='most_frequent'时,使用objectdtype 数组的impute.SimpleImputer现在更快。 #18987,作者:David Katz。
sklearn.inspection#
新特性
inspection.partial_dependence和inspection.plot_partial_dependence现在支持计算和绘制由kind参数控制的个体条件期望 (ICE) 曲线。 #16619,作者:Madhura Jayratne。新特性 向 #16906 中的
inspection.permutation_importance添加了sample_weight参数。 作者:Roei Kahny。API变更
inspection.PartialDependenceDisplay.plot中的位置参数已弃用,并将在 1.1 版本(0.26 版本重命名)中报错。 #18293,作者:Thomas Fan。
sklearn.isotonic#
新特性 暴露拟合属性
X_thresholds_和y_thresholds_,它们保存了isotonic.IsotonicRegression实例的去重插值阈值,用于模型检查。 #16289,作者:Masashi Kishimoto 和 Olivier Grisel。改进
isotonic.IsotonicRegression现在接受具有 1 个特征的 2d 数组作为输入数组。 #17379,作者:Jiaxiang。修复 确定重复 X 值时添加容差,以防止
isotonic.IsotonicRegression预测出无穷大值。由 Lucy Liu 提交的 #18639。
sklearn.kernel_approximation#
新功能 添加了类
kernel_approximation.PolynomialCountSketch,它实现了用于多项式核特征映射近似的 Tensor Sketch 算法。由 Daniel López Sánchez 提交的 #13003。效率
kernel_approximation.Nystroem现在通过参数n_jobs支持使用joblib.Parallel进行并行化。由 Laurenz Reitsam 提交的 #18545。
sklearn.linear_model#
新功能 当
positive设置为True时,linear_model.LinearRegression现在强制所有系数都为正。由 Joseph Knox、Nelle Varoquaux 和 Chiara Marmo 提交的 #17578。增强
linear_model.RidgeCV现在通过设置alpha_per_target=True支持为每个目标单独找到最优正则化值alpha。这仅在使用默认高效留一法交叉验证方案cv=None时受支持。由 Marijn van Vliet 提交的 #6624。修复 修复了
linear_model.TheilSenRegressor中的错误,当fit_intercept=False且拟合时只有一个特征时,predict和score会失败。由 Thomas Fan 提交的 #18121。修复 修复了
linear_model.ARDRegression中的错误,当normalize=True和return_std=True时,predict会因为X_offset_和X_scale_未定义而引发错误。由 fhaselbeck 提交的 #18607。修复 在
linear_model.Perceptron中添加了缺失的l1_ratio参数,用于当penalty='elasticnet'时。这将默认值从 0 更改为 0.15。由 Haesun Park 提交的 #18622。
sklearn.manifold#
效率 修复了 #10493。改进了局部线性嵌入(LLE),它在使用大输入时会引发
MemoryError异常。由 Bertrand Maisonneuve 提交的 #17997。增强 为
manifold.TSNE添加square_distances参数,在弃用旧版平方行为期间提供向后兼容性。在 1.1 版本(0.26 版的重命名)中,距离将默认进行平方处理,此参数将在 1.3 版本中移除。由 Joshua Newton 提交的 #17662。修复
manifold.MDS现在正确设置其_pairwise属性。由 Thomas Fan 提交的 #18278。
sklearn.metrics#
新功能 添加了
metrics.cluster.pair_confusion_matrix,它实现了由两个聚类中的元素对产生的混淆矩阵。由 Uwe F Mayer 提交的 #17412。新功能 新指标
metrics.top_k_accuracy_score。它是metrics.top_k_accuracy_score的泛化,不同之处在于,只要真实标签与k个最高预测分数之一相关联,预测就被认为是正确的。metrics.accuracy_score是k = 1的特例。由 Geoffrey Bolmier 提交的 #16625。新功能 添加了
metrics.det_curve以计算检测错误权衡曲线分类指标。由 Jeremy Karnowski 和 Daniel Mohns 提交的 #10591。新功能 添加了
metrics.plot_det_curve和metrics.DetCurveDisplay,以方便绘制 DET 曲线。由 Guillaume Lemaitre 提交的 #18176。新功能 添加了
metrics.mean_absolute_percentage_error指标以及相关的回归问题评分器。#10708 通过 PR #15007 由 Ashutosh Hathidara 修复。评分器和一些实际测试用例取自 PR #10711 由 Mohamed Ali Jamaoui 提交。新功能 添加了
metrics.rand_score,实现了(未经调整的)Rand 指数。由 Uwe F Mayer 提交的 #17412。新功能
metrics.plot_confusion_matrix现在通过设置colorbar=False支持在 matplotlib 图中将颜色条设为可选。由 Avi Gupta 提交的 #17192增强 为
metrics.median_absolute_error添加sample_weight参数。由 Lucy Liu 提交的 #17225。增强 在
metrics.plot_precision_recall_curve中添加pos_label参数,以便在计算精确率和召回率统计数据时指定要使用的正类。由 Guillaume Lemaitre 提交的 #17569。增强 在
metrics.plot_roc_curve中添加pos_label参数,以便在计算 roc auc 统计数据时指定要使用的正类。由 Clara Matos 提交的 #17651。修复 修复了
metrics.classification_report中的一个错误,当使用output_dict=True调用 0 长度值时,它会引发 AttributeError。由 Shubhanshu Mishra 提交的 #17777。修复 修复了
metrics.classification_report中的一个错误,当使用output_dict=True调用 0 长度值时,它会引发 AttributeError。由 Shubhanshu Mishra 提交的 #17777。修复 修复了
metrics.jaccard_score中的一个错误,当没有真实或预测样本调用时,它会推荐zero_division参数。由 Richard Decal 和 Joseph Willard 提交的 #17826。修复 修复了
metrics.hinge_loss中的错误,当y_true缺少在labels参数中明确提供的一些标签时,会发生错误。由 Cary Goltermann 提交的 #17935。修复 修复了接受 pos_label 参数并从
decision_function或predict_proba返回值计算其指标的评分器。以前,当 pos_label 不对应于classifier.classes_[1]时,它们会返回错误的值。这在直接使用字符串标记目标类训练分类器时尤其重要。由 Guillaume Lemaitre 提交的 #18114。修复 修复了
metrics.plot_confusion_matrix中的一个错误,当y_true包含分类器以前未见的标签,而labels和display_labels参数设置为None时,会发生错误。由 Thomas J. Fan 和 Yakov Pchelintsev 提交的 #18405。
sklearn.model_selection#
主要新功能 添加了(实验性)参数搜索估计器
model_selection.HalvingRandomSearchCV和model_selection.HalvingGridSearchCV,它们实现了 Successive Halving,可以作为model_selection.RandomizedSearchCV和model_selection.GridSearchCV的直接替代品。由 Nicolas Hug、Joel Nothman 和 Andreas Müller 提交的 #13900。新功能
model_selection.RandomizedSearchCV和model_selection.GridSearchCV现在有了方法score_samples。由 Teon Brooks 和 Mohamed Maskani 提交的 #17478。增强
model_selection.TimeSeriesSplit有两个新的关键字参数test_size和gap。test_size允许所有折叠的样本外时间序列长度固定。gap在每个折叠的训练集和测试集之间移除固定数量的样本。由 Kyle Kosic 提交的 #13204。增强
model_selection.permutation_test_score和model_selection.validation_curve现在接受 fit_params 来传递额外的估计器参数。由 Gaurav Dhingra、Julien Jerphanion 和 Amanda Dsouza 提交的 #18527。增强
model_selection.cross_val_score、model_selection.cross_validate、model_selection.GridSearchCV和model_selection.RandomizedSearchCV允许估计器评分失败并将分数替换为error_score。如果error_score="raise",则会引发错误。由 Guillaume Lemaitre 和 Devi Sandeep 提交的 #18343。增强
model_selection.learning_curve现在接受 fit_params 来传递额外的估计器参数。由 Amanda Dsouza 提交的 #18595。修复 修复了当所有分布都是列表且
n_iter大于唯一参数组合数时,model_selection.ParameterSampler的len。由 Nicolas Hug 提交的 #18222。修复 修复了当
model_selection.GridSearchCV和model_selection.RandomizedSearchCV的一个或多个 CV 分割导致非有限分数时发出警告。由 Subrat Sahu、Nirvan 和 Arthur Book 提交的 #18266。增强
model_selection.GridSearchCV、model_selection.RandomizedSearchCV和model_selection.cross_validate支持scoring是一个可调用对象,返回一个包含多个指标名称/值关联的字典。由 Thomas Fan 提交的 #15126。
sklearn.multiclass#
增强
multiclass.OneVsOneClassifier现在接受带有缺失值的输入。因此,可以处理缺失值的估计器(可能是带有插补步骤的管道,或者 HistGradientBoosting 估计器)可以用作多类包装器的估计器。由 Venkatachalam N 提交的 #17987。修复 修复了
multiclass.OutputCodeClassifier在其fit和predict方法中接受稀疏输入数据的问题。现在输入有效性检查已委托给基本估计器。由 Zolisa Bleki 提交的 #17233。
sklearn.multioutput#
增强
multioutput.MultiOutputClassifier和multioutput.MultiOutputRegressor现在接受带有缺失值的输入。因此,可以处理缺失值的估计器(可能是带有插补步骤的管道,HistGradientBoosting 估计器)可以用作多类包装器的估计器。由 Venkatachalam N 提交的 #17987。修复 修复了在
multioutput.ClassifierChain中接受order参数的元组。由 Gus Brocchini 和 Amanda Dsouza 提交的 #18124。
sklearn.naive_bayes#
增强 为
naive_bayes.CategoricalNB添加了参数min_categories,它允许指定每个特征的最小类别数。这使得在训练期间未见的类别也能被考虑在内。由 George Armstrong 提交的 #16326。API 变更
coef_和intercept_属性在naive_bayes.MultinomialNB、naive_bayes.ComplementNB、naive_bayes.BernoulliNB和naive_bayes.CategoricalNB中已弃用,并将在 v1.1(0.26 版的重命名)中移除。由 Juan Carlos Alfaro Jiménez 提交的 #17427。
sklearn.neighbors#
效率 在
neighbors.DistanceMetric中,通过避免在 Cython 中设置n_jobs>1时意外获取 GIL,并在循环外验证数据,加速了seuclidean、wminkowski、mahalanobis和haversine指标在neighbors.KNeighborsClassifier、neighbors.KNeighborsRegressor、neighbors.RadiusNeighborsClassifier、neighbors.RadiusNeighborsRegressor、metrics.pairwise_distances中的计算。由 Wenbo Zhao 提交的 #17038。效率
neighbors.NeighborsBase受益于改进的algorithm = 'auto'启发式算法。除了以前的规则集,现在,当特征数量超过 15 时,将选择brute,假设数据的内在维度对于基于树的方法来说太高。由 Geoffrey Bolmier 提交的 #17148。修复
neighbors.BinaryTree在拟合具有不同维度点的数组数据时,将引发ValueError。由 Chiara Marmo 提交的 #18691。修复 带有数值
shrink_threshold的neighbors.NearestCentroid在拟合所有特征都为常数的数据时,将引发ValueError。由 Trevor Waite 提交的 #18370。修复 在
neighbors.NearestNeighbors、neighbors.RadiusNeighborsClassifier、neighbors.RadiusNeighborsRegressor和neighbors.RadiusNeighborsTransformer的radius_neighbors和radius_neighbors_graph方法中,即使使用“brute”算法进行拟合,使用sort_results=True现在也能正确对结果进行排序。由 Tom Dupre la Tour 提交的 #18612。
sklearn.neural_network#
效率 神经网络的训练和预测现在稍快。由 Alex Henrie 提交的 #17603、#17604、#17606、#17608、#17609、#17633、#17661、#17932。
增强 在
neural_network.BernoulliRBM中避免将 float32 输入转换为 float64。由 Arthur Imbert 提交的 #16352。增强 在
neural_network.MLPClassifier和neural_network.MLPRegressor中支持 32 位计算。由 Srimukh Sripada 提交的 #17759。修复 修复了方法
neural_network.MLPClassifier.fit在热启动时未迭代到max_iter的问题。由 Norbert Preining 和 Guillaume Lemaitre 提交的 #18269。
sklearn.pipeline#
增强 传递给
pipeline.FeatureUnion的transformer_weights中的转换器引用,如果不在transformer_list中,将引发ValueError。由 Cary Goltermann 提交的 #17876。修复
pipeline.Pipeline的切片现在继承原始管道的参数(memory和verbose)。由 Albert Villanova del Moral 和 Paweł Biernat 提交的 #18429。
sklearn.preprocessing#
新功能
preprocessing.OneHotEncoder现在通过将缺失值视为一个类别来支持缺失值。由 Thomas Fan 提交的 #17317。新功能 为
preprocessing.OrdinalEncoder添加了新的handle_unknown参数(带有use_encoded_value选项)以及新的unknown_value参数,以允许在转换期间处理未知类别并设置未知类别的编码值。由 Felix Wick 提交的 #17406 和由 Nicolas Hug 提交的 #18406。新功能 为
preprocessing.MinMaxScaler添加了clip参数,该参数将测试数据的转换值限制在feature_range范围内。由 Yashika Sharma 提交的 #17833。新功能 为
preprocessing.StandardScaler添加了sample_weight参数。允许为每个样本设置单独的权重。由 Maria Telenczuk、Albert Villanova、@panpiort8 和 Alex Gramfort 提交的 #18510、#18447、#16066 和 #18682。增强
model_selection.GridSearchCV的详细输出已改进以提高可读性。由 Raghav Rajagopalan 和 Chiara Marmo 提交的 #16935。增强 为
preprocessing.RobustScaler添加了unit_variance,它将输出数据缩放,使正态分布的特征方差为 1。由 Lucy Liu 和 Mabel Villalba 提交的 #17193。增强 为
preprocessing.KBinsDiscretizer添加了dtype参数。由 Arthur Imbert 提交的 #16335。修复 当
handle_unknown='error'且drop=None适用于编码为全零的样本时,在sklearn.preprocessing.OneHotEncoder.inverse_transform上引发错误。由 Kevin Winata 提交的 #14982。
sklearn.semi_supervised#
主要新功能 添加了
semi_supervised.SelfTrainingClassifier,这是一个元分类器,允许任何监督分类器作为半监督分类器,可以从未标记数据中学习。由 Oliver Rausch 和 Patrice Becker 提交的 #11682。修复 修复了在
preprocessing.OneHotEncoder和preprocessing.OrdinalEncoder中使用 unicode 字符串 dtypes 时编码不正确的问题。由 Thomas Fan 提交的 #15763。
sklearn.svm#
增强 在
svm.SVC、svm.NuSVC、svm.SVR、svm.NuSVR、svm.OneClassSVM的fit、predict和相关方法中调用 SciPy BLAS API 进行 SVM 核函数计算。由 Shuhua Fan 提交的 #16530。
sklearn.tree#
新功能
tree.DecisionTreeRegressor现在支持新的分裂准则'poisson',对计数数据建模很有用。由 Christian Lorentzen 提交的 #17386。增强
tree.plot_tree现在使用 matplotlib 配置设置中的颜色。由 Andreas Müller 提交的 #17187。API 变更 参数
X_idx_sorted在tree.DecisionTreeClassifier.fit和tree.DecisionTreeRegressor.fit中已弃用,并且无效。由 Juan Carlos Alfaro Jiménez 提交的 #17614。
sklearn.utils#
增强 在
check_estimator中添加check_methods_sample_order_invariance,它检查估计器方法在应用于相同但样本顺序不同的数据集时是否不变。由 Jason Ngo 提交的 #17598。增强 在
utils.sparse_func.incr_mean_variance_axis中添加了对权重的支持。由 Maria Telenczuk 和 Alex Gramfort 提交。修复 在
utils.check_array中,当稀疏 DataFrame 包含混合类型时,引发带有清晰错误消息的 ValueError。由 Thomas J. Fan 和 Alex Shacked 提交的 #17992。修复 检查当 axis=1 且维度不匹配时,在
utils.sparse_func.incr_mean_variance_axis中是否引发正确的错误。由 Alex Gramfort 提交。
杂项#
代码和文档贡献者
感谢自 0.23 版本以来为项目维护和改进做出贡献的所有人,包括
Abo7atm, Adam Spannbauer, Adrin Jalali, adrinjalali, Agamemnon Krasoulis, Akshay Deodhar, Albert Villanova del Moral, Alessandro Gentile, Alex Henrie, Alex Itkes, Alex Liang, Alexander Lenail, alexandracraciun, Alexandre Gramfort, alexshacked, Allan D Butler, Amanda Dsouza, amy12xx, Anand Tiwari, Anderson Nelson, Andreas Mueller, Ankit Choraria, Archana Subramaniyan, Arthur Imbert, Ashutosh Hathidara, Ashutosh Kushwaha, Atsushi Nukariya, Aura Munoz, AutoViz and Auto_ViML, Avi Gupta, Avinash Anakal, Ayako YAGI, barankarakus, barberogaston, beatrizsmg, Ben Mainye, Benjamin Bossan, Benjamin Pedigo, Bharat Raghunathan, Bhavika Devnani, Biprateep Dey, bmaisonn, Bo Chang, Boris Villazón-Terrazas, brigi, Brigitta Sipőcz, Bruno Charron, Byron Smith, Cary Goltermann, Cat Chenal, CeeThinwa, chaitanyamogal, Charles Patel, Chiara Marmo, Christian Kastner, Christian Lorentzen, Christoph Deil, Christos Aridas, Clara Matos, clmbst, Coelhudo, crispinlogan, Cristina Mulas, Daniel López, Daniel Mohns, darioka, Darshan N, david-cortes, Declan O’Neill, Deeksha Madan, Elizabeth DuPre, Eric Fiegel, Eric Larson, Erich Schubert, Erin Khoo, Erin R Hoffman, eschibli, Felix Wick, fhaselbeck, Forrest Koch, Francesco Casalegno, Frans Larsson, Gael Varoquaux, Gaurav Desai, Gaurav Sheni, genvalen, Geoffrey Bolmier, George Armstrong, George Kiragu, Gesa Stupperich, Ghislain Antony Vaillant, Gim Seng, Gordon Walsh, Gregory R. Lee, Guillaume Chevalier, Guillaume Lemaitre, Haesun Park, Hannah Bohle, Hao Chun Chang, Harry Scholes, Harsh Soni, Henry, Hirofumi Suzuki, Hitesh Somani, Hoda1394, Hugo Le Moine, hugorichard, indecisiveuser, Isuru Fernando, Ivan Wiryadi, j0rd1smit, Jaehyun Ahn, Jake Tae, James Hoctor, Jan Vesely, Jeevan Anand Anne, JeroenPeterBos, JHayes, Jiaxiang, Jie Zheng, Jigna Panchal, jim0421, Jin Li, Joaquin Vanschoren, Joel Nothman, Jona Sassenhagen, Jonathan, Jorge Gorbe Moya, Joseph Lucas, Joshua Newton, Juan Carlos Alfaro Jiménez, Julien Jerphanion, Justin Huber, Jérémie du Boisberranger, Kartik Chugh, Katarina Slama, kaylani2, Kendrick Cetina, Kenny Huynh, Kevin Markham, Kevin Winata, Kiril Isakov, kishimoto, Koki Nishihara, Krum Arnaudov, Kyle Kosic, Lauren Oldja, Laurenz Reitsam, Lisa Schwetlick, Louis Douge, Louis Guitton, Lucy Liu, Madhura Jayaratne, maikia, Manimaran, Manuel López-Ibáñez, Maren Westermann, Maria Telenczuk, Mariam-ke, Marijn van Vliet, Markus Löning, Martin Scheubrein, Martina G. Vilas, Martina Megasari, Mateusz Górski, mathschy, mathurinm, Matthias Bussonnier, Max Del Giudice, Michael, Milan Straka, Muoki Caleb, N. Haiat, Nadia Tahiri, Ph. D, Naoki Hamada, Neil Botelho, Nicolas Hug, Nils Werner, noelano, Norbert Preining, oj_lappi, Oleh Kozynets, Olivier Grisel, Pankaj Jindal, Pardeep Singh, Parthiv Chigurupati, Patrice Becker, Pete Green, pgithubs, Poorna Kumar, Prabakaran Kumaresshan, Probinette4, pspachtholz, pwalchessen, Qi Zhang, rachel fischoff, Rachit Toshniwal, Rafey Iqbal Rahman, Rahul Jakhar, Ram Rachum, RamyaNP, rauwuckl, Ravi Kiran Boggavarapu, Ray Bell, Reshama Shaikh, Richard Decal, Rishi Advani, Rithvik Rao, Rob Romijnders, roei, Romain Tavenard, Roman Yurchak, Ruby Werman, Ryotaro Tsukada, sadak, Saket Khandelwal, Sam, Sam Ezebunandu, Sam Kimbinyi, Sarah Brown, Saurabh Jain, Sean O. Stalley, Sergio, Shail Shah, Shane Keller, Shao Yang Hong, Shashank Singh, Shooter23, Shubhanshu Mishra, simonamaggio, Soledad Galli, Srimukh Sripada, Stephan Steinfurt, subrat93, Sunitha Selvan, Swier, Sylvain Marié, SylvainLan, t-kusanagi2, Teon L Brooks, Terence Honles, Thijs van den Berg, Thomas J Fan, Thomas J. Fan, Thomas S Benjamin, Thomas9292, Thorben Jensen, tijanajovanovic, Timo Kaufmann, tnwei, Tom Dupré la Tour, Trevor Waite, ufmayer, Umberto Lupo, Venkatachalam N, Vikas Pandey, Vinicius Rios Fuck, Violeta, watchtheblur, Wenbo Zhao, willpeppo, xavier dupré, Xethan, Xue Qianming, xun-tang, yagi-3, Yakov Pchelintsev, Yashika Sharma, Yi-Yan Ge, Yue Wu, Yutaro Ikeda, Zaccharie Ramzi, zoj613, Zhao Feng。