版本0.21#
换象传说
Major Feature 一些你以前做不到的大事。
Feature 一些你以前做不到的事情。
Efficiency 现有功能现在可能不需要那么多的计算或内存。
Enhancement 一个杂七杂八的小改进。
Fix 以前没有按照记录或合理预期发挥作用的事情现在应该起作用了。
API Change 您需要更改您的代码才能在将来产生相同的效果;或者将来将删除某个功能。
版本0.21.3#
July 30, 2019
更改型号#
以下估计量和函数在与相同的数据和参数进行匹配时,可能会产生与之前版本不同的模型。这种情况通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
v0.20.0发布说明未能提及中的向后不兼容
metrics.make_scorer
当needs_proba=True
和y_true
是二进制的。现在,记分器功能应该接受1Dy_pred
(i.e.,正类概率、形状(n_samples,)
),而不是2Dy_pred
(i.e.,形状(n_samples, 2)
).
Changelog#
sklearn.cluster
#
Fix 修复了中的一个错误
cluster.KMeans
其中计算init='random'
是单线程的n_jobs > 1
或n_jobs = -1
. #12955 通过 Prabakaran Kumaresshan .Fix 修复了中的一个错误
cluster.OPTICS
用户无法通过浮动min_samples
和min_cluster_size
. #14496 通过 Fabian Klopfer 和 Hanmin Qin .Fix 修复了中的一个错误
cluster.KMeans
其中KMeans++初始化很少会导致Index错误。 #11756 通过 Joel Nothman .
sklearn.compose
#
Fix 修复了中的一个问题
compose.ColumnTransformer
其中使用列顺序不同的数据框架fit
和transform
可能会导致将错误的列悄悄传递到remainder
Transformer。 #14237 通过Andreas Schuderer <schuderer>
.
sklearn.datasets
#
Fix
datasets.fetch_california_housing
,datasets.fetch_covtype
,datasets.fetch_kddcup99
,datasets.fetch_olivetti_faces
,datasets.fetch_rcv1
,而且datasets.fetch_species_distributions
尝试使用新的保存以前的缓存joblib
如果缓存的数据是使用已弃用的sklearn.externals.joblib
.此行为设置为在v0.23中不建议使用并删除。 #14197 通过 Adrin Jalali .
sklearn.ensemble
#
Fix 修复零除错误
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
. #14024 通过Nicolas Hug <NicolasHug>
.
sklearn.impute
#
Fix 修复了中的一个错误
impute.SimpleImputer
和impute.IterativeImputer
以便当训练数据中存在缺失值时不会抛出错误。 #13974 通过Frank Hoang <fhoang7>
.
sklearn.inspection
#
Fix 修复了中的一个错误
inspection.plot_partial_dependence
哪里target
多类问题没有考虑参数。 #14393 通过 Guillem G. Subies .
sklearn.linear_model
#
Fix 修复了中的一个错误
linear_model.LogisticRegressionCV
哪里refit=False
会失败取决于'multiclass'
和'penalty'
参数(0.21中引入的回归)。 #14087 通过 Nicolas Hug .Fix Compatibility fix for
linear_model.ARDRegression
and Scipy>=1.3.0. Adapts to upstream changes to the defaultpinvh
cutoff threshold which otherwise results in poor accuracy in some cases. #14067 by Tim Staley.
sklearn.neighbors
#
Fix 修复了中的一个错误
neighbors.NeighborhoodComponentsAnalysis
其中初始参数的验证n_components
,max_iter
和tol
对类型要求太严格了。 #14092 通过 Jérémie du Boisberranger .
sklearn.tree
#
Fix 修复了
tree.export_text
当树有一个特征并且传递一个特征名称时。 #14053 通过Thomas Fan
.Fix 修复了一个问题
tree.plot_tree
其中它显示了即使gini
DecisionTreeClassifiers中的标准。 #13947 通过 Frank Hoang .
版本0.21.2#
24 May 2019
Changelog#
sklearn.decomposition
#
Fix 修复了中的一个错误
cross_decomposition.CCA
提高数字稳定性时Y
is close to zero. #13903 by Thomas Fan .
sklearn.metrics
#
Fix 修复了中的一个错误
metrics.pairwise.euclidean_distances
其中距离矩阵的一部分对于足够大的float 32数据集未实例化(0.21中引入了回归)。 #13910 通过 Jérémie du Boisberranger .
sklearn.preprocessing
#
Fix 修复了中的一个错误
preprocessing.OneHotEncoder
其中新drop
参数未反映在get_feature_names
. #13894 通过 James Myatt .
sklearn.utils.sparsefuncs
#
Fix 修复了一个错误,
min_max_axis
对于某些大输入,在32位系统上会失败。这影响preprocessing.MaxAbsScaler
,preprocessing.normalize
和preprocessing.LabelBinarizer
. #13741 通过 Roddy MacSween .
版本0.21.1#
17 May 2019
这是一个错误修复版本,主要解决0.21.0版本中的一些包装问题。它还包括小的文档改进和一些错误修复。
Changelog#
sklearn.inspection
#
Fix 修复了中的一个错误
inspection.partial_dependence
只检查分类器而不检查多类多输出情况下的回归器。 #14309 通过 Guillaume Lemaitre .
sklearn.metrics
#
Fix 修复了中的一个错误
metrics.pairwise_distances
它将在哪里筹集AttributeError
对于布尔指标,X
有布尔d类型,Y == None
. #13864 通过 Paresh Mathur .Fix 修复了中的两个错误
metrics.pairwise_distances
当n_jobs > 1
.首先,它用于返回具有与输入相同d类型的距离矩阵,即使对于integer d类型。那么当欧几里得度量的对角线不是零时Y
是X
. #13877 通过 Jérémie du Boisberranger .
sklearn.neighbors
#
Fix 修复了中的一个错误
neighbors.KernelDensity
如果不能从泡菜中恢复过来sample_weight
被利用了。 #13772 通过 Aditya Vyas .
版本0.21.0#
May 2019
更改型号#
以下估计量和函数在与相同的数据和参数进行匹配时,可能会产生与之前版本不同的模型。这种情况通常是由于建模逻辑(错误修复或增强)或随机抽样过程的变化而发生的。
discriminant_analysis.LinearDiscriminantAnalysis
用于多类分类。 Fixdiscriminant_analysis.LinearDiscriminantAnalysis
使用“eigen”求解器。 Fix当决策树和衍生集合两者都是
max_depth
和max_leaf_nodes
都准备好了 Fixlinear_model.LogisticRegression
和linear_model.LogisticRegressionCV
使用“传奇”解决方案。 Fixsklearn.feature_extraction.text.HashingVectorizer
,sklearn.feature_extraction.text.TfidfVectorizer
, andsklearn.feature_extraction.text.CountVectorizer
Fixsvm.SVC.decision_function
和multiclass.OneVsOneClassifier.decision_function
. Fixlinear_model.SGDClassifier
以及任何衍生分类器。 Fix任何使用
linear_model._sag.sag_solver
函数与0
种子,包括linear_model.LogisticRegression
,linear_model.LogisticRegressionCV
,linear_model.Ridge
,而且linear_model.RidgeCV
使用“sag”求解器。 Fixlinear_model.RidgeCV
当使用具有稀疏输入的留一交叉验证时。 Fix
详细信息见下面的变更日志。
(虽然我们试图通过提供这些信息来更好地告知用户,但我们不能保证此列表是完整的。
已知的主要bug#
默认
max_iter
为linear_model.LogisticRegression
给定默认情况下,对于许多求解器来说太小了tol
.特别是,我们不小心更改了默认值max_iter
对于Liblinear求解器来说,1000到100次迭代 #3591 发布于0.16版本。在未来的版本中,我们希望选择更好的默认max_iter
和tol
具体取决于求解器(请参阅 #13317 ).
Changelog#
对Python 3.4及以下版本的支持已正式放弃。
sklearn.base
#
API Change 调用时使用的R2得分
score
将使用multioutput='uniform_average'
从0.23版本开始以保持一致metrics.r2_score
.这将影响score
所有多输出回归器的方法(除了multioutput.MultiOutputRegressor
). #13157 通过 Hanmin Qin .
sklearn.calibration
#
Enhancement 添加了对传递的数据进行分类的支持
calibration.calibration_curve
按分位数计算,而不是均匀地介于0和1之间。 #13086 通过 Scott Cole .Enhancement 允许n维数组作为
calibration.CalibratedClassifierCV
. #13485 通过 William de Vazelhes .
sklearn.cluster
#
Major Feature 一种新的集群算法:
cluster.OPTICS
:与之相关的算法cluster.DBSCAN
,具有更容易设置的超参数并且扩展性更好, Shane , Adrin Jalali , Erich Schubert , Hanmin Qin ,而且 Assia Benbihi .Fix 修复了一个错误,
cluster.Birch
偶尔会引发AttribeHelp。 #13651 通过 Joel Nothman .Fix 修复了中的一个错误
cluster.KMeans
其中使用样本权重时未正确重新定位空簇。 #13486 通过 Jérémie du Boisberranger .API Change 的
n_components_
中属性cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
已重命名为n_connected_components_
. #13427 通过 Stephane Couvreur .Enhancement
cluster.AgglomerativeClustering
和cluster.FeatureAgglomeration
现在接受distance_threshold
参数,可用于查找集群,而不是n_clusters
. #9069 通过 Vathsala Achar 和 Adrin Jalali .
sklearn.compose
#
API Change
compose.ColumnTransformer
不再是一个实验性的功能。 #13835 通过 Hanmin Qin .
sklearn.datasets
#
Fix 添加了对SVMLight文件中64位组ID和指针的支持。 #10727 通过 Bryan K Woods .
Fix
datasets.load_sample_images
返回具有确定性顺序的图像。 #13250 通过 Thomas Fan .
sklearn.decomposition
#
Enhancement
decomposition.KernelPCA
现在具有确定性输出(解决了核矩阵的特征值分解中的符号模糊性)。 #13241 通过 Aurélien Bellet .Fix 修复了中的一个错误
decomposition.KernelPCA
,fit().transform()
现在产生正确的输出(与fit_transform()
)如果未删除零特征值 (remove_zero_eig=False
).fit_inverse_transform
也通过使用相同的技巧来加速fit_transform
来计算X
. #12143 通过 Sylvain MariéFix 修复了中的一个错误
decomposition.NMF
哪里init = 'nndsvd'
,init = 'nndsvda'
,而且init = 'nndsvdar'
当n_components < n_features
而不是n_components <= min(n_samples, n_features)
. #11650 通过 Hossein Pourbozorg 和 Zijie (ZJ) Poh .API Change 的默认值
init
论点decomposition.non_negative_factorization
将从random
到None
在0.23版本中,使其与decomposition.NMF
.使用默认值时会引发FutureWarning。 #12988 通过 Zijie (ZJ) Poh .
sklearn.discriminant_analysis
#
Enhancement
discriminant_analysis.LinearDiscriminantAnalysis
现在保存float32
和float64
d类型。 #8769 和 #11000 通过 Thibault SejourneFix A
ChangedBehaviourWarning
现在提出时discriminant_analysis.LinearDiscriminantAnalysis
作为参数给出n_components > min(n_features, n_classes - 1)
,而且n_components
被改变为min(n_features, n_classes - 1)
如果是的话。此前,改变是悄无声息地做出的。 #11526 通过 William de Vazelhes .Fix 修复了中的一个错误
discriminant_analysis.LinearDiscriminantAnalysis
其中在多类情况下预测概率将被错误计算。 #6848 ,由 Agamemnon Krasoulis 和Guillaume Lemaitre <glemaitre>
.Fix 修复了中的一个错误
discriminant_analysis.LinearDiscriminantAnalysis
其中预测概率将被错误地计算eigen
解决者。 #11727 ,由 Agamemnon Krasoulis .
sklearn.dummy
#
Fix 修复了中的一个错误
dummy.DummyClassifier
其中predict_proba
方法返回int32数组而不是float 64stratified
战略 #13266 通过 Christos Aridas .Fix 修复了中的一个错误
dummy.DummyClassifier
如果列载体,则会在预测时间中引发维度不匹配错误y
与shape=(n, 1)
静脉注射fit
时间 #13545 通过 Nick Sorros 和 Adrin Jalali .
sklearn.ensemble
#
Major Feature 添加两个新的梯度增强树实现:
ensemble.HistGradientBoostingClassifier
和ensemble.HistGradientBoostingRegressor
.这些估计器的实施灵感来自 LightGBM 并且可以比ensemble.GradientBoostingRegressor
和ensemble.GradientBoostingClassifier
当样本数量大于数万个样本时。这些新估计器的API略有不同,并且来自ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
还不支持。这些新的估计器是实验性的,这意味着它们的结果或API可能会在没有任何废弃周期的情况下发生变化。要使用它们,您需要显式导入
enable_hist_gradient_boosting
>>> # explicitly require this experimental feature >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # now you can import normally from sklearn.ensemble >>> from sklearn.ensemble import HistGradientBoostingClassifier
备注
更新:自1.0版本以来,这些估计器不再是实验性的,您不需要使用
from sklearn.experimental import enable_hist_gradient_boosting
.#12807 通过 Nicolas Hug .
Feature 添加
ensemble.VotingRegressor
它提供了相当于ensemble.VotingClassifier
回归问题。 #12513 通过 Ramil Nugmanov 和 Mohamed Ali Jamaoui .Efficiency 使
ensemble.IsolationForest
运行时,更喜欢线程而不是进程n_jobs > 1
因为底层决策树匹配调用确实释放了GIL。此更改减少了内存使用和通信负担。 #12543 通过 Isaac Storch 和 Olivier Grisel .Efficiency 使
ensemble.IsolationForest
通过避免将每个树预测保存在内存中,从而提高内存效率。 #13260 通过 Nicolas Goix .Efficiency
ensemble.IsolationForest
现在在预测步骤使用数据块,从而限制了内存使用。 #13283 通过 Nicolas Goix .Efficiency
sklearn.ensemble.GradientBoostingClassifier
和sklearn.ensemble.GradientBoostingRegressor
现在保留输入y
作为float64
以避免它被树木内部复制。 #13524 通过 Adrin Jalali .Enhancement 最大限度地减少了X的验证
ensemble.AdaBoostClassifier
和ensemble.AdaBoostRegressor
#13174 通过 Christos Aridas .Enhancement
ensemble.IsolationForest
现在暴露了warm_start
参数,允许向隔离森林迭代添加树木。 #13496 通过 Peter Marko .Fix 的值
feature_importances_
在所有基于随机森林的模型中(即ensemble.RandomForestClassifier
,ensemble.RandomForestRegressor
,ensemble.ExtraTreesClassifier
,ensemble.ExtraTreesRegressor
,ensemble.RandomTreesEmbedding
,ensemble.GradientBoostingClassifier
,而且ensemble.GradientBoostingRegressor
)现在:总计为
1
忽略特征重要性计算中的所有单节点树
如果所有树都只有一个单个节点(即根节点),则特征重要性将是全零的数组。
#13636 和 #13620 通过 Adrin Jalali .
Fix 修复了中的一个错误
ensemble.GradientBoostingClassifier
和ensemble.GradientBoostingRegressor
,它不支持scikit-learn估计器作为初始估计器。还添加了对不支持样本权重的初始估计器的支持。 #12436 通过 Jérémie du Boisberranger 和 #12983 通过 Nicolas Hug .Fix 修复了中计算的平均路径长度的输出
ensemble.IsolationForest
当输入为0、1或2时。 #13251 通过 Albert Thomas 和 joshuakennethjones .Fix 修复了中的一个错误
ensemble.GradientBoostingClassifier
其中在多类分类问题中,梯度会被错误地计算。 #12715 通过 Nicolas Hug .Fix 修复了中的一个错误
ensemble.GradientBoostingClassifier
其中提前停止的验证集没有进行分层抽样。 #13164 通过 Nicolas Hug .Fix 修复了中的一个错误
ensemble.GradientBoostingClassifier
其中多类分类器的默认初始预测将预测类别的先验,而不是先验的日志。 #12983 通过 Nicolas Hug .Fix 修复了中的一个错误
ensemble.RandomForestClassifier
其中predict
如果任何目标都是字符串,那么多类多输出森林模型的方法就会出错。 #12834 通过 Elizabeth Sander .Fix 修复了中的一个错误
ensemble.gradient_boosting.LossFunction
和ensemble.gradient_boosting.LeastSquaresError
其中的默认值learning_rate
在update_terminal_regions
与文档和调用者功能不一致。但请注意,不建议直接使用这些损失函数。 #6463 通过 movelikeriver .Fix
ensemble.partial_dependence
(and因此,新版本sklearn.inspection.partial_dependence
)现在,当梯度增强模型已经用样本权重训练时,在部分依赖性计算中考虑样本权重。 #13193 通过 Samuel O. Ronsin .API Change
ensemble.partial_dependence
和ensemble.plot_partial_dependence
现在已被放弃支持inspection.partial_dependence
和inspection.plot_partial_dependence<sklearn.inspection.plot_partial_dependence>
. #12599 通过 Trevor Stephens 和 Nicolas Hug .Fix
ensemble.VotingClassifier
和ensemble.VotingRegressor
期间失败了fit
其中一个估计器被设置为None
和sample_weight
不是None
. #13779 通过 Guillaume Lemaitre .API Change
ensemble.VotingClassifier
和ensemble.VotingRegressor
接受'drop'
除了禁用估计器None
与其他估计量一致(即,pipeline.FeatureUnion
和compose.ColumnTransformer
). #13780 通过 Guillaume Lemaitre .
sklearn.externals
#
API Change 弃用
externals.six
因为我们已经放弃了对Python 2.7的支持。 #12916 通过 Hanmin Qin .
sklearn.feature_extraction
#
Fix 如果
input='file'
或input='filename'
,并给出一个可调用内容作为analyzer
,sklearn.feature_extraction.text.HashingVectorizer
,sklearn.feature_extraction.text.TfidfVectorizer
,而且sklearn.feature_extraction.text.CountVectorizer
现在从文件中读取数据,然后将其传递给给定的analyzer
,而不是将文件名或文件对象传递给分析器。 #13641 通过 Adrin Jalali .
sklearn.impute
#
Major Feature 添加
impute.IterativeImputer
,这是一种通过以循环方式将具有缺失值的每个特征建模为其他特征的函数来估算缺失值的策略。 #8478 和 #12177 通过 Sergey Feldman 和 Ben Lawson .IterativeImputer的API是实验性的,可以随时更改,无需任何弃用周期。要使用它们,您需要显式导入
enable_iterative_imputer
>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # now you can import normally from sklearn.impute >>> from sklearn.impute import IterativeImputer
Feature 的
impute.SimpleImputer
和impute.IterativeImputer
有一个新参数'add_indicator'
,它只是堆叠一个impute.MissingIndicator
转换为输入者的转换的输出。这允许预测估计器考虑缺失。 #12583 , #13601 通过 Danylo Baibak .Fix 在
impute.MissingIndicator
如果输入稀疏,则通过引发异常来避免隐式加密missing_values
属性设置为0。 #13240 通过 Bartosz Telenczuk .Fix Fixed two bugs in
impute.MissingIndicator
. First, whenX
is sparse, all the non-zero non missing values used to become explicit False in the transformed data. Then, whenfeatures='missing-only'
, all features used to be kept if there were no missing values at all. #13562 by Jérémie du Boisberranger.
sklearn.inspection
#
(new分包)
Feature 部分依赖图表 (
inspection.plot_partial_dependence
)现在支持任何回归量或分类器(前提是它们具有predict_proba
方法)。 #12599 通过 Trevor Stephens 和 Nicolas Hug .
sklearn.isotonic
#
Feature 允许不同的数据类型(例如float 32)
isotonic.IsotonicRegression
. #8769 通过 Vlad Niculae
sklearn.linear_model
#
Enhancement
linear_model.Ridge
现在保存float32
和float64
d类型。 #8769 和 #11000 通过 Guillaume Lemaitre ,而且 Joan MassichFeature
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
现在支持Elastic-Net惩罚,并使用“传奇”求解器。 #11646 通过 Nicolas Hug .Feature 添加
linear_model.lars_path_gram
,这是linear_model.lars_path
在充足的统计数据模式下,允许用户计算linear_model.lars_path
而不提供X
和y
. #11699 通过 Kuai Yu .Efficiency
linear_model.make_dataset
now preservesfloat32
andfloat64
dtypes, reducing memory consumption in stochastic gradient, SAG and SAGA solvers. #8769 and #11000 by Nelle Varoquaux, Arthur Imbert, Guillaume Lemaitre, and Joan MassichEnhancement
linear_model.LogisticRegression
现在支持非正则化目标,penalty='none'
已通过。这相当于设置C=np.inf
具有l2正规化。Liblinear解算器不支持。 #12860 通过 Nicolas Hug .Enhancement
sparse_cg
求解器linear_model.Ridge
现在支持匹配拦截(即fit_intercept=True
)当输入稀疏时。 #13336 通过 Bartosz Telenczuk .Enhancement 使用的坐标下降解算器
Lasso
,ElasticNet
等现在发行一个ConvergenceWarning
当它完成但未达到所需的公差时。 #11754 和 #13397 通过 Brent Fagan 和 Adrin Jalali .Fix 修复了中的一个错误
linear_model.LogisticRegression
和linear_model.LogisticRegressionCV
使用“saga”解算器,在某些情况下权重不会正确更新。 #11646 通过 Tom Dupre la Tour .Fix 修复后验均值、后验协方差和返回的正则化参数,
linear_model.BayesianRidge
.后验平均值和后验协方差不是用最后更新的正规化参数计算的,并且返回的正规化参数也不是最终的参数。还修复了用于计算分数的log边缘似然公式,当compute_score=True
. #12174 通过 Albert Thomas .Fix 修复了中的一个错误
linear_model.LassoLarsIC
,其中用户输入copy_X=False
实例创建将被默认参数值覆盖copy_X=True
在fit
. #12972 通过 Lucio Fernandez-ArjonaFix 修复了中的一个错误
linear_model.LinearRegression
这没有返回相同的系数和拦截fit_intercept=True
在稀疏和密集的情况下。 #13279 通过 Alexandre GramfortFix 修复了中的一个错误
linear_model.HuberRegressor
当它被打破时X
属于d类型布尔。 #13328 通过 Alexandre Gramfort .Fix Fixed a performance issue of
saga
andsag
solvers when called in ajoblib.Parallel
setting withn_jobs > 1
andbackend="threading"
, causing them to perform worse than in the sequential case. #13389 by Pierre Glaser.Fix 修复了中的一个错误
linear_model.stochastic_gradient.BaseSGDClassifier
当在多个线程的多类设置中训练时,这不是确定性的。 #13422 通过 Clément Doumouro .Fix 修复了
linear_model.ridge_regression
,linear_model.Ridge
和linear_model.RidgeClassifier
导致争论未处理的异常return_intercept=True
和solver=auto
(默认)或任何其他与sag
. #13363 通过 Bartosz TelenczukFix
linear_model.ridge_regression
如果return_intercept=True
而求解器与sag
.此前,只发布了警告。 #13363 通过 Bartosz TelenczukFix
linear_model.ridge_regression
会选择sparse_cg
稀疏输入的求解器solver=auto
和sample_weight
已提供(以前cholesky
选择了求解器)。 #13363 通过 Bartosz TelenczukAPI Change 使用
linear_model.lars_path
与X=None
同时使Gram
在0.21版本中不建议使用,并将在0.23版本中删除。使用linear_model.lars_path_gram
而不是. #11699 通过 Kuai Yu .API Change
linear_model.logistic_regression_path
在0.21版本中不建议使用,并将在0.23版本中删除。 #12821 通过 Nicolas Hug .Fix
linear_model.RidgeCV
使用留一交叉验证现在可以正确匹配拦截fit_intercept=True
并且设计矩阵是稀疏的。 #13350 通过 Jérôme Dockès
sklearn.manifold
#
Efficiency 使
manifold.trustworthiness
使用倒置索引而不是np.where
查找输入空间中邻居的排名。这特别是在使用大量邻居和/或小数据集进行计算时提高了效率。 #9907 通过 William de Vazelhes .
sklearn.metrics
#
Feature 添加了
metrics.max_error
度量和相应的'max_error'
单输出回归的记分器。 #12232 通过 Krishna Sangeeth .Feature 添加
metrics.multilabel_confusion_matrix
,它计算每个类别的真阳性、假阳性、假阴性和真阴性计数的混淆矩阵。这有助于计算按集指标,例如召回率、特异性、脱落率和未命中率。 #11179 通过 Shangwu Yao 和 Joel Nothman .Feature
metrics.jaccard_score
添加来计算Jaccard系数,作为二进制、多标签和多类任务的评估指标,其界面类似于metrics.f1_score
. #13151 通过 Gaurav Dhingra 和 Joel Nothman .Feature 添加
metrics.pairwise.haversine_distances
可以通过访问metric='pairwise'
throughmetrics.pairwise_distances
and estimators. (Haversine distance was previously available for nearest neighbors calculation.) #12568 by Wei Xue, Emmanuel Arias and Joel Nothman .Efficiency 快
metrics.pairwise_distances
与n_jobs
> 1通过使用基于线程的后台而不是基于流程的后台。 #8216 通过 Pierre Glaser 和 Romuald MenuetEfficiency 稀疏输入的成对曼哈顿距离现在使用scipy附带的BLAS,而不是捆绑的BLAS。 #12732 通过 Jérémie du Boisberranger
Enhancement 使用标签
accuracy
instead ofmicro-average
onmetrics.classification_report
to avoid confusion.micro-average
is only shown for multi-label or multi-class with a subset of classes because it is otherwise identical to accuracy. #12334 by Emmanuel Arias, Joel Nothman 和 Andreas MüllerEnhancement 添加
beta
参数以metrics.homogeneity_completeness_v_measure
和metrics.v_measure_score
配置同质性和完整性之间的权衡。 #13607 通过 Stephane Couvreur and和 Ivan Sanchez .Fix 度量
metrics.r2_score
通过单个样本退化,现在它返回NaN并升高exceptions.UndefinedMetricWarning
. #12855 通过 Pawel Sendyk .Fix 修复了一个错误,
metrics.brier_score_loss
当只有一个类时,有时会返回不正确的结果y_true
. #13628 通过 Hanmin Qin .Fix 修复了中的一个错误
metrics.label_ranking_average_precision_score
其中对于具有退化标签的样本,不考虑sample_weight。 #13447 通过 Dan Ellis .API Change 参数
labels
在metrics.hamming_loss
在0.21版本中不建议使用,并将在0.23版本中删除。 #10580 通过 Reshama Shaikh 和 Sandra Mitrovic .Fix 功能
metrics.pairwise.euclidean_distances
,因此有几个估计器metric='euclidean'
,遇到了数字精度问题,float32
功能.精度的提高是以性能小幅下降为代价的。 #13554 通过 @Celelibi 和 Jérémie du Boisberranger .API Change
metrics.jaccard_similarity_score
is deprecated in favour of the more consistentmetrics.jaccard_score
. The former behavior for binary and multiclass targets is broken. #13151 by Joel Nothman .
sklearn.mixture
#
Fix 修复了中的一个错误
mixture.BaseMixture
因此基于它的估计器,即mixture.GaussianMixture
和mixture.BayesianGaussianMixture
,在哪里fit_predict
和fit.predict
不等效。 #13142 通过 Jérémie du Boisberranger .
sklearn.model_selection
#
Feature 类
GridSearchCV
和RandomizedSearchCV
现在允许refit=callable,以增加识别最佳估计器的灵活性。看到 平衡模型复杂性和交叉验证分数 . #11354 通过 Wenhao Zhang , Joel Nothman 和 Adrin Jalali .Enhancement 类
GridSearchCV
,RandomizedSearchCV
,和方法cross_val_score
,cross_val_predict
,cross_validate
,现在打印火车分数时return_train_scores
真实verbose
> 2.为learning_curve
,而且validation_curve
只需要后者。 #12613 和 #12669 通过 Marc Torrellas .Enhancement 一些 CV splitter 类和
model_selection.train_test_split
现在举起ValueError
当生成的训练集为空时。 #12861 通过 Nicolas Hug .Fix 修复了一个错误,
model_selection.StratifiedKFold
用相同的random_state
,制作shuffle=True
无效。 #13124 通过 Hanmin Qin .Fix 增加了
model_selection.cross_val_predict
处理多标签(和多输出多类)目标predict_proba
- 类型方法。 #8773 通过 Stephen Hoover .Fix 修复了中的一个问题
cross_val_predict
哪里method="predict_proba"
总是回来的0.0
当其中一个类在交叉验证文件夹中被排除时。 #13366 通过 Guillaume Fournier
sklearn.multiclass
#
Fix 修复了中的一个问题
multiclass.OneVsOneClassifier.decision_function
其中,给定样本的decision_函数值不同,具体取决于decision_函数是在单独的样本上评估还是在包含该相同样本的批次上评估的,因为decision_函数中使用的缩放。 #10440 通过 Jonathan Ohayon .
sklearn.multioutput
#
Fix 修复了中的一个错误
multioutput.MultiOutputClassifier
其中predict_proba
方法检查错误predict_proba
估计器对象中的属性。 #12222 通过 Rebekah Kim
sklearn.neighbors
#
Major Feature 添加
neighbors.NeighborhoodComponentsAnalysis
用于度量学习,它实现邻居分量分析算法。 #10058 通过 William de Vazelhes 和 John Chiotellis .API Change 方法
neighbors.NearestNeighbors
:kneighbors
,radius_neighbors
,kneighbors_graph
,radius_neighbors_graph
现在举起NotFittedError
,而不是AttributeError
以前打电话时fit
#12279 通过 Krishna Sangeeth .
sklearn.neural_network
#
Fix 修复了中的一个错误
neural_network.MLPClassifier
和neural_network.MLPRegressor
倘期权shuffle=False
被忽视了。 #12582 通过 Sam Waterbury .Fix 修复了中的一个错误
neural_network.MLPClassifier
其中提前停止的验证集没有进行分层抽样。然而,在多标签的情况下,拆分仍然没有分层。 #13164 通过 Nicolas Hug .
sklearn.pipeline
#
Feature
pipeline.Pipeline
现在可以使用索引符号(例如my_pipeline[0:-1]
)提取步骤子序列作为另一个Pipeline实例。 还可以直接对管道进行索引以提取特定步骤(例如my_pipeline['svc']
),而不是访问named_steps
. #2568 通过 Joel Nothman .Feature 添加可选参数
verbose
在pipeline.Pipeline
,compose.ColumnTransformer
和pipeline.FeatureUnion
和相应make_
显示每个步骤的进度和时间的助手。 #11364 通过 Baze Petrushev , Karan Desai , Joel Nothman ,而且 Thomas Fan .Enhancement
pipeline.Pipeline
现在支持使用'passthrough'
作为Transformer,具有与None
. #11144 通过 Thomas Fan .Enhancement
pipeline.Pipeline
实现__len__
并且因此len(pipeline)
返回管道中的步骤数。 #13439 通过 Lakshya KD .
sklearn.preprocessing
#
Feature
preprocessing.OneHotEncoder
现在支持使用新的删除参数删除每个类别的一个功能。 #12908 通过 Drew Johnston .Efficiency
preprocessing.OneHotEncoder
和preprocessing.OrdinalEncoder
现在更有效地处理pandas DataFrame。 #13253 通过 @maikia .Efficiency 使
preprocessing.MultiLabelBinarizer
缓存类映射,而不是每次动态计算它。 #12116 通过 Ekaterina Krivich 和 Joel Nothman .Efficiency
preprocessing.PolynomialFeatures
现在支持压缩稀疏行(CSR)矩阵作为2度和3度的输入。这通常比密集情况快得多,因为它随着矩阵密度和扩展程度(密度·度的数量级)而缩放,并且比压缩稀疏列(CSC)情况快得多。 #12197 通过 Andrew Nystrom .Efficiency 速度提高
preprocessing.PolynomialFeatures
,在密集的情况下。还添加了新参数order
其控制用于进一步速度性能的输出顺序。 #12251 通过 Tom Dupre la Tour .Fix 修复了使用float 16 dype时的计算溢出
preprocessing.StandardScaler
. #13007 通过 Raffaello BaluyotFix 修复了中的一个错误
preprocessing.QuantileTransformer
和preprocessing.quantile_transform
强制n_分位数最多等于n_samples。大于n_samples的n_分位数的值要么无用,要么导致累积分布函数估计量的错误逼近。 #13333 通过 Albert Thomas .API Change 的默认值
copy
在preprocessing.quantile_transform
0.23中将从False更改为True,以使其与默认值更加一致copy
其他功能的值sklearn.preprocessing
并通过修改的值来防止意外的副作用X
到位。 #13459 通过 Hunter McGushion .
sklearn.svm
#
Fix 修复了中的一个问题
svm.SVC.decision_function
当decision_function_shape='ovr'
.由于decision_functioning中使用的缩放,给定样本的decision_函数值会有所不同,具体取决于decision_functioning是在单独的样本上还是在包含该相同样本的批次上评估的。 #10440 通过 Jonathan Ohayon .
sklearn.tree
#
Feature 现在可以使用matplotlib绘制决策树
tree.plot_tree
without relying on thedot
library, removing a hard-to-install dependency. #8508 by Andreas Müller .Feature 决策树现在可以用人类可读的文本格式输出
tree.export_text
. #6261 通过Giuseppe Vettigli <JustGlowing>
.Feature
get_n_leaves()
和get_depth()
已添加到tree.BaseDecisionTree
以及基于它的所有估计器,包括tree.DecisionTreeClassifier
,tree.DecisionTreeRegressor
,tree.ExtraTreeClassifier
,而且tree.ExtraTreeRegressor
. #12300 通过 Adrin Jalali .Fix 树木和森林以前没有
predict
具有字符串标签的多输出分类目标,尽管在fit
. #11458 通过 Mitar Milutinovic .Fix 修复了一个问题
tree.BaseDecisionTree
以及基于它的所有估计器,包括tree.DecisionTreeClassifier
,tree.DecisionTreeRegressor
,tree.ExtraTreeClassifier
,而且tree.ExtraTreeRegressor
,他们曾经超过给定的max_depth
当扩展树时,如果max_leaf_nodes
和max_depth
都是由用户指定的。请注意,这也会影响所有使用决策树的集成方法。 #12344 通过 Adrin Jalali .
sklearn.utils
#
Feature
utils.resample
现在接受stratify
根据类别分布进行抽样的参数。 #13549 通过 Nicolas Hug .API Change 弃用
warn_on_dtype
参数从utils.check_array
和utils.check_X_y
.添加了d类型转换的明确警告check_pairwise_arrays
如果metric
传递的是一个成对布尔指标。 #13382 通过 Prathmesh Savale .
多个模块#
Major Feature 的
__repr__()
所有估计量的方法(在调用时使用print(estimator)
)已经完全重写,构建在Python漂亮的打印标准库上。默认情况下打印所有参数,但可以使用print_changed_only
选项sklearn.set_config
. #11705 通过 Nicolas Hug .Major Feature 添加估计者标签:这些是估计器的注释,允许对其能力进行程序性检查,例如稀疏矩阵支持、支持的输出类型和支持的方法。估计器标签还确定在以下情况下在估计器上运行的测试
check_estimator
被称为。阅读更多的 User Guide . #8022 通过 Andreas Müller .Efficiency 当将数组转换为多个估计器中的不同d类型时,可以避免内存副本。 #11973 通过 Roman Yurchak .
Fix 修复了实现中的错误
our_rand_r
助手功能在跨平台上表现不一致。 #13422 通过 Madhura Parikh 和 Clément Doumouro .
杂项#
Enhancement Joblib不再在scikit-learn中出售,而是成为一个依赖。最低支持版本是jobib 0.11,但强烈建议使用版本>= 0.13。 #13531 通过 Roman Yurchak .
估计器检查的更改#
这些变化主要影响库开发人员。
添加
check_fit_idempotent
到check_estimator
,它检查何时fit
使用相同的数据调用两次,即predict
,predict_proba
,transform
,而且decision_function
不会改变。 #12328 通过 Nicolas Hug许多检查现在可以禁用或配置为 估计标签 . #8022 通过 Andreas Müller .
代码和文档贡献者
感谢自0.20版本以来为项目维护和改进做出贡献的所有人,包括:
adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier`, Finn O'Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^