版本 0.23#
有关此发行版主要亮点的简短说明,请参阅 scikit-learn 0.23 的发行亮点。
变更日志图例
主要功能 你以前无法实现的重要功能。
功能 你以前无法实现的功能。
效率 现有功能现在可能不需要那么多的计算或内存。
增强 其他一些小的改进。
修复 以前未按文档说明或合理预期工作的内容现在应该可以工作了。
API 变更 你需要更改代码才能在将来获得相同的效果;或者某个功能将在将来被移除。
版本 0.23.2#
已更改的模型#
使用相同数据和参数拟合的以下估计器和函数,可能生成与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程中的更改造成的。
修复
cluster.KMeans
和cluster.MiniBatchKMeans
的inertia_
属性。
详细信息列在下面的变更日志中。
(虽然我们正在努力通过提供此信息来更好地告知用户,但我们无法保证此列表完整。)
变更日志#
sklearn.cluster
#
修复 修复了
cluster.KMeans
中的一个错误,其中舍入误差可能会阻止在tol=0
时声明收敛。 #17959 由 Jérémie du Boisberranger 完成。修复 修复了
cluster.KMeans
和cluster.MiniBatchKMeans
中的一个错误,其中报告的惯性被样本权重错误地加权了。 #17848 由 Jérémie du Boisberranger 完成。修复 修复了
cluster.MeanShift
中使用bin_seeding=True
的一个错误。当估计的带宽为 0 时,其行为等效于bin_seeding=False
。 #17742 由 Jeremie du Boisberranger 完成。修复 修复了
cluster.AffinityPropagation
中的一个错误,当数组 dtype 为 float32 时,该错误会产生不正确的集群。 #17995 由 Thomaz Santana 和 Amanda Dsouza 完成。
sklearn.decomposition
#
修复 修复了
decomposition.MiniBatchDictionaryLearning.partial_fit
中的一个错误,该错误应该通过仅迭代一个小批量一次来更新字典。 #17433 由 Chiara Marmo 完成。修复 避免在
decomposition.IncrementalPCA.partial_fit
中的 Windows 上发生溢出,适用于大型batch_size
和n_samples
值。 #17985 由 Alan Butler 和 Amanda Dsouza 完成。
sklearn.ensemble
#
修复 修复了
ensemble.MultinomialDeviance
中的错误,其中对数损失的平均值被错误地计算为对数损失的总和。 #17694 由 Markus Rempfler 和 Tsutomu Kusanagi 完成。修复 修复了
ensemble.StackingClassifier
和ensemble.StackingRegressor
与未定义n_features_in_
的估计器的兼容性问题。 #17357 由 Thomas Fan 完成。
sklearn.feature_extraction
#
修复 修复了
feature_extraction.text.CountVectorizer
中的一个bug,当设置max_features
且特征计数相同的情况下,样本顺序不变性被破坏。 #18016 由 Thomas Fan,Roman Yurchak 和 Joel Nothman 完成。
sklearn.linear_model
#
修复
linear_model.lars_path
在X_copy=True
和Gram='auto'
时不会覆盖X
。 #17914 由 Thomas Fan 完成。
sklearn.manifold
#
修复 修复了一个bug,当
metric='seuclidean'
且X
不是np.float64
类型时,metrics.pairwise_distances
会抛出错误。 #15730 由 Forrest Koch 完成。
sklearn.metrics
#
修复 修复了
metrics.mean_squared_error
中的一个bug,其中多个RMSE值的平均值被错误地计算为多个MSE值平均值的平方根。 #17309 由 Swier Heeres 完成。
sklearn.pipeline
#
修复 当
None
包含在transformer_list
中时,pipeline.FeatureUnion
会发出弃用警告。 #17360 由 Thomas Fan 完成。
sklearn.utils
#
修复 修复了
utils.estimator_checks.check_estimator
,以便所有测试用例都支持binary_only
估计器标签。 #17812 由 Bruno Charron 完成。
版本 0.23.1#
2020年5月18日
变更日志#
sklearn.cluster
#
效率提升 对于非常小的数据集,
cluster.KMeans
的效率得到了提升。特别是它不再会产生空闲线程。 #17210 和 #17235 由 Jeremie du Boisberranger 完成。修复 修复了
cluster.KMeans
中的一个bug,用户提供的样本权重会被就地修改。 #17204 由 Jeremie du Boisberranger 完成。
其他#
修复 修复了使用其构造函数中
**kwargs
参数的第三方估计器的repr
中的一个bug,当changed_only
为True(现在是默认值)时。 #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。
已修改的模型#
使用相同数据和参数拟合的以下估计器和函数,可能生成与先前版本不同的模型。这通常是由于建模逻辑(错误修复或增强)或随机抽样过程中的更改造成的。
修复
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
和ensemble.IsolationForest
。修复 使用
algorithm="elkan"
和algorithm="full"
的cluster.KMeans
。修复
compose.ColumnTransformer.get_feature_names
修复 使用
n_components='mle'
的decomposition.PCA
增强 使用float32类型输入的
decomposition.NMF
和decomposition.non_negative_factorization
。API变更
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
修复
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
和ensemble.IsolationForest
中的estimator_samples_
。修复 使用
sample_weight
的ensemble.StackingClassifier
和ensemble.StackingRegressor
。修复 使用
sample_weight
的linear_model.RANSACRegressor
。修复 使用
squared
和multioutput='raw_values'
的metrics.mean_squared_error
。修复
metrics.mutual_info_score
负分问题。修复
metrics.confusion_matrix
在y_true
和y_pred
长度为零的情况。修复
preprocessing.StandardScaler
使用partial_fit
和稀疏输入的情况。修复
preprocessing.Normalizer
在 norm='max' 的情况。修复 使用
svm.libsvm
或svm.liblinear
求解器的任何模型,包括svm.LinearSVC
,svm.LinearSVR
,svm.NuSVC
,svm.NuSVR
,svm.OneClassSVM
,svm.SVC
,svm.SVR
,linear_model.LogisticRegression
。修复
tree.DecisionTreeClassifier
,tree.ExtraTreeClassifier
和ensemble.GradientBoostingClassifier
以及tree.DecisionTreeRegressor
,tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
的predict
方法中的只读 float32 输入,以及decision_path
和predict_proba
方法。
详细信息列在下面的变更日志中。
(虽然我们正在努力通过提供此信息来更好地告知用户,但我们无法保证此列表完整。)
更新日志#
sklearn.cluster
#
效率提升
cluster.Birch
的 predict 方法实现避免了高内存占用,通过分块方案计算距离矩阵。#16149 由 Jeremie du Boisberranger 和 Alex Shacked 完成。效率提升 主要功能
cluster.KMeans
的关键部分进行了更优化的实现。现在并行处理的是数据而不是初始化,从而提高了可扩展性。#11950 由 Jeremie du Boisberranger 完成。增强 当
solver = "elkan"
时,cluster.KMeans
现在支持稀疏数据。#11950 由 Jeremie du Boisberranger 完成。增强
cluster.AgglomerativeClustering
对单链接聚类进行了更快、更节省内存的实现。#11514 由 Leland McInnes 完成。修复 当
algorithm="elkan"
时,cluster.KMeans
现在可以像默认的algorithm="full"
一样,在tol=0
的情况下收敛。#16075 由 Erich Schubert 完成。修复 修复了
cluster.Birch
中的一个 bug,其中n_clusters
参数不能是np.int64
类型。#16484 由 Jeremie du Boisberranger 完成。修复
cluster.AgglomerativeClustering
在距离矩阵不是方阵且affinity=precomputed
时添加了具体的错误信息。 #16257 由 Simona Maggio 完成。API 变更
cluster.KMeans
、cluster.SpectralCoclustering
和cluster.SpectralBiclustering
的n_jobs
参数已弃用。它们现在使用基于 OpenMP 的并行化。有关如何控制线程数量的更多详细信息,请参阅我们的 并行处理 说明。 #11950 由 Jeremie du Boisberranger 完成。API 变更
cluster.KMeans
的precompute_distances
参数已弃用。它没有任何作用。 #11950 由 Jeremie du Boisberranger 完成。API 变更
cluster.AffinityPropagation
已添加random_state
参数。 #16801 由 @rcwoolston 和 Chiara Marmo 完成。
sklearn.compose
#
效率提升 当使用数据框并且字符串用于指定转换器的特定数据集子集时,
compose.ColumnTransformer
现在速度更快了。 #16431 由 Thomas Fan 完成。增强
compose.ColumnTransformer
的get_feature_names
方法现在支持'passthrough'
列,特征名称可以是数据框的列名,也可以是列索引i
的'xi'
。 #14048 由 Lewis Ball 完成。修复
compose.ColumnTransformer
的get_feature_names
方法现在在其中一个转换器步骤应用于空列列表时返回正确的结果。 #15963 由 Roman Yurchak 完成。修复 当选择数据框中不唯一的列名时,
compose.ColumnTransformer.fit
将会报错。 #16431 由 Thomas Fan 完成。
sklearn.datasets
#
效率提升
datasets.fetch_openml
减少了内存使用,因为它不再将完整的数据集文本流存储在内存中。 #16084 由 Joel Nothman 完成。新功能 通过设置
as_frame=True
,datasets.fetch_california_housing
现在支持使用 pandas 处理异构数据。 #15950 由 Stephanie Andrews 和 Reshama Shaikh 完成。功能 嵌入式数据集加载器
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 完成。增强 在
datasets.make_blobs
中添加了return_centers
参数,可用于返回每个集群的中心。 #15709 由 @shivamgargsya 和 Venkatachalam N 完成。增强 函数
datasets.make_circles
和datasets.make_moons
现在接受二元组作为参数。 #15707 由 Maciej J Mikulski 完成。修复
datasets.make_multilabel_classification
现在针对参数n_classes < 1
或length < 1
生成ValueError
。 #16006 由 Rushabh Vasani 完成。API变更
StreamHandler
已从sklearn.logger
中移除,以避免在将处理程序附加到根记录器(在常见情况下)时出现消息双重记录的情况,并遵循 Python 日志记录文档中关于库应将日志消息处理留给用户和应用程序代码的建议。 #16451 由 Christoph Deil 完成。
sklearn.decomposition
#
增强
decomposition.NMF
和decomposition.non_negative_factorization
现在保留 float32 数据类型。 #16280 由 Jeremie du Boisberranger 完成。增强
decomposition.TruncatedSVD.transform
在给定的稀疏csc
矩阵上的速度更快。 #16837 由 @wornbb 完成。修复 使用浮点数
n_components
参数的decomposition.PCA
将专门选择解释方差大于n_components
的成分。 #15669 由 Krishna Chaitanya 完成。修复 使用
n_components='mle'
的decomposition.PCA
现在可以正确处理小的特征值,并且不会将 0 推断为正确的成分数量。 #16224 由 Lisa Schwetlick、Gelavizh Ahmadi 和 Marija Vlajic Wheeler 完成,以及 #16841 由 Nicolas Hug 完成。修复
decomposition.KernelPCA
方法inverse_transform
现在将正确的逆变换应用于变换后的数据。 #16655 由 Lewis Ball 完成。修复 修复了导致
decomposition.KernelPCA
在fit
期间有时会引发invalid value encountered in multiply
错误的 bug。 #16718 由 Gui Miotto 完成。新增功能 为
decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
添加了n_components_
属性。 #16981 由 Mateusz Górski 完成。
sklearn.ensemble
#
主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在支持 样本权重 (sample_weight)。 #14696 由 Adrin Jalali 和 Nicolas Hug 完成。新增功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的提前停止现在由新的early_stopping
参数决定,而不是n_iter_no_change
。默认值为“auto”,如果训练集至少有 10,000 个样本,则启用提前停止。 #14516 由 Johann Faouzi 完成。主要功能
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在支持单调性约束,这在特征应该对目标具有正/负影响时非常有用。 #15582 由 Nicolas Hug 完成。API 变更 为以下类添加了布尔型
verbose
标志:ensemble.VotingClassifier
和ensemble.VotingRegressor
。 #16069 由 Sam Bail、Hanna Bruce MacDonald、Reshama Shaikh 和 Chiara Marmo 完成。API 变更 修复了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
中的一个错误,该错误在同时达到max_leaf_nodes
和max_depth
标准时不会遵守max_leaf_nodes
参数。 #16183 由 Nicolas Hug 完成。错误修复 更改了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的max_depth
参数约定。深度现在对应于从根到最深叶的边数。现在允许使用残桩(只有一个分割的树)。 #16182 由 Santhosh B 完成。错误修复 修复了
ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
中的一个错误,其中estimators_samples_
属性未生成在fit
期间使用的正确索引。 #16437 由 Jin-Hwan CHO 完成。错误修复 修复了
ensemble.StackingClassifier
和ensemble.StackingRegressor
中的一个错误,该错误在使用交叉验证折叠评估基本估计器以获得元估计器的输入时,未将sample_weight
参数传递给cross_val_predict
。 #16539 由 Bill DeRose 完成。新增功能 为
ensemble.HistGradientBoostingRegressor
添加了额外的选项loss="poisson"
,该选项添加了具有对数链接的泊松偏差,可用于对计数数据建模。 #16692 由 Christian Lorentzen 完成。错误修复 修复了一个错误,该错误会导致在
warm_start=True
、early_stopping=True
且没有验证集的情况下,多次调用ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
的 `fit` 方法时失败。 #16663 由 Thomas Fan 完成。
sklearn.feature_extraction
#
性能提升
feature_extraction.text.CountVectorizer
现在在根据文档频率进行剪枝后对特征进行排序。这提高了对于具有大型词汇表并结合使用min_df
或max_df
的数据集的性能。 #15834 由 Santiago M. Mola 完成。
sklearn.feature_selection
#
增强 在
feature_selection.RFE
和feature_selection.RFECV
中添加了对多输出数据的支持。 #16103 由 Divyaprabha M 完成。API变更 将
feature_selection.SelectorMixin
恢复到公共API。 #16132 由 @trimeta 完成。
sklearn.gaussian_process
#
增强 当
nu=np.inf
时,gaussian_process.kernels.Matern
返回 RBF 核。 #15503 由 Sam Dixon 完成。错误修复 修复了
gaussian_process.GaussianProcessRegressor
中的一个错误,该错误会导致在不使用 WhiteKernel 时预测的标准差仅介于 0 和 1 之间。 #15782 由 @plgreenLIRU 完成。
sklearn.impute
#
增强
impute.IterativeImputer
接受max_value
和min_value
的标量和数组输入。数组输入允许为每个特征指定不同的最大值和最小值。 #16403 由 Narendra Mukherjee 完成。增强
impute.SimpleImputer
、impute.KNNImputer
和impute.IterativeImputer
接受具有缺失值的 pandas 可空整数数据类型。 #16508 由 Thomas Fan 完成。
sklearn.inspection
#
新增功能
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
,它们分别使用泊松分布、伽马分布和 Tweedie 分布。 #14300 由 Christian Lorentzen、Roman Yurchak 和 Olivier Grisel 完成。主要功能 在
linear_model.ElasticNet
和linear_model.Lasso
中支持针对密集特征矩阵X
的sample_weight
。 #15436 由 Christian Lorentzen 完成。效率提升
linear_model.RidgeCV
和linear_model.RidgeClassifierCV
现在在其fit
方法中不会分配一个潜在的大型数组来存储所有超参数的双重系数,也不会分配一个数组来存储所有误差或 LOO 预测,除非store_cv_values
为True
。 #15652 由 Jérôme Dockès 完成。增强功能
linear_model.LassoLars
和linear_model.Lars
现在支持jitter
参数,该参数会向目标添加随机噪声。这可能有助于解决某些极端情况下的稳定性问题。 #15179 由 @angelaambroz 完成。错误修复 修复了一个错误,如果将
sample_weight
参数传递给linear_model.RANSACRegressor
的 fit 方法,则在拟合最终模型期间不会将其传递给包装的base_estimator
。 #15773 由 Jeremy Alexandre 完成。错误修复 为
linear_model.RidgeCV
和linear_model.RidgeClassifierCV
添加了best_score_
属性。 #15655 由 Jérôme Dockès 完成。错误修复 修复了
linear_model.RidgeClassifierCV
中的一个错误,以传递特定的评分策略。之前内部估计器输出分数而不是预测值。 #14848 由 Venkatachalam N 完成。错误修复 当
solver='newton-cg'
时,linear_model.LogisticRegression
现在将避免不必要的迭代,方法是在utils.optimize._newton_cg
中检查absgrad
和tol
的最大值是否小于或等于,而不是严格小于。 #16266 由 Rushabh Vasani 完成。API 变更 弃用
linear_model.SGDClassifier
、linear_model.SGDRegressor
、linear_model.PassiveAggressiveClassifier
、linear_model.PassiveAggressiveRegressor
中的公共属性standard_coef_
、standard_intercept_
、average_coef_
和average_intercept_
。 #16261 由 Carlos Brandt 完成。错误修复 效率提升 当
n_samples > n_features
时,linear_model.ARDRegression
更稳定且速度更快。它现在可以扩展到数十万个样本。稳定性修复可能意味着非零系数的数量和预测输出的变化。 #16849 由 Nicolas Hug 完成。修复 修复了
linear_model.ElasticNetCV
、linear_model.MultiTaskElasticNetCV
、linear_model.LassoCV
和linear_model.MultiTaskLassoCV
中的一个bug,该bug会导致在使用joblib loky后端时拟合失败。#14264 由 Jérémie du Boisberranger提交。效率提升 通过避免对小型数组进行较慢的BLAS Level 2调用,加快了
linear_model.MultiTaskLasso
、linear_model.MultiTaskLassoCV
、linear_model.MultiTaskElasticNet
、linear_model.MultiTaskElasticNetCV
的速度。#17021 由 Alex Gramfort 和 Mathurin Massias 提交。
sklearn.metrics
#
增强
metrics.pairwise_distances_chunked
现在允许其reduce_func
没有返回值,从而实现就地操作。#16397 由 Joel Nothman 提交。修复 修复了
metrics.mean_squared_error
中的一个bug,该bug会在multioutput='raw_values'
时忽略参数squared
。#16323 由 Rushabh Vasani 提交。修复 修复了
metrics.mutual_info_score
中的一个bug,该bug会导致返回负数。#16362 由 Thomas Fan 提交。修复 修复了
metrics.confusion_matrix
中的一个bug,该bug会在y_true
和y_pred
长度为零且labels
不为None
时引发错误。此外,当向labels
参数提供空列表时,我们也会引发错误。#16442 由 Kyle Parsons 提交。API变更 更改了
metrics.ConfusionMatrixDisplay.plot
和metrics.plot_confusion_matrix
中值的格式,选择较短的格式('2g' 或 'd')。#16159 由 Rick Mackenbach 和 Thomas Fan 提交。API变更 从 0.25 版本开始,
metrics.pairwise_distances
将不再自动为马氏距离计算VI
参数,也不再为 seuclidean 距离计算V
参数(如果传递了Y
)。用户将需要在其选择的训练数据上计算此参数,并将其传递给pairwise_distances
。#16993 由 Joel Nothman 提交。
sklearn.model_selection
#
增强
model_selection.GridSearchCV
和model_selection.RandomizedSearchCV
在拟合失败警告消息中除了以前发出的类型和详细信息外,还提供了堆栈跟踪信息。#15622 由 Gregory Morse 提交。修复
model_selection.cross_val_predict
在y=None
时支持method="predict_proba"
。#15918 由 Luca Kubin 提交。修复
model_selection.fit_grid_point
已在 0.23 版本中弃用,并将从 0.25 版本中移除。 #16401 由 Arie Pratama Sutiono 完成。
sklearn.multioutput
#
新增功能
multioutput.MultiOutputRegressor.fit
和multioutput.MultiOutputClassifier.fit
现在可以接受fit_params
参数,并将参数传递给每个步骤的estimator.fit
方法。 #15953 #15959 由 Ke Huang 完成。增强
multioutput.RegressorChain
现在支持在fit
过程中为base_estimator
提供fit_params
。 #16111 由 Venkatachalam N 完成。
sklearn.naive_bayes
#
修复
naive_bayes.CategoricalNB
在predict
和fit
中输入特征数量不同的情况下,现在会显示格式正确的错误消息。 #16090 由 Madhura Jayaratne 完成。
sklearn.neural_network
#
效率提升 使用随机求解器
'sgd'
或'adam'
以及shuffle=True
时,neural_network.MLPClassifier
和neural_network.MLPRegressor
的内存占用减少了。 #14075 由 @meyer89 完成。修复 通过裁剪概率,提高了
neural_network.MLPClassifier
中逻辑损失函数的数值稳定性。 #16117 由 Thomas Fan 完成。
sklearn.inspection
#
增强
inspection.PartialDependenceDisplay
现在将分位数线作为属性公开,以便可以隐藏或自定义它们。 #15785 由 Nicolas Hug 完成。
sklearn.preprocessing
#
新增功能
preprocessing.OneHotEncoder
的drop
参数现在可以接受值 'if_binary',并将每个只有两个类别的特征的第一类别删除。 #16245 由 Rushabh Vasani 完成。增强
preprocessing.OneHotEncoder
的drop_idx_
数组现在可以包含None
,其中drop_idx_[i] = None
表示索引i
没有删除任何类别。 #16585 由 Chiara Marmo 完成。增强
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
、preprocessing.RobustScaler
现在支持 pandas 的可空整数数据类型以及缺失值。#16508 由 Thomas Fan 完成。效率提升
preprocessing.OneHotEncoder
的转换速度现在更快了。#15762 由 Thomas Fan 完成。修复 修复了
preprocessing.StandardScaler
中的一个错误,该错误在对稀疏输入调用partial_fit
时会错误地计算统计数据。#16466 由 Guillaume Lemaitre 完成。修复 修复了
preprocessing.Normalizer
(norm='max') 中的一个错误,该错误在对向量进行归一化之前没有取最大值的绝对值。#16632 由 Maura Pintor 和 Battista Biggio 完成。
sklearn.semi_supervised
#
修复
semi_supervised.LabelSpreading
和semi_supervised.LabelPropagation
在规范化label_distributions_
时避免了除零警告。#15946 由 @ngshya 完成。
sklearn.svm
#
修复 效率提升 提升了
libsvm
和liblinear
中用于在坐标下降算法中随机选择坐标的随机数生成器。之前使用的是依赖于平台的 Crand()
,它在 Windows 平台上只能生成高达32767
的数字(参见这篇 博文),并且正如 此演示文稿 所建议的那样,其随机化能力较差。现在已将其替换为 C++11mt19937
,这是一种梅森旋转算法,可在所有平台上正确生成 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é 完成。修复 修复了在
svm.SVC
和svm.SVR
中使用自定义核函数时无法处理浮点型输入(例如字符串核函数)的问题。请注意,现在自定义核函数需要自行验证其输入,而之前则会直接接收有效的数值型数组。 #11296 由 Alexandre Gramfort 和 Georgi Peev 贡献。API 变更
svm.SVR
和svm.OneClassSVM
的属性probA_
和probB_
现已弃用,因为它们不再有用。 #15558 由 Thomas Fan 贡献。
sklearn.tree
#
修复
tree.plot_tree
的rotate
参数未被使用,现已弃用。 #15806 由 Chiara Marmo 贡献。修复 修复了
tree.DecisionTreeClassifier
、tree.ExtraTreeClassifier
和ensemble.GradientBoostingClassifier
的predict
、decision_path
和predict_proba
方法,以及tree.DecisionTreeRegressor
、tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
的predict
方法对只读 float32 数组输入的支持问题。 #16331 由 Alexandre Batisse 贡献。
sklearn.utils
#
主要特性 现在可以使用富 HTML 表示形式显示估计器。这可以通过在 Jupyter notebook 中设置
set_config
中的display='diagram'
来启用。可以使用utils.estimator_html_repr
返回原始 HTML。 #14180 由 Thomas Fan 贡献。增强 改进了
utils.validation.column_or_1d
的错误消息。 #15926 由 Loïc Estève 贡献。增强 在
utils.check_array
中添加了针对 pandas 稀疏 DataFrame 的警告。 #16021 由 Rushabh Vasani 贡献。增强
utils.check_array
现在可以从只包含SparseArray
列的 pandas DataFrame 中构建稀疏矩阵。 #16728 由 Thomas Fan 贡献。增强 当
force_all_finite
设置为False
或'allow-nan'
时,utils.check_array
现在支持包含缺失值的 pandas 可空整数数据类型,在这种情况下,数据将转换为浮点型值,其中pd.NA
值将被替换为np.nan
。因此,所有接受缺失值(用np.nan
表示)的数值型输入的sklearn.preprocessing
变换器现在也接受直接输入使用pd.NA
作为缺失值标记的pd.Int* 或 `pd.Uint*
类型列的 pandas DataFrame。 #16508 由 Thomas Fan 贡献。API变更 向
utils.estimator_checks.check_estimator
和utils.estimator_checks.parametrize_with_checks
传递类现在已弃用,并且将在 0.24 版中移除对类的支持。请改用实例。 #17032 由 Nicolas Hug 提供。API变更
utils.estimator_checks
中的私有实用程序_safe_tags
已被移除,因此所有标签都应通过estimator._get_tags()
获取。请注意,对于_get_tags()
正确工作,像RegressorMixin
这样的 Mixin 必须在 MRO 中位于基类*之前*。 #16950 由 Nicolas Hug 提供。修复
utils.all_estimators
现在只返回公共估计器。 #15380 由 Thomas Fan 提供。
其他#
主要功能 添加了估计器的 HTML 表示形式,可在 Jupyter Notebook 或 Lab 中显示。此可视化功能通过在
sklearn.set_config
中设置display
选项来激活。 #14180 由 Thomas Fan 提供。增强
scikit-learn
现在可以与mypy
一起使用,且无错误。 #16726 由 Roman Yurchak 提供。API变更 大多数估计器现在都公开了一个
n_features_in_
属性。此属性等于传递给fit
方法的特征数量。有关详细信息,请参阅 SLEP010。 #16112 由 Nicolas Hug 提供。API变更 估计器现在具有
requires_y
标签,默认为 False,但继承自~sklearn.base.RegressorMixin
或~sklearn.base.ClassifierMixin
的估计器除外。此标签用于确保在预期 y 但传递 None 时引发正确的错误消息。 #16622 由 Nicolas Hug 提供。API变更 默认设置
print_changed_only
已从 False 更改为 True。这意味着估计器的repr
现在更加简洁,在打印估计器时仅显示其默认值已更改的参数。您可以使用sklearn.set_config(print_changed_only=False)
还原之前的行为。此外,请注意,始终可以使用est.get_params(deep=False)
快速检查任何估计器的参数。 #17061 由 Nicolas Hug 提供。
代码和文档贡献者
感谢自 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