版本 0.23#
有关此版本主要亮点的简要说明,请参阅scikit-learn 0.23 版本亮点。
更新日志图例
Major Feature 以前无法实现的重要功能。
Feature 以前无法实现的功能。
Efficiency 现有功能现在可能不再需要大量计算或内存。
Enhancement 杂项小改进。
Fix 以前未按文档说明或合理预期工作的功能现在应该可以工作了。
API Change 未来您需要更改代码才能达到相同的效果;或者未来某个功能将被移除。
版本 0.23.2#
更改的模型#
以下估计器和函数,在使用相同数据和参数拟合时,可能会产生与之前版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机抽样过程发生变化。
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
中的一个错误,当数组 dtype 为 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 当
X_copy=True
和Gram='auto'
时,linear_model.lars_path
不会覆盖X
。 #17914 由 Thomas Fan 修复。
sklearn.manifold
#
Fix 修复了
metrics.pairwise_distances
中的一个错误,当metric='seuclidean'
且X
类型不是np.float64
时,该错误会引发错误。 #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 修复了第三方估计器
repr
中的一个错误,这些估计器在其构造函数中使用**kwargs
参数,当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。
更改的模型#
以下估计器和函数,在使用相同数据和参数拟合时,可能会产生与之前版本不同的模型。这通常是由于建模逻辑(bug 修复或增强)或随机抽样过程发生变化。
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 dtype 输入。API Change
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
Fix 修复了
estimator_samples_
在ensemble.BaggingClassifier
、ensemble.BaggingRegressor
和ensemble.IsolationForest
中的问题。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
以及tree.DecisionTreeRegressor
、tree.ExtraTreeRegressor
和ensemble.GradientBoostingRegressor
的predict
方法以及predict
、decision_path
和predict_proba
中的只读 float32 输入问题。
详细信息列在下面的更新日志中。
(尽管我们努力通过提供此信息更好地通知用户,但我们无法保证此列表是完整的。)
更新日志#
sklearn.cluster
#
Efficiency
cluster.Birch
的 predict 方法实现通过使用分块方案计算距离矩阵,避免了高内存占用。 #16149 由 Jeremie du Boisberranger 和 Alex Shacked 修复。Efficiency Major Feature
cluster.KMeans
的关键部分具有更优化的实现。并行化现在是针对数据而不是初始化进行的,从而实现了更好的可伸缩性。 #11950 由 Jeremie du Boisberranger 修复。Enhancement 当
solver = "elkan"
时,cluster.KMeans
现在支持稀疏数据。 #11950 由 Jeremie du Boisberranger 修复。Enhancement
cluster.AgglomerativeClustering
具有更快且更节省内存的单链接聚类实现。 #11514 由 Leland McInnes 修复。Fix 修复了
cluster.KMeans
在algorithm="elkan"
时的错误,现在它与默认的algorithm="full"
一样在tol=0
时收敛。 #16075 由 Erich Schubert 修复。Fix 修复了
cluster.Birch
中的一个错误,其中n_clusters
参数不能具有np.int64
类型。 #16484 由 Jeremie du Boisberranger 修复。Fix 当距离矩阵不是方阵且
affinity=precomputed
时,cluster.AgglomerativeClustering
添加了特定错误。 #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 已将
random_state
参数添加到cluster.AffinityPropagation
。 #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
现在通过设置as_frame=True
支持使用 pandas 的异构数据。 #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
StreamHandler
已从sklearn.logger
中移除,以避免在处理器附加到根记录器时的常见情况下的重复日志记录,并遵循 Python 日志记录文档中关于库将日志消息处理留给用户和应用程序代码的建议。 #16451 由 Christoph Deil 修复。
sklearn.decomposition
#
Enhancement
decomposition.NMF
和decomposition.non_negative_factorization
现在保留 float32 dtype。 #16280 由 Jeremie du Boisberranger 修复。Enhancement
decomposition.TruncatedSVD.transform
现在在给定的稀疏csc
矩阵上运行更快。 #16837 由 @wornbb 修复。Fix
decomposition.PCA
带有浮点n_components
参数时,将只选择解释方差大于n_components
的分量。 #15669 由 Krishna Chaitanya 修复Fix
decomposition.PCA
与n_components='mle'
现在正确处理小特征值,并且不会推断 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
的错误。 #16718 由 Gui Miotto 修复。Feature 已将
n_components_
属性添加到decomposition.SparsePCA
和decomposition.MiniBatchSparsePCA
。 #16981 由 Mateusz Górski 修复。
sklearn.ensemble
#
Major Feature
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
现在支持 sample_weight。 #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
中的一个错误,该错误在warm_start=True
、early_stopping=True
且没有验证集时,多次调用 fit 会失败。 #16183 由 Nicolas Hug 修复。Fix 更改了
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
的max_depth
参数的约定。现在,深度对应于从根到最深叶子的边数。现在允许使用桩(stump,即只有一个分割的树)。 #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 修复了
ensemble.HistGradientBoostingRegressor
和ensemble.HistGradientBoostingClassifier
中的一个错误,当warm_start=True
、early_stopping=True
且没有验证集时,多次调用 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 当
nu=np.inf
时,gaussian_process.kernels.Matern
返回 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 可空整数 dtype。 #16508 由 Thomas Fan 修复。
sklearn.inspection
#
Feature
inspection.partial_dependence
和inspection.plot_partial_dependence
现在支持ensemble.RandomForestRegressor
和tree.DecisionTreeRegressor
的快速“递归”方法。 #15864 由 Nicolas Hug 修复。
sklearn.linear_model
#
Major Feature 添加了具有非正态误差分布的广义线性模型 (GLM),包括
linear_model.PoissonRegressor
、linear_model.GammaRegressor
和linear_model.TweedieRegressor
,它们分别使用泊松、伽马和 Tweedie 分布。 #14300 由 Christian Lorentzen、Roman Yurchak 和 Olivier Grisel 修复。Major Feature 在
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 修复。修复 修复了一个bug,该bug会导致如果将
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 贡献。修复
linear_model.LogisticRegression
现在在solver='newton-cg'
时,通过在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 贡献。修复 效率
linear_model.ARDRegression
在n_samples > n_features
时更稳定,速度也快得多。它现在可以扩展到数十万个样本。稳定性修复可能会导致非零系数数量和预测输出的变化。 #16849 由 Nicolas Hug 贡献。修复 修复了
linear_model.ElasticNetCV
、linear_model.MultiTaskElasticNetCV
、linear_model.LassoCV
和linear_model.MultiTaskLassoCV
中的一个错误,该错误导致在使用 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
中的一个错误,该错误导致在multioutput='raw_values'
参数设置时会忽略squared
参数。 #16323 由 Rushabh Vasani 贡献修复 修复了
metrics.mutual_info_score
中的一个错误,该错误可能返回负分数。 #16362 由 Thomas Fan 贡献。修复 修复了
metrics.confusion_matrix
中的一个错误,该错误导致当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 版本开始,如果传入
Y
,metrics.pairwise_distances
将不再自动计算马哈拉诺比斯距离的VI
参数和欧氏距离的V
参数。用户需要自行在所选的训练数据上计算此参数并将其传递给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
#
修复 当
predict
和fit
输入的特征数量不同时,naive_bayes.CategoricalNB
会显示格式正确的错误消息。 #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_
ndarray 现在可以包含None
,其中drop_idx_[i] = None
意味着索引i
没有类别被删除。 #16585 由 Chiara Marmo 贡献。增强
preprocessing.MaxAbsScaler
、preprocessing.MinMaxScaler
、preprocessing.StandardScaler
、preprocessing.PowerTransformer
、preprocessing.QuantileTransformer
、preprocessing.RobustScaler
现在支持带缺失值的 pandas 可空整数 dtype。 #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
替换,这是一个 Mersenne Twister,可在所有平台上正确生成 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 贡献。增强
utils.check_array
支持带缺失值的 pandas 可空整数 dtype,当force_all_finite
设置为False
或'allow-nan'
时,数据将转换为浮点值,其中pd.NA
值被np.nan
替换。因此,所有接受以np.nan
表示缺失值的数字输入值的sklearn.preprocessing
转换器现在也接受直接馈送包含以pd.NA
作为缺失值标记的pd.Int* or `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()
获取。请注意,像RegressorMixin
这样的 Mixin 必须在 MRO 中位于基类之前,以便_get_tags()
正常工作。 #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