版本 0.23#
有关本次发布主要亮点内容的简短描述,请参阅 scikit-learn 0.23 版本发布亮点 。
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.
版本 0.23.2#
变更的模型#
以下估计器和函数,在相同数据和参数下进行拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化所导致。
Fix
cluster.KMeans
和cluster.MiniBatchKMeans
的inertia_
属性。
详细变更内容列于下方的变更日志中。
(虽然我们正努力通过提供此信息来更好地告知用户,但我们无法保证此列表是完整的。)
变更日志#
sklearn.cluster
#
Fix 修复了
cluster.KMeans
中的一个错误,该错误在tol=0
时可能导致无法声明收敛。#17959 由 Jérémie du Boisberranger 提交。Fix 修复了
cluster.KMeans
和cluster.MiniBatchKMeans
中的一个错误,其中报告的惯性被样本权重错误地加权。#17848 由 Jérémie du Boisberranger 提交。Fix 修复了
cluster.MeanShift
在bin_seeding=True
时的一个错误。当估计的带宽为 0 时,其行为等同于bin_seeding=False
。#17742 由 Jeremie du Boisberranger 提交。Fix 修复了
cluster.AffinityPropagation
中的一个错误,当数组数据类型为 float32 时,会产生不正确的聚类结果。#17995 由 Thomaz Santana 和 Amanda Dsouza 提交。
sklearn.decomposition
#
Fix 修复了
decomposition.MiniBatchDictionaryLearning.partial_fit
应该通过仅迭代一次小批量数据来更新字典。 #17433 由 Chiara Marmo 提交。Fix 在 Windows 上避免在
decomposition.IncrementalPCA.partial_fit
中因较大的batch_size
和n_samples
值导致的溢出问题。 #17985 由 Alan Butler 和 Amanda Dsouza 提交。
sklearn.ensemble
#
Fix 修复了
ensemble.MultinomialDeviance
中的错误,该错误将对数损失的平均值错误地计算为对数损失的总和。 #17694 由 Markus Rempfler 和 Tsutomu Kusanagi 提交。Fix 修复了
ensemble.StackingClassifier
和ensemble.StackingRegressor
与未定义n_features_in_
的估计器的兼容性问题。 #17357 由 Thomas Fan 提交。
sklearn.feature_extraction
#
Fix 修复了
feature_extraction.text.CountVectorizer
中的错误,当设置了max_features
并且特征具有相同的计数时,样本顺序不变性被破坏。 #18016 由 Thomas Fan 、 Roman Yurchak 和 Joel Nothman 提交。
sklearn.linear_model
#
Fix
linear_model.lars_path
在X_copy=True
且Gram='auto'
时不覆盖X
。 #17914 由 Thomas Fan 提交。
sklearn.manifold
#
Fix 修复了一个错误,当
metric='seuclidean'
且X
不是np.float64
类型时,metrics.pairwise_distances
会引发错误。 #15730 由 Forrest Koch 提交。
sklearn.metrics
#
Fix 修复了
metrics.mean_squared_error
中的错误,该错误将多个 RMSE 值的平均值错误地计算为多个 MSE 值的平均值的平方根。 #17309 由 Swier Heeres 提交。
sklearn.pipeline
#
Fix 当
transformer_list
中包含None
时,pipeline.FeatureUnion
会引发弃用警告。#17360 由 Thomas Fan 提交。
sklearn.utils
#
Fix 修复
utils.estimator_checks.check_estimator
,使所有测试用例支持binary_only
估计器标签。#17812 由 Bruno Charron 提交。
版本 0.23.1#
2020年5月18日
更新日志#
sklearn.cluster
#
Efficiency
cluster.KMeans
对于非常小的数据集的效率得到了提升。特别是它不会再产生空闲线程。#17210 和 #17235 由 Jeremie du Boisberranger 提交。Fix 修复了
cluster.KMeans
中的一个错误,其中用户提供的样本权重被就地修改。#17204 由 Jeremie du Boisberranger 提交。
其他#
Fix 修复了第三方估计器在使用
**kwargs
参数的构造函数时,当changed_only
为 True(现在是默认值)时的repr
中的一个错误。#17205 由 Nicolas Hug 提交。
版本 0.23.0#
2020年5月12日
强制使用仅关键字参数#
为了促进库的清晰和无歧义使用,大多数构造函数和函数参数现在期望作为关键字参数传递(即使用 param=value
语法)而不是位置参数。为了简化过渡,如果使用仅关键字参数作为位置参数,则会引发 FutureWarning
。在版本 1.0(0.25 的重命名)中,这些参数将严格为仅关键字,并且会引发 TypeError
。#15005 由 Joel Nothman 、 Adrin Jalali 、 Thomas Fan 和 Nicolas Hug 提交。更多详情请参见 SLEP009 。
更改的模型#
以下估计器和函数,在相同数据和参数下拟合时,可能会产生与上一版本不同的模型。这通常是由于建模逻辑的变化(错误修复或增强),或随机抽样程序的变化所导致。
Fix
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
, 和ensemble.IsolationForest
.Fix
cluster.KMeans
使用algorithm="elkan"
和algorithm="full"
.Fix
cluster.Birch
Fix
compose.ColumnTransformer.get_feature_names
Fix
decomposition.PCA
使用n_components='mle'
Enhancement
decomposition.NMF
和decomposition.non_negative_factorization
使用 float32 数据类型输入。API Change
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
Fix
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
和ensemble.IsolationForest
中的estimator_samples_
Fix
ensemble.StackingClassifier
和ensemble.StackingRegressor
使用sample_weight
Fix
linear_model.RANSACRegressor
使用sample_weight
.Fix
metrics.mean_squared_error
使用squared
和multioutput='raw_values'
.Fix
metrics.mutual_info_score
处理负分。Fix
metrics.confusion_matrix
当y_true
和y_pred
长度为零时。Fix
preprocessing.StandardScaler
使用partial_fit
和稀疏输入。Fix
preprocessing.Normalizer
使用 norm=’max’Fix 任何使用
svm.libsvm
或svm.liblinear
求解器的模型, 包括svm.LinearSVC
,svm.LinearSVR
,
svm.NuSVC
, svm.NuSVR
, svm.OneClassSVM
,
svm.SVC
, svm.SVR
, linear_model.LogisticRegression
.
- Fix tree.DecisionTreeClassifier
, tree.ExtraTreeClassifier
以及
ensemble.GradientBoostingClassifier
以及predict
方法的tree.DecisionTreeRegressor
,tree.ExtraTreeRegressor
, 和ensemble.GradientBoostingRegressor
以及只读的 float32 输入在predict
,decision_path
和predict_proba
.
详细信息列在下面的更新日志中。
(虽然我们正努力通过提供这些信息来更好地通知用户,但我们不能保证此列表是完整的。)
更新日志#
sklearn.cluster
#
Efficiency
cluster.Birch
的 predict 方法实现 通过使用分块方案计算距离矩阵来避免高内存占用。 #16149 by Jeremie du Boisberranger 和 Alex Shacked .Efficiency Major Feature
cluster.KMeans
的关键部分 有了更优化的实现。并行化现在针对数据而不是初始化,允许更好的可扩展性。#11950 by Jeremie du Boisberranger .Enhancement
cluster.KMeans
现在支持当solver = "elkan"
时的稀疏数据。#11950 by Jeremie du Boisberranger .Enhancement
cluster.AgglomerativeClustering
实现了更快速和更节省内存的单链接聚类算法。 #11514 由 Leland McInnes 贡献。Fix 使用
algorithm="elkan"
的cluster.KMeans
现在在tol=0
时也能收敛,与默认的algorithm="full"
一致。 #16075 由 Erich Schubert 贡献。Fix 修复了
cluster.Birch
中的一个错误,其中n_clusters
参数不能为np.int64
类型。 #16484 由 Jeremie du Boisberranger 贡献。Fix
cluster.AgglomerativeClustering
在距离矩阵不是方阵且affinity=precomputed
时增加了特定的错误提示。 #16257 由 Simona Maggio 贡献。API Change
cluster.KMeans
、cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的n_jobs
参数已被弃用。它们现在使用基于 OpenMP 的并行处理。有关如何控制线程数量的更多详细信息,请参阅我们的 并行性 笔记。 #11950 由 Jeremie du Boisberranger 贡献。API Change
cluster.KMeans
的precompute_distances
参数已被弃用。它没有效果。 #11950 由 Jeremie du Boisberranger 贡献。API Change 已向
cluster.AffinityPropagation
添加了random_state
参数。 #16801 由 @rcwoolston 和 Chiara Marmo 贡献。
sklearn.compose
#
Efficiency 当使用数据框和字符串来指定转换器的数据子集时,
compose.ColumnTransformer
现在更快了。 #16431 由 Thomas Fan 贡献。Enhancement
compose.ColumnTransformer
方法get_feature_names
现在支持'passthrough'
列,特征名称对于数据框为列名,对于列索引i
为'xi'
。
#14048 由 Lewis Ball 提交。
Fix
compose.ColumnTransformer
方法get_feature_names
现在在其中一个转换步骤应用于空列列表时返回正确的结果 #15963 由 Roman Yurchak 提交。Fix
compose.ColumnTransformer.fit
在选择数据框中不唯一的列名时会报错。#16431 由 Thomas Fan 提交。
sklearn.datasets
#
Efficiency
datasets.fetch_openml
减少了内存使用,因为它不再在内存中存储完整的原始数据流。#16084 由 Joel Nothman 提交。Feature
datasets.fetch_california_housing
现在支持使用 pandas 处理异构数据,通过设置as_frame=True
。#15950 由 Stephanie Andrews 和 Reshama Shaikh 提交。Feature 嵌入式数据集加载器
datasets.load_breast_cancer
、datasets.load_diabetes
、datasets.load_digits
、datasets.load_iris
、datasets.load_linnerud
和datasets.load_wine
现在支持通过设置as_frame=True
加载为 pandasDataFrame
。#15980 由 @wconnell 和 Reshama Shaikh 提交。Enhancement 在
datasets.make_blobs
中添加了return_centers
参数,可用于返回每个簇的中心。#15709 由 @shivamgargsya 和 Venkatachalam N 提交。Enhancement 函数
datasets.make_circles
和datasets.make_moons
现在接受两个元素的元组。#15707 由 Maciej J Mikulski 提交。Fix
datasets.make_multilabel_classification
现在为参数n_classes < 1
或length < 1
生成ValueError
。#16006 由 Rushabh Vasani 提交。API Change 从
sklearn.logger
中移除了StreamHandler
,以避免在常见情况下附加处理程序时消息的双重记录。
到根日志记录器,并遵循Python日志记录文档建议库将日志消息处理留给用户和应用程序代码。#16451 由 Christoph Deil 提供。
sklearn.decomposition
#
Enhancement
decomposition.NMF
和decomposition.non_negative_factorization
现在保留 float32 数据类型。#16280 由 Jeremie du Boisberranger 提供。Enhancement
decomposition.TruncatedSVD.transform
在给定的稀疏csc
矩阵上现在更快。#16837 由 @wornbb 提供。Fix 使用浮点
n_components
参数的decomposition.PCA
,将仅选择解释方差大于n_components
的成分。#15669 由 Krishna Chaitanya 提供。Fix 使用
n_components='mle'
的decomposition.PCA
现在正确处理小特征值,并且不会推断 0 作为正确的成分数量。#16224 由 Lisa Schwetlick 、Gelavizh Ahmadi 和 Marija Vlajic Wheeler 提供,以及 #16841 由 Nicolas Hug 提供。Fix
decomposition.KernelPCA
方法inverse_transform
现在对转换后的数据应用正确的逆变换。#16655 由 Lewis Ball 提供。Fix 修复了导致
decomposition.KernelPCA
在fit
过程中有时会引发invalid value encountered in multiply
错误的 bug。#16718 由 Gui Miotto 提供。Feature 为
decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
添加了n_components_
属性。#16981 由 Mateusz Górski 提供。
sklearn.ensemble
#
|主要特性|
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在支持 样本权重 . #14696 由 Adrin Jalali 和 Nicolas Hug 贡献。Feature 在
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中,早期停止现在由一个新的early_stopping
参数决定,而不是n_iter_no_change
。默认值为 ‘auto’,如果训练集中至少有 10,000 个样本,则会启用早期停止。#14516 由 Johann Faouzi 贡献。Major Feature
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在支持单调约束,这在特征应该对目标有正/负影响时很有用。#15582 由 Nicolas Hug 贡献。API Change 为类
ensemble.VotingClassifier
和ensemble.VotingRegressor
添加了布尔值verbose
标志。#16069 由 Sam Bail 、 Hanna Bruce MacDonald 、 Reshama Shaikh 和 Chiara Marmo 贡献。API Change 修复了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的一个错误,该错误在同时达到max_leaf_nodes
参数和max_depth
标准时不会遵守max_leaf_nodes
参数。#16183 由 Nicolas Hug 贡献。Fix 更改了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的max_depth
参数的约定。深度现在对应于从根到最深叶子的边数。现在允许使用树桩(只有一个分割的树)。#16182 由 Santhosh B 贡献。Fix 修复了
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
中的一个错误,其中属性estimators_samples_
在fit
期间没有生成正确的索引。#16437 由 Jin-Hwan CHO 贡献。Fix 修复了
ensemble.StackingClassifier
和ensemble.StackingRegressor
中的一个错误,其中sample_weight
参数在评估基本估计器在交叉验证折叠上的表现时没有传递给cross_val_predict
, 以获取元估计器的输入。#16539 由 Bill DeRose 提交。Feature 为
ensemble.HistGradientBoostingRegressor
添加了额外的选项loss="poisson"
, 该选项添加了带有对数链接的泊松偏差,适用于建模计数数据。 #16692 由 Christian Lorentzen 提交。Fix 修复了一个错误,当
warm_start=True
、early_stopping=True
且没有验证集时,ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
会在多次调用 fit 时失败。 #16663 由 Thomas Fan 提交。
sklearn.feature_extraction
#
Efficiency
feature_extraction.text.CountVectorizer
现在在按文档频率修剪特征后对其进行排序。 这对于结合了min_df
或max_df
的大型词汇表数据集提高了性能。 #15834 由 Santiago M. Mola 提交。
sklearn.feature_selection
#
Enhancement 在
feature_selection.RFE
和feature_selection.RFECV
中添加了对多输出数据的支持。 #16103 由 Divyaprabha M 提交。API Change 将
feature_selection.SelectorMixin
重新添加到公共 API 中。 #16132 由 @trimeta 提交。
sklearn.gaussian_process
#
Enhancement
gaussian_process.kernels.Matern
在nu=np.inf
时返回 RBF 核。 #15503 由 Sam Dixon 提交。Fix 修复了
gaussian_process.GaussianProcessRegressor
中的一个错误, 该错误导致在没有使用 WhiteKernel 时预测的标准差仅在 0 和 1 之间。 #15782
由 @plgreenLIRU 编写。
sklearn.impute
#
Enhancement
impute.IterativeImputer
现在接受标量和类数组输入作为max_value
和min_value
。类数组输入允许为每个特征指定不同的最大值和最小值。#16403 由 Narendra Mukherjee 编写。Enhancement
impute.SimpleImputer
、impute.KNNImputer
和impute.IterativeImputer
现在接受带有缺失值的 pandas 可空整数类型。#16508 由 Thomas Fan 编写。
sklearn.inspection
#
Feature
inspection.partial_dependence
和inspection.plot_partial_dependence
现在支持ensemble.RandomForestRegressor
和tree.DecisionTreeRegressor
的快速 ‘递归’ 方法。#15864 由 Nicolas Hug 编写。
sklearn.linear_model
#
|主要特性| 添加了具有非正态误差分布的广义线性模型 (GLM),包括使用泊松、伽马和特威迪分布的
linear_model.PoissonRegressor
、linear_model.GammaRegressor
和linear_model.TweedieRegressor
。#14300 由 Christian Lorentzen 、 Roman Yurchak 和 Olivier Grisel 编写。|主要特性| 在
linear_model.ElasticNet
和linear_model.Lasso
中支持密集特征矩阵X
的sample_weight
。#15436 由 Christian Lorentzen 编写。Efficiency
linear_model.RidgeCV
和linear_model.RidgeClassifierCV
现在在fit
期间不再分配一个可能很大的数组来存储所有超参数的 对偶系数,也不再分配一个数组来存储所有误差或 LOO 预测,除非store_cv_values
为True
。 #15652 由 Jérôme Dockès 编写。Enhancement
linear_model.LassoLars
和
linear_model.Lars
现在支持一个 jitter
参数,该参数会在目标中添加随机噪声。这可能在某些边缘情况下有助于稳定性。#15179 由 @angelaambroz 贡献。
Fix 修复了一个错误,即如果向
linear_model.RANSACRegressor
的 fit 方法传递了sample_weight
参数,它不会在最终模型的拟合过程中传递给包装的base_estimator
。#15773 由 Jeremy Alexandre 贡献。Fix 为
linear_model.RidgeCV
和linear_model.RidgeClassifierCV
添加了best_score_
属性。#15655 由 Jérôme Dockès 贡献。Fix 修复了
linear_model.RidgeClassifierCV
中的一个错误,以传递特定的评分策略。之前内部估计器输出的是分数而不是预测结果。#14848 由 Venkatachalam N 贡献。Fix
linear_model.LogisticRegression
现在会在solver='newton-cg'
时避免不必要的迭代,通过在utils.optimize._newton_cg
中检查absgrad
和tol
的最大值是否不严格小于而是等于。#16266 由 Rushabh Vasani 贡献。API Change 弃用了
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
和linear_model.PassiveAggressiveRegressor
中的公共属性standard_coef_
、standard_intercept_
、average_coef_
和average_intercept_
。#16261 由 Carlos Brandt 贡献。Fix Efficiency
linear_model.ARDRegression
在n_samples > n_features
时更加稳定且速度更快。现在它可以扩展到数十万个样本。稳定性修复可能会导致非零系数的数量和预测输出的变化。#16849 由 Nicolas Hug 贡献。Fix 修复了
linear_model.ElasticNetCV
、linear_model.MultiTaskElasticNetCV
和linear_model.LassoCV
中的一个错误。
以及 linear_model.MultiTaskLassoCV
,在使用 joblib loky 后端时,拟合会失败。#14264 由 Jérémie du Boisberranger 贡献。
Efficiency 通过避免在小数组上进行较慢的 BLAS Level 2 调用,加速了
linear_model.MultiTaskLasso
、linear_model.MultiTaskLassoCV
、linear_model.MultiTaskElasticNet
、linear_model.MultiTaskElasticNetCV
。#17021 由 Alex Gramfort 和 Mathurin Massias 贡献。
sklearn.metrics
#
Enhancement
metrics.pairwise_distances_chunked
现在允许其reduce_func
没有返回值,从而支持就地操作。 #16397 由 Joel Nothman 贡献。Fix 修复了
metrics.mean_squared_error
中的一个错误,使其在参数multioutput='raw_values'
时不忽略squared
参数。 #16323 由 Rushabh Vasani 贡献。Fix 修复了
metrics.mutual_info_score
中的一个错误,该错误可能导致返回负分。 #16362 由 Thomas Fan 贡献。Fix 修复了
metrics.confusion_matrix
中的一个错误,该错误在y_true
和y_pred
长度为零且labels
不为None
时会引发错误。此外,当向labels
参数传递空列表时,我们也会引发错误。 #16442 由 Kyle Parsons 贡献。API Change 更改了
metrics.ConfusionMatrixDisplay.plot
和metrics.plot_confusion_matrix
中值的格式化方式,选择较短的格式(’2g’ 或 ‘d’)。 #16159 由 Rick Mackenbach 和 Thomas Fan 贡献。API Change 从版本 0.25 开始,
metrics.pairwise_distances
将不再自动计算 Mahalanobis 距离的VI
参数和 seuclidean 距离的V
参数(如果传递了Y
)。用户需要在他们的训练数据上计算这个参数。
sklearn.metrics
#
Enhancement 在调用
pairwise_distances
时,可以选择并传递metric
参数。#16993 由 Joel Nothman 提交。
sklearn.model_selection
#
Enhancement
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
在拟合失败警告消息中除了之前发出的类型和详细信息外,还提供了堆栈跟踪信息。 #15622 由 Gregory Morse 提交。Fix
model_selection.cross_val_predict
支持在y=None
时使用method="predict_proba"
。#15918 由 Luca Kubin 提交。Fix
model_selection.fit_grid_point
在 0.23 版本中已弃用,并将在 0.25 版本中移除。#16401 由 Arie Pratama Sutiono 提交。
sklearn.multioutput
#
Feature
multioutput.MultiOutputRegressor.fit
和multioutput.MultiOutputClassifier.fit
现在可以接受fit_params
参数,以传递给每个步骤的estimator.fit
方法。#15953 #15959 由 Ke Huang 提交。Enhancement
multioutput.RegressorChain
现在支持在fit
过程中为base_estimator
提供fit_params
。 #16111 由 Venkatachalam N 提交。
sklearn.naive_bayes
#
Fix 当输入的特征数量在
predict
和fit
之间不一致时,naive_bayes.CategoricalNB
会显示格式正确的错误消息。 #16090 由 Madhura Jayaratne 提交。
sklearn.neural_network
#
Efficiency
neural_network.MLPClassifier
和neural_network.MLPRegressor
在使用随机求解器'sgd'
或'adam'
且shuffle=True
时减少了内存占用。#14075 由 @meyer89 提交。Fix 通过裁剪概率提高了
neural_network.MLPClassifier
中逻辑损失函数的数值稳定性。 #16117 由 Thomas Fan 提交。
sklearn.inspection
#
Enhancement
inspection.PartialDependenceDisplay
现在将十分位线作为属性公开,以便它们可以被隐藏或自定义。#15785 由 Nicolas Hug 贡献
sklearn.preprocessing
#
Feature
preprocessing.OneHotEncoder
的参数drop
现在接受值 ‘if_binary’,并将删除每个具有两个类别的特征的第一个类别。#16245 由 Rushabh Vasani 贡献。Enhancement
preprocessing.OneHotEncoder
的drop_idx_
ndarray 现在可以包含None
,其中drop_idx_[i] = None
表示不删除索引i
的类别。#16585 由 Chiara Marmo 贡献。Enhancement
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
、preprocessing.RobustScaler
现在支持带有缺失值的 pandas 可空整数类型。#16508 由 Thomas Fan 贡献。Efficiency
preprocessing.OneHotEncoder
现在在转换时更快。#15762 由 Thomas Fan 贡献。Fix 修复了
preprocessing.StandardScaler
中的一个错误,该错误在调用partial_fit
处理稀疏输入时错误地计算统计数据。#16466 由 Guillaume Lemaitre 贡献。Fix 修复了
preprocessing.Normalizer
在 norm=’max’ 时的一个错误,该错误在归一化向量之前没有取最大值的绝对值。#16632 由 Maura Pintor 和 Battista Biggio 贡献。
sklearn.semi_supervised
#
Fix
semi_supervised.LabelSpreading
和semi_supervised.LabelPropagation
在归一化label_distributions_
时避免除以零警告。#15946 由 @ngshya 贡献。
sklearn.svm
#
Fix Efficiency 改进了
libsvm
和liblinear
中用于随机选择坐标下降算法中坐标的随机数生成器。之前使用平台相关的 C 语言rand()
函数,该函数在 Windows 平台上只能生成最大为32767
的数字(参见这个 博客文章 ),并且根据 这个演示文稿 的建议,其随机化能力较差。现在替换为 C++11 的mt19937
,这是一个梅森旋转算法,能够在所有平台上正确生成 31 位/63 位随机数。此外,用于在有界区间内获取随机数的粗糙“取模”后处理器被替换为根据 这篇博客文章 建议的调整后的 Lemire 方法。任何使用svm.libsvm
或svm.liblinear
求解器的模型,包括svm.LinearSVC
、svm.LinearSVR
、svm.NuSVC
、svm.NuSVR
、svm.OneClassSVM
、svm.SVC
、svm.SVR
、linear_model.LogisticRegression
,都会受到影响。特别是当样本数量(LibSVM)或特征数量(LibLinear)较大时,用户可以期待更好的收敛效果。#13511 由 Sylvain Marié 贡献。Fix 修复了
svm.SVC
和svm.SVR
中自定义核函数不接受浮点条目(如字符串核)的问题。请注意,自定义核函数现在需要在接收到有效数值数组时验证其输入。#11296 由 Alexandre Gramfort 和 Georgi Peev 贡献。API Change
svm.SVR
和svm.OneClassSVM
的属性probA_
和probB_
现已弃用,因为它们没有实际用途。#15558 由 Thomas Fan 贡献。
sklearn.tree
#
Fix
tree.plot_tree
的rotate
参数未被使用,现已弃用。
#15806 由 Chiara Marmo 提交。
Fix 修复了在
predict
、decision_path
和predict_proba
方法中对只读 float32 数组输入的支持,这些方法属于tree.DecisionTreeClassifier
、tree.ExtraTreeClassifier
和ensemble.GradientBoostingClassifier
,以及predict
方法属于tree.DecisionTreeRegressor
、tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
。#16331 由 Alexandre Batisse 提交。
sklearn.utils
#
Major Feature 现在可以使用丰富的 HTML 表示形式显示估计器。在 Jupyter 笔记本中可以通过在
set_config
中设置display='diagram'
来启用此功能。原始 HTML 可以通过使用utils.estimator_html_repr
返回。#14180 由 Thomas Fan 提交。Enhancement 改进了
utils.validation.column_or_1d
中的错误消息。#15926 由 Loïc Estève 提交。Enhancement 在
utils.check_array
中为 pandas 稀疏 DataFrame 添加了警告。#16021 由 Rushabh Vasani 提交。Enhancement
utils.check_array
现在可以从仅包含SparseArray
列的 pandas DataFrame 构建稀疏矩阵。#16728 由 Thomas Fan 提交。Enhancement
utils.check_array
支持 pandas 的可空整数类型,当force_all_finite
设置为False
或'allow-nan'
时,数据会被转换为浮点值,其中pd.NA
值被替换为np.nan
。因此,所有接受以np.nan
表示缺失值的数值输入的sklearn.preprocessing
转换器现在也可以直接接受使用pd.NA
作为缺失值标记的pd.Int*
或pd.Uint*
类型列的 pandas DataFrame。#16508 由 Thomas Fan 提交。API Change 将类传递给
utils.estimator_checks.check_estimator
和
utils.estimator_checks.parametrize_with_checks
现已弃用,
并且对类的支持将在 0.24 版本中移除。请改为传递实例。
#17032 由 Nicolas Hug 提交。
API Change
utils.estimator_checks
中的私有工具_safe_tags
已被移除, 因此所有标签应通过estimator._get_tags()
获取。请注意,类似RegressorMixin
的 Mixins 必须在 MRO 中 位于基类之前,以确保_get_tags()
正常工作。 #16950 由 Nicolas Hug 提交。Fix
utils.all_estimators
现在仅返回公共估计器。 #15380 由 Thomas Fan 提交。
其他#
Major Feature 增加了在 Jupyter Notebook 或 Lab 中显示的估计器的 HTML 表示。 通过设置
sklearn.set_config
中的display
选项激活此可视化。 #14180 由 Thomas Fan 提交。Enhancement
scikit-learn
现在可以在没有错误的情况下与mypy
一起工作。 #16726 由 Roman Yurchak 提交。API Change 大多数估计器现在公开了一个
n_features_in_
属性。该属性等于传递给fit
方法的特征数量。 详情请参见 SLEP010 。 #16112 由 Nicolas Hug 提交。API Change 估计器现在有一个默认值为 False 的
requires_y
标签, 除了继承自~sklearn.base.RegressorMixin
或~sklearn.base.ClassifierMixin
的估计器。 此标签用于确保在预期 y 但传递了 None 时引发适当的错误消息。 #16622 由 Nicolas Hug 提交。API Change 默认设置
print_changed_only
已从 False 更改为 True。 这意味着估计器的repr
现在更加简洁,仅在打印估计器时显示默认值已更改的参数。 您可以通过使用sklearn.set_config(print_changed_only=False)
恢复之前的行为。 另外,请注意,
总是可以使用 est.get_params(deep=False)
快速检查任何估计器的参数。由 Nicolas Hug 提交的 #17061 。
代码和文档贡献者
感谢自版本 0.22 以来为项目的维护和改进做出贡献的每一个人,包括:
Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang “Maxin” Tang