常用术语和API元素词汇表#
该术语表希望明确地代表Scikit-learn及其API中应用的隐性和显式惯例,同时为用户和贡献者提供参考。它旨在描述概念并详细说明其相应的API或链接到文档的其他相关部分。通过链接到API参考和用户指南中的术语表条目,我们可以尽量减少冗余和不一致性。
我们首先列出一般概念(以及任何不适合其他地方的概念),但下面列出了更具体的相关术语集: 类API和估计器类型 , 目标类型 , 方法 , 参数 , 属性 , 数据和示例属性 .
一般概念#
- 1d#
- 1d阵列#
一维数组。NumPy数组,
.shape
长度为1。一个载体。- 2d#
- 2d阵列#
二维阵列。NumPy数组,
.shape
长度为2。通常代表一个矩阵。- API#
既指 specific Scikit-learn和 generalized 本术语表中描述的跨估计器类型的惯例和 overviewed in the contributor documentation .
构成Scikit-learn公共API的特定接口主要记录在 API参考 .然而,如果访问任何内容所需的标识符都没有从开头开始,我们就不太正式地将其视为公共API
_
. 我们通常会努力维持 backwards compatibility 对于公共API中的所有对象。私有API,包括函数、模块和方法开始
_
并不能保证稳定。- 阵列状#
最常见的数据格式 input 对于Scikit-learn估计器和函数,array-like是任何类型的对象,
numpy.asarray
将生成适当d类型(通常是数字)的适当形状(通常是1维或2维)的数组。这包括:
numpy数组
一列数字
长度的列表k固定长度k的数字列表
一
pandas.DataFrame
所有列均为数字
它不包括:
稀疏阵列
一个迭代器
发电机
注意 output 来自scikit-learn的估计器和函数(例如预测)通常应该是数组或稀疏矩阵,或其列表(如在多输出中
tree.DecisionTreeClassifier
的predict_proba
).一个估计器,其中predict()
返回列表或pandas.Series
无效.- 属性#
- 属性#
我们主要使用属性来指代模型信息在匹配期间如何存储在估计器上。 存储在估计器实例上的任何公共属性都需要以字母字符开始,如果设置在中,则以单个强调符号结束 fit 或 partial_fit . 这些都是在估计者的 Attributes 文献. 属性中存储的信息通常是:用于预测或转换的足够统计数据; transductive 输出诸如 labels_ 或 embedding_ ;或诊断数据,例如 feature_importances_ .列出了常见属性 below .
公共属性可以与构造函数同名 parameter ,
_
追加。 这用于存储用户输入的验证或估计版本。例如,decomposition.PCA
构造有n_components
参数.由此,结合其他参数和数据,PCA估计属性n_components_
.在预测/转换/等中使用的其他私有属性也可以在匹配时设置。 这些都以一个强调线开始,并且不保证对公众访问来说是稳定的。
估计器实例上不以强调结束的公共属性应该是
__init__
parameter 同一个名字 由于这种等效性,这些都记录在估计器的下 Parameters 文献.- 向后兼容性#
我们通常会尝试在不同版本之间保持向后兼容性(即接口和行为可以扩展,但不能更改或删除),但这也有一些例外:
- 仅限公共API
通过私有标识符访问的对象的行为(开头
_
)可以在不同版本之间任意更改。- 记录的
我们通常假设用户已遵守记录的参数类型和范围。如果文档要求提供列表并且用户提供了一个tuple,则我们无法确保版本之间的行为一致。
- 弃用
行为可能会发生变化 deprecation 期间(通常两个版本长)。 收件箱是使用Python的
warnings
module.- 关键字参数
我们有时可能假设所有可选参数(除了X和y到 fit 和类似的方法)仅作为关键字参数传递,并且可以重新排序位置。
- 错误修复和增强
错误修复和(不太常见的)增强可能会改变估计器的行为,包括在相同数据上训练的估计器的预测, random_state . 当这种情况发生时,我们尝试在变更日志中清楚地记录它。
- 序列化
我们不保证在一个版本中腌制估计器会允许它在后续版本中被解腌制到等效模型。 (For sklearn包中的估计器,当尝试进行此解压时,我们会发出警告,即使它可能碰巧有效。) 看到 安全性和可维护性限制 .
utils.estimator_checks.check_estimator
我们为估计器检查提供有限的向后兼容性保证:我们可能会对使用该函数测试的估计器添加额外的要求,通常是在这些是非正式假设但未正式测试时。
尽管与我们的用户签订了非正式合同,但该软件仍按许可证中规定的原样提供。 当一个版本无意中引入了不向后兼容的更改时,这些更改被称为软件回归。
- 可调用#
实现
__call__
方法;当参数为 callable() .- 类别型特征#
绝对或名义 feature 是在整个数据群中具有有限组离散值的一个。这些通常被表示为一列整列或一串。字符串将被大多数scikit-learn估计器拒绝,而整将被视为有序或计数值。对于大多数估计量的使用,类别变量应该进行一次性编码。值得注意的例外包括基于树的模型,例如随机森林和梯度提升模型,这些模型通常能够更好、更快地处理整元编码的分类变量。
OrdinalEncoder
帮助将字符串值分类特征编码为有序整数,OneHotEncoder
可用于一次性编码分类特征。另见 编码类别特征 和 categorical-encoding 与分类特征编码相关的工具包。- 克隆#
- 克隆#
要复制 estimator instance 并创建一个新的具有相同的 parameters ,但没有任何安装 attributes ,使用
clone
.当
fit
被称为,a meta-estimator 通常在安装克隆的实例之前克隆包装的估计器实例。(,出于遗产原因,包括Pipeline
和FeatureUnion
.)如果估算者的
random_state
参数是一个整数(或者如果估计器没有random_state
参数)、一个 exact clone 返回:克隆和原始估计器将给出完全相同的结果。否则, statistical clone 返回:克隆可能会产生与原始估计器不同的结果。更多详情见 控制随机性 .- 常用试验#
这是指在Scikit-learn中的几乎每个估计器类上运行的测试,以检查它们是否符合基本API惯例。 它们可通过以下方式供外部使用
utils.estimator_checks.check_estimator
或utils.estimator_checks.parametrize_with_checks
,其中大部分实现在sklearn/utils/estimator_checks.py
.注:常见测试制度的一些例外目前已硬编码到库中,但我们希望通过使用语义在估计器上标记异常行为来取代它 estimator tags .
- 交叉配合#
- 四通管件#
一种重新分配方法,可迭代地将数据划分为相互排斥的子集以适应两个阶段。在第一阶段,相互排斥的子集使得能够在训练期间未看到的数据上计算预测或转换。然后在第二阶段使用计算出的数据。目标是避免第一阶段中的任何过匹配将偏差引入第二阶段的输入数据分布。有关其使用示例,请参阅:
TargetEncoder
,StackingClassifier
,StackingRegressor
和CalibratedClassifierCV
.- 交叉验证#
- 交叉验证#
一种重新分配方法,可将数据迭代地划分为相互排斥的“训练”和“测试”子集,以便可以在未见数据上评估模型性能。这节省了数据,避免了需要保存“验证”数据集,并考虑了变异性,因为通常会执行多轮交叉验证。看到 User Guide 了解更多详细信息。
- 弃用#
我们使用贬低来慢慢违反我们的 backwards compatibility 保证,通常是:
更改参数的默认值;或
删除参数、属性、方法、类等。
当使用不建议使用的元素时,我们通常会发出警告,尽管这可能有限制。 例如,当有人设置了一个已被废弃的参数时,我们会发出警告,但当他们访问估计器实例上该参数的属性时,可能不会发出警告。
看到 Contributors' Guide .
- 维度#
可以用来指的是 features (即 n_features )或2D特征矩阵中的列。然而,维度也用于指代NumPy数组形状的长度,将一维数组与二维矩阵区分开来。
- docstring#
模块、类、函数等的嵌入式文档,通常在代码中作为对象定义开头的字符串,并作为对象的字符串访问
__doc__
属性我们努力坚持 PEP257 ,并关注 NumpyDoc conventions .
- 双下划线#
- 双下线符号#
当指定嵌套估计量的参数名称时,
__
在某些情况下可以用于区分父母和孩子。最常见的用途是通过元估计器设置参数时, set_params 因此,在指定搜索网格时, parameter search .看到 parameter .它还用于pipeline.Pipeline.fit
用于使 sample properties 到fit
正在酝酿中的估计方法。- dtype#
- 数据类型#
NumPy数组始终采用同质数据类型,可在
.dtype
数组(或稀疏矩阵)的属性。我们通常假设scikit-learn数据的简单数据类型:float或integer。我们可能会在编码或载体化之前支持数组的对象或字符串数据类型。 例如,我们的估计器不适用于结构数组。我们的文档有时可以提供有关dype精度的信息,例如
np.int32
,np.int64
等。当提供精度时,它指的是NumPy dype。如果使用任意精度,则文档将引用dypeinteger
或floating
.请注意,在这种情况下,精度可能取决于平台。的numeric
d类型指接受两者integer
和floating
.当谈到在64位dype(即
np.float64
和np.int64
)和32位d类型(即np.float32
和np.int32
),归结起来就是效率和精度之间的权衡。64位类型由于浮点错误较低,可以提供更准确的结果,但需要更多的计算资源,从而导致操作较慢并增加内存使用率。相比之下,32位类型承诺增强操作速度和减少内存消耗,但会引入更大的浮点错误。效率的提高取决于较低级别的优化,例如Vector化、单指令多调度(Sim)或缓存优化,但至关重要的是取决于所使用算法的兼容性。具体来说,精度的选择应该考虑所采用的算法是否可以有效利用
np.float32
.某些算法,尤其是某些最小化方法,是专门编码的np.float64
,这意味着即使np.float32
传递,则会触发自动转换回np.float64
.这不仅抵消了预期的计算节省,而且还引入了额外的负担,使操作具有np.float32
由于这个额外的转换步骤,速度出乎意料地更慢且内存更密集。- 鸭子类型#
我们尝试申请 duck typing 确定如何处理一些输入值(例如检查给定估计器是否是分类器)。 也就是说,我们避免使用
isinstance
在可能的情况下,并依赖属性的存在或不存在来确定对象的行为。 采用这种方法时需要一些细微差别:对于某些估计器,属性只有在可用后才可用 fitted . 例如,我们无法先验地确定是否 predict_proba 在网格搜索中可用,其中网格包括在管道的最后一步中在概率预测器和非概率预测器之间交替。 在下面,我们只能确定是否
clf
将其与一些数据进行匹配后是概率的::>>> from sklearn.model_selection import GridSearchCV >>> from sklearn.linear_model import SGDClassifier >>> clf = GridSearchCV(SGDClassifier(), ... param_grid={'loss': ['log_loss', 'hinge']})
这意味着我们只能在匹配后检查鸭子类型的属性,并且我们必须小心制作 meta-estimators 仅根据匹配后基础估计器的状态呈现属性。
检查属性是否存在(使用
hasattr
)通常与获得属性一样昂贵 (getattr
或点符号)。 在某些情况下,获取属性可能确实很昂贵(例如对于 feature_importances_ ,这可能表明这是API设计缺陷)。 那么代码hasattr
其次是getattr
应避免;getattr
首选在尝试例外块内。为了确定估计器对某些特征的期望或支持的某些方面,我们使用 estimator tags 而不是鸭子打字。
- 提前停止#
这包括在训练损失收敛之前停止迭代优化方法,以避免过度匹配。这通常是通过监控验证集上的概括分数来完成的。可用时,通过参数激活
early_stopping
或者通过设置积极的 n_iter_no_change .- 估计器实例#
我们有时用这个术语来区分 estimator 从构造的实例中类。例如,在以下内容中,
cls
是估计器类,而est1
和est2
是实例::cls = RandomForestClassifier est1 = cls() est2 = RandomForestClassifier()
- 示例#
我们尝试给出API中大多数函数和类的基本使用示例:
作为其文档字符串中的文档测试(即在
sklearn/
库代码本身)。作为例子 example gallery 渲染(使用 sphinx-gallery )从脚本中
examples/
目录,举例说明估计器/函数的关键特征或参数。 这些也应该从用户指南中引用。有时在 User Guide (由
doc/
)以及估计器的技术描述。
- 实验#
一个实验性的工具已经可以使用了,但是它的公共API,比如默认的参数值或拟合的属性,在未来的版本中仍然会发生变化,而不需要通常的 deprecation 警告政策。
- 评估指标#
- 评估指标#
评估指标衡量了模型的表现。 我们可以专门使用这个术语来指代中的功能
metrics
(无视pairwise
),与 score 方法和 scoring 交叉验证中使用的API。看到 预设和评分:量化预测的质量 .These functions usually accept a ground truth (or the raw data where the metric evaluates clustering without a ground truth) and a prediction, be it the output of predict (
y_pred
), of predict_proba (y_proba
), or of an arbitrary score function including decision_function (y_score
). Functions are usually named to end with_score
if a greater score indicates a better model, and_loss
if a lesser score indicates a better model. This diversity of interface motivates the scoring API.请注意,一些估计器可以计算未包含在
metrics
并且是估计者特定的,特别是模型似然性。估计器标签描述估计器的某些能力。 这将启用一些基于估计器检查的运行时行为,但它也允许测试每个估计器的适当不变性,同时排除其他不变性 common tests .
估计器标签的某些方面目前通过 duck typing 诸如此类的方法
predict_proba
并通过估计器对象上的一些特殊属性:有关更多详细信息,请参阅 估计标签 .
- 特征#
- 特征#
- 特征向量#
抽象地说,特征是一个函数(在数学意义上),它将采样对象映射到数值或分类量。“特征”也通常用于指这些量,是代表样本的矢量的各个元素。在数据矩阵中,特征被表示为列:每列包含将特征函数应用于一组样本的结果。
在其他地方,特征被称为属性、预测因子、回归因子或独立变量。
scikit-learn中几乎所有的估计器都假设特征是数字的、有限的且不缺失的,即使它们具有语义不同的域和分布(类别、有序、计数值、实值、区间)。另见 categorical feature 和 missing values .
n_features
指示数据集中的特征数量。- 拟合#
调用 fit (或 fit_transform , fit_predict 等)在估计器上。
- 装配#
估计器在之后的状态 fitting .
没有常规的程序来检查估计器是否适合。 然而,不适合的估计量:
应提高
exceptions.NotFittedError
当预测方法 (predict , transform 等)被称为。 (utils.validation.check_is_fitted
内部为此目的使用。)不应该有任何 attributes 以字母字符开始,以强调线结束。(Note属性的描述符可能仍然存在于类上,但hasattr应该返回False)
- 功能#
我们为许多算法提供临时功能接口,同时 estimator 类提供了更一致的界面。
特别是,Scikit-learn可以提供一个功能接口,该接口将模型适合某些数据并返回学习的模型参数,如
linear_model.enet_path
. 对于转换模型,这还返回嵌入或集群标签,如manifold.spectral_embedding
或cluster.dbscan
. 许多预处理转换器还提供一个函数接口,类似于调用 fit_transform ,就像preprocessing.maxabs_scale
. 用户应小心避免 data leakage 当使用这些时fit_transform
- 等效功能。我们对于何时提供或何时不提供估计器的函数形式没有严格的政策,但维护者应该考虑与现有接口的一致性,以及提供函数是否会导致用户偏离最佳实践(关于数据泄露等)
- 画廊#
看到 examples .
- 超参数#
- 超参数#
看到 parameter .
- 插补#
- 归责#
大多数机器学习算法要求其输入没有 missing values ,如果违反此要求,将无法工作。尝试填充(或插补)缺失值的算法称为插补算法。
- 可转位#
一个 array-like , sparse matrix 、pandas DataFrame或序列(通常是列表)。
- 感应#
- 感应#
归纳(与 transductive )机器学习构建了一些数据的模型,然后可以应用于新实例。Scikit-learn中的大多数估计器都是归纳式的,具有 predict 和/或 transform 方法.
- joblib#
Scikit-learn中使用的Python库(https:joblib.readthedocs.io),以促进简单的并行性和缓存。 Joblib致力于高效地处理numpy数组,例如通过使用 memory mapping .看到 并行性 for more information.
- 标号指示矩阵#
- 多标签指标矩阵#
- 多标签指标矩阵#
用于表示多标签数据的格式,其中2D数组或稀疏矩阵的每一行对应于一个样本,每列对应于一个类,如果样本用类标记,每个元素为1,如果没有标记,每个元素为0。
- 泄漏#
- 数据泄露#
交叉验证中的一个问题,由于测试数据的知识无意中包含在训练模型中,因此可能会高估概括性能。 例如,当应用 transformer 针对整个数据集,而不是交叉验证拆分中的每个训练部分。
我们的目标是提供接口(例如
pipeline
和model_selection
)保护用户免受数据泄露。- 记忆映射#
- 存储器映射#
- 存储器映射#
一种内存效率策略,将数据保留在磁盘上,而不是将其复制到主内存中。 可以为可以读取、写入或同时读取的阵列创建内存映射
numpy.memmap
.当使用 joblib 为了并行化Scikit-learn中的操作,它可以自动memmap大型阵列,以减少多处理中的内存重复负担。- 缺失值#
大多数Scikit-learn估计器不适用于缺失值。当他们这样做时(例如
impute.SimpleImputer
),NaN是浮点数组中缺失值的首选表示。 如果数组具有integer dype,则无法表示NaN。因此,我们支持指定另一个missing_values
值的 imputation 或者可以在整数空间中执行学习。 Unlabeled data 是中缺失值的特殊情况 target .n_features
#的数量 features .
n_outputs
#n_samples
#的数量 samples .
n_targets
#同义词 n_outputs .
- 叙述文档#
- 叙述性文献#
的别名 User Guide ,即书面文档
doc/modules/
.不像 API reference 用户指南通过文档字符串提供,旨在:Scikit-learn提供的工具按主题或使用方式一起分组;
通常通过比较来激励某人为什么会使用每种特定工具;
提供工具的直观和技术描述;
提供或链接到 examples 使用工具的关键功能。
- NP#
由于传统的导入声明,Numpy的缩写::
import numpy as np
- 在线学习#
模型通过接收每批地面事实来迭代更新 targets 在对相应批次的数据做出预测后不久。 本质上,模型必须可用于每批处理后的预测。看到 partial_fit .
- out-of-Core#
一种效率策略,其中并非所有数据都同时存储在主存储器中,通常通过对批量数据执行学习。看到 partial_fit .
- 输出#
中每个样本的个体纯量/分类变量 target . 例如,在多标签分类中,每个可能的标签对应于一个二进制输出。也称为 responses , tasks 或 targets .看到 multiclass multioutput 和 continuous multioutput .
- 对#
长度为2的二元组。
- 参数#
- 参数#
- param#
- params#
我们主要使用 parameter 指的是可以在其构造中指定的估计器的各个方面。例如,
max_depth
和random_state
是参数RandomForestClassifier
.估计器构造函数的参数不加修改地存储为估计器实例上的属性,并且通常以字母字符开始,以字母数字字符结束。 每个估计器的构造器参数都在估计器的文档字符串中描述。我们不使用统计意义上的参数,其中参数是指定模型并可以从数据中估计的值。我们所说的参数可能是统计学家所说的模型超参数:配置模型结构的方面,通常不直接从数据中学习。 然而,我们的参数还用于规定不影响学习模型的建模操作,例如 n_jobs 用于控制并行性。
When talking about the parameters of a meta-estimator, we may also be including the parameters of the estimators wrapped by the meta-estimator. Ordinarily, these nested parameters are denoted by using a double underscore (
__
) to separate between the estimator-as-parameter and its parameter. Thusclf = BaggingClassifier(estimator=DecisionTreeClassifier(max_depth=3))
has a deep parameterestimator__max_depth
with value3
, which is accessible withclf.estimator.max_depth
orclf.get_params()['estimator__max_depth']
.参数列表及其当前值可以从 estimator instance 使用其 get_params 法
在施工和装配之间,可以使用以下方式修改参数 set_params . 为了实现这一点,在构造估计器或设置每个参数时,通常不会验证或更改参数。在以下情况下执行参数验证 fit 被称为。
列出了常用参数 below .
- 成对度量#
- 成对指标#
从广义上来说,成对度量定义了用于测量两个样本之间相似性或不相似性的函数(每个样本通常表示为 feature vector ). 我们特别通过以下方式提供距离指标(以及不恰当的指标,例如Cosine Distance)的实现
metrics.pairwise_distances
,和核函数(一类受约束的相似性函数),metrics.pairwise.pairwise_kernels
. 这些可以计算对称的成对距离矩阵,因此冗余地存储数据。另见 precomputed 和 metric .
请注意,对于大多数距离度量,我们依赖于
scipy.spatial.distance
,但可以在我们的上下文中重新实现以提高效率。的metrics.DistanceMetric
接口用于实现与高效邻居搜索集成的距离度量。- PD#
的简写 Pandas 由于传统的进口声明::
import pandas as pd
- 预先计算#
算法依赖于 pairwise metrics ,并且可以仅根据成对指标计算,因此我们通常允许用户指定 X 所提供的已经在成对(dis)相似性空间中,而不是在特征空间中。 也就是说,当传递给 fit 它是一个正方形对称矩阵,每个向量表示与每个样本的相似性(不相似性),并且当传递给预测/变换方法时,每行对应于测试样本,每列对应于训练样本。
预计算X的使用通常通过设置
metric
,affinity
或kernel
参数到字符串“预先计算”。如果是这种情况,那么估计器应该设置pairwise
估计器标记为True。- 矩形#
可以用矩阵表示的数据 samples 在第一轴上和固定的有限集合 features 第二个称为矩形。
该术语不包括具有非向量结构的样本,诸如文本、任意大小的图像、任意长度的时间序列、向量集合等。 vectorizer 是产生这些数据的矩形形式。
- 样品#
- 样品#
我们通常使用这个术语作为名词来表示单个特征向量。在其他地方,样本被称为实例、数据点或观察。
n_samples
指示数据集中的样本数,即数据数组中的行数 X .请注意,此定义是机器学习中的标准定义,并且偏离了统计数据的含义 a set of individuals or objects collected or selected .- 样本性质#
- 样本性质#
A sample property is data for each sample (e.g. an array of length n_samples) passed to an estimator method or a similar function, alongside but distinct from the features (
X
) and target (y
). The most prominent example is sample_weight; see others at 数据和示例属性.自0.19版本起,我们没有一致的方法来处理示例属性及其路由 meta-estimators 尽管
fit_params
参数经常使用。- scikit-learn-contrib#
发布Scikit-learn兼容库的场所,这些库得到了核心开发人员和contrib社区的广泛授权,但不由核心开发人员团队维护。请参阅https://scikit-learn-contrib.github.io。
- scikit-learn增强提案#
- SLEP#
- SLEPs#
API原则的更改以及依赖项或支持版本的更改通过 SLEP 并遵循中概述的决策过程 Scikit-learn治理和决策 .对于所有投票,提案必须在投票前公开并讨论。此类提案必须是一份合并文件,形式为“Scikit-Learn Enhancement提案”(SLEP),而不是对某个问题的长时间讨论。SLEP必须作为拉取请求提交给 enhancement proposals 使用 SLEP template .
- 半监督#
- 半监督学习#
- 半监督#
学习预期预测(标签或地面实况)仅适用于作为训练数据提供的一些样本, fitting 该模型 我们按照惯例应用标签
-1
到 unlabeled 半监督分类中的样本。- 稀疏矩阵#
- 稀疏图#
二维数字数据的表示,比几乎所有元素都为零的相应密集numpy数组更有内存效率。公司现采用国际
scipy.sparse
框架,它提供了几个底层的稀疏数据表示,或者 formats .对于特定任务,有些格式比其他格式更有效,当特定格式提供特殊好处时,我们尝试在Scikit-learn参数描述中记录这一事实。一些稀疏矩阵格式(特别是CSR、CSC、COO和LIL)区分 implicit 和 explicit 零.显式零被存储(即,它们消耗
data
数组)在数据结构中,而隐式零对应于显式存储中未以其他方式定义的每个元素。Scikit-learn中使用了稀疏矩阵的两种语义:
- 矩阵语义
稀疏矩阵被解释为一个数组,其中隐式和显式零被解释为数字0。 这是最常采用的解释,例如当稀疏矩阵用于特征矩阵或 multilabel indicator matrices .
- 图语义
如同
scipy.sparse.csgraph
,显式零被解释为数字0,但隐式零表示被屏蔽或缺失的值,例如图的两个顶点之间不存在边,其中显式值表示边的权重。采用这种解释来表示集群中的连通性,以最近邻居的表示(例如neighbors.kneighbors_graph
),以及用于预先计算的距离表示,其中仅需要每个点附近的距离。
当使用稀疏矩阵时,我们假设它是稀疏的,这是有充分理由的,并避免编写使用户提供的稀疏矩阵致密化的代码,而是在不可能的情况下保持稀疏性或引发错误(即如果估计器不/不能支持稀疏矩阵)。
- 无国籍#
如果估计器不存储在期间获得的任何信息,则它是无状态的 fit .该信息可以是在过程中学习的参数 fit 或根据训练数据计算的统计数据。如果估计器没有,则它是无状态的 attributes 除了那些设置在
__init__
. Calling fit for these estimators will only validate the public attributes passed in_ _init__
.- 监督#
- 监督学习#
了解每个样本的预期预测(标签或基本真相)在哪里可用 fitting 该模型,提供为 y . 这是一种在 classifier 或 regressor 以及其他估计者。
- 目标#
- 目标#
的 dependent variable 在 supervised (和 semisupervised )学习,通过作为 y 对于估计器的 fit 法 也称为 dependent variable , outcome variable , response variable , ground truth 或 label . Scikit-learn处理具有最小结构的目标:来自有限集合的类,有限实数值,多个类或多个数字。看到 目标类型 .
- 转导#
- 直推#
转换(与 inductive )机器学习方法旨在对特定的数据集进行建模,但不是将该模型应用于不可见的数据。 实例包括
manifold.TSNE
,cluster.AgglomerativeClustering
和neighbors.LocalOutlierFactor
.- 未标记#
- 未标记数据#
匹配时具有未知基本真相的样本;同样, missing values 在 target . 另见 semisupervised 和 unsupervised 学习
- 无监督#
- 无监督学习#
学习预期预测(标签或地面实况)在哪些情况下对每个样本不可用, fitting 模型,就像 clusterers 和 outlier detectors . 无监督估计器忽略任何 y 传递给 fit .
类API和估计器类型#
- 分类器#
- 分类器#
A supervised (或 semi-supervised ) predictor 具有有限的离散可能输出值集。
分类器支持对一些 binary , multiclass , multilabel ,或者 multiclass multioutput 目标的 在scikit-learn中,所有分类器都支持多类分类,默认在二元分类问题上使用一对休息策略。
分类器必须存储 classes_ 匹配后的属性,并继承自
base.ClassifierMixin
,它设置了相应的 estimator tags 正确分类器可以与其他估计器区分开来,
is_classifier
.分类器必须实现:
也可以适当实施 decision_function , predict_proba 和 predict_log_proba .
- 聚类器#
- 聚类器#
A unsupervised predictor 具有有限的离散输出值集。
集群者通常存储 labels_ 安装后,如果是,必须这样做 transductive .
集群管理者必须实现:
- 密度估计器#
一个 unsupervised 输入概率密度函数的估计。常用的技术有:
核密度估计 - 使用由带宽参数控制的核函数来表示密度;
Gaussian mixture - uses mixture of Gaussian models to represent density.
- 估计器#
- 估计#
管理模型估计和解码的对象。该模型被估计为以下的确定性函数:
parameters 在物体结构中提供或与 set_params ;
全球
numpy.random
如果估计器的话,则为随机状态 random_state 参数设置为无;并且任何数据或 sample properties 传递给最近的电话 fit , fit_transform 或 fit_predict ,或类似地在调用序列中传递的数据 partial_fit .
估计的模型存储在公共和私人中 attributes 在估计器实例上,通过预测和变换方法促进解码。
估算者必须提供 fit 方法,并且应该提供 set_params 和 get_params ,尽管这些通常是通过继承来提供的
base.BaseEstimator
.一些估计器的核心功能也可能作为 function .
- 特征提取器#
- 特征提取器#
A transformer 它接受每个样本未表示为 array-like 固定长度的对象,并产生 array-like 目的 features 对于每个样本(因此对于一组样本来说是类似二维阵列的)。 换句话说,它(粗略地)将非矩形数据表示映射到 rectangular 数据
特征提取器必须至少实现:
- 元估计量#
- 元估计量#
- 元估计量#
- 元估计量#
一个 estimator 它将另一个估计器作为参数。实例包括
pipeline.Pipeline
,model_selection.GridSearchCV
,feature_selection.SelectFromModel
和ensemble.BaggingClassifier
.在元估计者的 fit 方法,任何包含的估计量都应该 cloned 在它们适合之前(尽管AMEME:Pipeline和QUALureUnion目前不这样做)。一个例外是,估计器可以明确记录它接受预适应的估计器(例如使用
prefit=True
在feature_selection.SelectFromModel
).一个已知的问题是,如果元估计器被克隆,预适应的估计器将丢失其模型。 元估计者应该具备fit
即使所有包含的估计量都已预先适应,也会在预测之前调用。如果元估计器的主要行为(例如 predict 或 transform 实现)是所提供的预测/转换方法的功能 base estimator (or多个基本估计器),元估计器应该至少提供基本估计器提供的标准方法。 在元估计器已 fitted (see也 duck typing ),为此
utils.metaestimators.available_if
可能有帮助。 它还应该提供(或修改) estimator tags 和 classes_ 基本估计器提供的属性。元估计器在将数据传递给基础估计器之前应小心尽可能少地验证数据。这节省了计算时间,并且例如可以允许基础估计器轻松处理不 rectangular .
- 异常值检测器#
- 异常值检测器#
一个 unsupervised 二进制 predictor 它模拟了核心样本和外围样本之间的区别。
异常值检测器必须实现:
感性异常值检测器还可以实现 decision_function 在异常值的得分低于0的情况下给出标准化的内点得分。 score_samples 可以为每个样本提供非标准化分数。
- 预测器#
- 预测因子#
一个 estimator 支持 predict 和/或 fit_predict .这包括 classifier , regressor , outlier detector 和 clusterer .
在统计学中,“预测者”指的是 features .
- 回归器#
- 回归量#
A supervised (或 semi-supervised ) predictor 与 continuous 输出值。
回归器继承自
base.RegressorMixin
,这设置了他们的 estimator tags 正确一个回归量可以与其他估计量区分开来,
is_regressor
.回归器必须实现:
- Transformer#
- 变压器#
支持的估计者 transform 和/或 fit_transform .一个纯粹 transductive Transformer,例如
manifold.TSNE
,可能不实施transform
.- 矢量器#
- 向量器#
看到 feature extractor .
还有一些API专门与一小部分估计器相关,例如:
- 交叉验证拆分器#
- CV分离器#
- 交叉验证生成器#
非估计器类家族,用于将数据集拆分为训练和测试部分序列(请参阅 交叉验证:评估估计器性能 ),通过提供 split 和 get_n_splits 方法.请注意,与估计器不同,这些没有 fit 方法且不提供 set_params 或 get_params .参数验证可以在
__init__
.- 交叉验证估计量#
具有内置交叉验证功能的估计器,可以自动选择最佳超参数(请参阅 User Guide ).交叉验证估计量的一些示例包括
ElasticNetCV
和LogisticRegressionCV
.交叉验证估计量被命名为EstimatorCV
并且往往大致相当于GridSearchCV(Estimator(), ...)
.使用交叉验证估计量相对于规范估计量的优势在于: estimator 班级随着 grid search 他们可以通过在交叉验证过程的之前步骤中重复使用预先计算的结果来利用热启动。这通常会导致速度提高。一个例外是RidgeCV
类,它可以执行高效的留一出(LOO)CV。默认情况下,除了RidgeCV
使用LOO-CV,在找到超参数的最佳组合后,将在完整训练数据集中重新调整。- 得分手#
一个非估计器可调用对象,它对给定测试数据评估估计器,并返回一个数字。不像 evaluation metrics ,返回的更大数字必须与 better 得分看到 的 scoring 参数:定义模型评估规则 .
更多例子:
tree.Criterion
元数据路由#
- 消费者#
消费的对象 metadata .该物体通常是 estimator 、a scorer ,或者 CV splitter .使用元数据意味着在计算中使用它,例如使用 sample_weight 计算某种类型的分数。作为消费者并不意味着对象总是接收特定的元数据,而是意味着如果提供了它就可以使用它。
- 元数据#
与给定相关的数据 X 和 y 数据,但不直接是数据的一部分,例如 sample_weight 或 groups ,并传递给不同的对象和方法,例如 scorer 或 CV splitter .
- 路由器#
将元数据路由到的对象 consumers .该物体通常是 meta-estimator ,例如
Pipeline
或GridSearchCV
.一些路由器也可以成为消费者。例如,当元估计器使用给定的 groups ,并且它还将其传递给它的一些子对象,例如 CV splitter .
请参阅 Metadata Routing User Guide for more information.
目标类型#
- 二进制#
由两个类组成的分类问题。 二元目标可以表示为 multiclass 问题,但只有两个标签。 二元决策函数表示为1d数组。
从语义上讲,一个类通常被认为是“积极”类。除非另有规定(例如使用 pos_label 在 evaluation metrics ),我们将具有更大值(数字或词典)的类别标签视为标签的正类别: [0, 1] ,1是正类; [1, 2] 、2是正类;的 ['no', 'yes'] ,“是”是积极类别;的 ['no', 'YES'] ,“不”是积极的类别。 这会影响产量 decision_function 例如。
请注意,从多类中抽样的数据集
y
或连续y
可能看起来是二进制的。type_of_target
对于二进制输入,将返回'binary',或者类似的数组,只有一个类存在。- 连续#
一个回归问题,其中每个样本的目标是一个有限浮点数,表示为一维浮点数(有时是int)数组。
type_of_target
对于连续输入,将返回“continuous”,但如果数据都是整数,则将被标识为“multiclass”。- 连续多输出#
- 连续多输出#
- 多输出连续#
- 多输出连续#
回归问题,每个样本的目标包括
n_outputs
outputs ,每个都是有限的浮点数,对于固定的intn_outputs > 1
在特定的数据集中。连续多输出目标表示为多个 continuous 目标,水平堆叠成阵列形状
(n_samples, n_outputs)
.type_of_target
对于连续多输出输入,将返回“continuous-multi output”,但如果数据全是integer,则将被标识为“multiclass-multi output”。- 多类#
- 多类#
由两个以上类别组成的分类问题。 多类目标可以表示为字符串或整元的一维数组。 2d的2d列变量(即,中的单个输出 multioutput 条件)也被接受。
我们不正式支持其他可排序、可哈希对象作为类标签,即使当给定此类类型的分类目标时,估计器可能碰巧有效。
对于半监督分类, unlabeled 样品应有特殊标签-1 in
y
.在scikit-learn中,所有支持二进制分类的估计器也支持多类分类,默认使用One-vs-Rest。
A
preprocessing.LabelEncoder
有助于将多类目标规范为整除。type_of_target
将为多类输入返回“多类”。用户可能还希望以与“多类”相同的方式处理“二进制”输入。- 多类多输出#
- 多类别多输出#
- 多输出多类#
- 多输出多类别#
分类问题,每个样本的目标包括
n_outputs
outputs ,每个都有一个类标签,用于固定的intn_outputs > 1
在特定的数据集中。 每个输出都有一组固定的可用类,每个样本都标有每个输出的类。输出可以是二进制的,也可以是多类的,如果所有输出都是二进制的,则目标是 multilabel .多类多输出目标表示为多个 multiclass 目标,水平堆叠成阵列形状
(n_samples, n_outputs)
.XXX:为了简单起见,我们可能并不总是支持多类多输出的字符串类标签,应该使用integer类标签。
multioutput
提供了使用多个单输出估计器来估计多输出问题的估计器。 这可能无法完全考虑不同输出之间的依赖性,哪些本地处理多输出情况的方法(例如决策树、最近邻居、神经网络)可能会做得更好。type_of_target
将为多类多输出输入返回'multiclass-multioutput'。- 多标记#
- 多标签#
A multiclass multioutput 每个输出所在的目标 binary . 这可以表示为整数的2d(密集)阵列或稀疏矩阵,使得每列是单独的二进制目标,其中正标签用1指示,负标签通常为-1或0。 在支持密集多标签目标的所有地方,稀疏多标签目标都不受支持。
从语义上讲,多标签目标可以被认为是每个样本的一组标签。 虽然没有内部使用,
preprocessing.MultiLabelBinarizer
作为从集合列表表示转换为2D数组或稀疏矩阵的实用程序提供。使用一热编码多类目标preprocessing.LabelBinarizer
将其变成一个多标签问题。type_of_target
将为多标签输入返回“多标签指示器”,无论是稀疏还是密集。- 多输出#
- 多输出#
每个样本都有多个分类/回归标签的目标。看到 multiclass multioutput 和 continuous multioutput .我们目前不支持对混合分类和回归目标进行建模。
方法#
decision_function
#以嵌合 classifier 或 outlier detector ,预测与每个类别相关的每个样本的“软”分数,而不是由 predict . 它的输入通常只是一些观察数据, X .
如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.输出惯例:
- 二元分类
一维数组,其中严格大于零的值指示正类(即中的最后一个类 classes_ ).
- 多类分类
一个2维数组,其中行的arg-max是预测的类。 列顺序根据 classes_ .
- 多标签分类
Scikit-learn的表示不一致 multilabel 决策功能。它可以用两种方式之一表示:
2D数组列表,每个数组的形状: (
n_samples
、2),就像多类多输出一样。列表很长n_labels
.单个2D形状阵列 (
n_samples
,n_labels
),数组中的每个“列”都对应于各个二进制分类决策。这与多类分类格式相同,尽管其语义不同:它应该像二进制情况一样通过阈值0来解释。
- 多输出分类
2d数组列表,对应于每个多类决策函数。
- 离群点检测
一维数组,其中大于或等于零的值指示内点。
fit
#的
fit
每个估计器都提供了方法。通常需要一些 samplesX
, targetsy
如果模型是受监督的,并且可能是其他 sample properties 等 sample_weight . 它应该:清除任何先前 attributes 存储在估计器上,除非 warm_start 被使用;
验证和解释任何 parameters ,如果无效,最好提出错误;
验证输入数据;
根据估计的参数和提供的数据估计并存储模型属性;以及
返回现在 fitted 估计器以促进方法链接。
目标类型 describes possible formats for
y
.fit_predict
#尤用于 unsupervised , transductive 估计器,这适合模型并返回预测(类似于 predict )关于训练数据。在集群器中,这些预测也存储在 labels_ 属性,以及
.fit_predict(X)
通常相当于.fit(X).predict(X)
.的参数fit_predict
与那些相同fit
.fit_transform
#上的方法 transformers 它适合估计器并返回转换后的训练数据。它采用参数,如 fit 其输出应该与调用相同的形状
.fit(X, ...).transform(X)
.但也有极少数情况下,.fit_transform(X, ...)
和.fit(X, ...).transform(X)
不返回相同的值,其中训练数据需要以不同的方式处理(例如,由于模型混合在堆叠集合中;此类情况应明确记录)。 Transductive 变压器还可以提供fit_transform
但不 transform .实施的一个原因
fit_transform
就是表演fit
和transform
单独地比一起效率低。base.TransformerMixin
提供默认实现,提供跨转换器的一致接口,其中fit_transform
是否专业化。在 inductive 学习--目标是学习可以应用于新数据的通用模型--用户应该小心不要应用
fit_transform
在进一步建模之前,将整个数据集(即训练和测试数据一起),因为这会导致 data leakage .get_feature_names_out
#主要用于 feature extractors ,但也用于其他转换器,为估计器的输出中的每列提供字符串名称 transform 法 它输出字符串数组,并且可以采用类似数组的字符串作为输入,对应于可以生成输出列名的输入列的名称。 如果
input_features
没有传递进去,那么feature_names_in_
将使用属性。如果feature_names_in_
未定义属性,则命名输入名称[x0, x1, ..., x(n_features_in_ - 1)]
.get_n_splits
#上 CV splitter (not估计器),返回迭代返回值时将获得的元素数量 split 相同的参数。 使用与split相同的参数。
get_params
#得到所有 parameters ,及其值,可以使用设置 set_params . 的参数
deep
当设置为False时,可以使用仅返回不包括的那些参数__
,即不是由于经由包含的估计器的间接。大多数估计者采用以下定义
base.BaseEstimator
,它简单地采用为__init__
.pipeline.Pipeline
除其他外,重新实施get_params
声明在其steps
参数本身就是参数。partial_fit
#促进以在线方式匹配估计器。 不像
fit
,反复呼叫partial_fit
不清除模型,但使用提供的数据更新它。提供给的部分数据partial_fit
可以称为迷你批次。每个迷你批次必须具有一致的形状等。在迭代估计器中,partial_fit
通常只执行单次迭代。partial_fit
也可用于 out-of-core 学习,尽管通常仅限于可以在线执行学习的情况,即模型在每次partial_fit
并且不需要单独的处理来最终确定模型。cluster.Birch
引入了呼叫的惯例partial_fit(X)
将产生尚未最终确定的模型,但可以通过调用来最终确定该模型partial_fit()
即无需通过进一步的小批量。Generally, estimator parameters should not be modified between calls to
partial_fit
, althoughpartial_fit
should validate them as well as the new mini-batch of data. In contrast,warm_start
is used to repeatedly fit the same estimator with the same data but varying parameters.像
fit
,partial_fit
应该返回估计器对象。为了清除模型,应该构建新的估计器,例如
base.clone
.注意:使用
partial_fit
后fit
导致未定义的行为。predict
#Makes a prediction for each sample, usually only taking X as input (but see under regressor output conventions below). In a classifier or regressor, this prediction is in the same target space used in fitting (e.g. one of {'red', 'amber', 'green'} if the
y
in fitting consisted of these strings). Despite this, even wheny
passed to fit is a list or other array-like, the output ofpredict
should always be an array or sparse matrix. In a clusterer or outlier detector the prediction is an integer.如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.输出惯例:
- 分类器
一组形状
(n_samples,)
(n_samples, n_outputs)
. Multilabel 如果在匹配中使用稀疏矩阵,则数据可以被表示为稀疏矩阵。每个元素都应该是分类器中的值之一 classes_ 属性- 聚类器
一组形状
(n_samples,)
其中每个值从0到n_clusters - 1
如果相应的样本已聚集,如果样本未聚集,则为-1,如中cluster.dbscan
.- 异常值检测器
一组形状
(n_samples,)
其中,对于异常值,每个值为-1,否则为1。- 回归器
形状的数字数组
(n_samples,)
,通常浮动64。一些回归者有额外的选择predict
方法,允许他们返回标准差 (return_std=True
)或协方差 (return_cov=True
)相对于预测值。 在这种情况下,返回值是根据需要对应于(预测平均值、std、cov)的数组的数组。
predict_log_proba
#产量的自然对数 predict_proba ,旨在促进数字稳定性。
predict_proba
#的方法 classifiers 和 clusterers 它可以返回每个类/集群的概率估计。 它的输入通常只是一些观察数据, X .
如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.输出约定与 decision_function 除 binary 分类情况,其中为每个类输出一列(而
decision_function
输出1d数组)。对于二进制和多类预测,每一行都应该加为1。与其他方法一样,
predict_proba
只有当估计器可以做出概率预测时才应存在(请参阅 duck typing ).这意味着该方法的存在可能取决于估计器参数(例如linear_model.SGDClassifier
)或训练数据(例如model_selection.GridSearchCV
)并且只能在贴合后出现。score
#估计器的一种方法,通常是 predictor ,它评估其对给定数据集的预测,并返回单个数字分数。 更大的返回值应该表明更好的预测;默认情况下,准确性用于分类器,R ' 2用于回归器。
如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.一些估计器实现自定义的、估计器特定的评分函数,通常是模型下数据的可能性。
score_samples
#返回每个给定样本的分数的方法。的确切定义 score 因人而异。在密度估计的情况下,它可以是数据上的log密度模型,在异常值检测的情况下,它可以是数据的异常值因子相反的。
如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.set_params
#适用于任何估计器,采用与中的关键字对应的关键字参数 get_params . 每个都提供了一个新值来分配,以便调用
get_params
后set_params
将反映变化 parameters . 大多数估计者使用中的实现base.BaseEstimator
,它处理嵌套参数,否则将参数设置为估计器上的属性。该方法在中被重写pipeline.Pipeline
以及相关的估计者。split
#On a CV splitter (not an estimator), this method accepts parameters (X, y, groups), where all may be optional, and returns an iterator over
(train_idx, test_idx)
pairs. Each of {train,test}_idx is a 1d integer array, with values from 0 fromX.shape[0] - 1
of any length, such that no values appear in both sometrain_idx
and its correspondingtest_idx
.transform
#中 transformer ,转换输入,通常仅 X ,进入一些变形的空间(通常记为 Xt ).输出是一个数组或稀疏矩阵的长度 n_samples 列数固定后 fitting .
如果估计者尚未 fitted ,调用此方法应该引发
exceptions.NotFittedError
.
参数#
这些常见参数名称,专门用于估计器构造(请参阅概念 parameter ),有时也作为函数的参数或非估计器构造函数出现。
class_weight
#用于在将分类器作为 target 课 哪里 sample_weight 也支持并给定,则乘以
class_weight
贡献同样,在哪里class_weight
中使用 multioutput (包括 multilabel )任务时,权重在输出之间相乘(即列y
).默认情况下,所有样本具有相等的权重,以便根据训练数据中的普遍性对类别进行有效加权。这可以通过以下方式明确实现
class_weight={label1: 1, label2: 1, ...}
适用于所有类别标签。更一般地说,
class_weight
指定为将类标签映射到权重的dict ({class_label: weight}
),以便指定类的每个样本都被赋予该权重。class_weight='balanced'
通过赋予每个样本与训练数据中其类别的流行率成负相关的权重,可以用于赋予所有类别相同的权重:n_samples / (n_classes * np.bincount(y))
.类别权重的使用将取决于算法的不同:对于线性模型(例如线性支持机或逻辑回归),类别权重将通过用其类别权重对每个样本的损失进行加权来改变损失函数。对于基于树的算法,类权重将用于重新加权分裂标准。 Note 然而,这种重新平衡没有考虑每个类别中样本的重量。对于多输出分类,使用一系列指令来指定每个输出的权重。例如,对于四级多标签分类权重应为
[{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}]
而不是[{1:1}, {2:5}, {3:1}, {4:1}]
.的
class_weight
参数通过以下方式进行验证和解释utils.class_weight.compute_class_weight
.cv
#确定交叉验证拆分策略,如在基于交叉验证的例程中使用的那样。
cv
也可用于估计器,例如multioutput.ClassifierChain
或calibration.CalibratedClassifierCV
它们使用一个估计器的预测作为另一个估计器的训练数据,以不会过度适应训练监督。可能的投入
cv
通常是:一个整数,指定K折叠交叉验证中的折叠数。如果估计器是分类器(确定为
base.is_classifier
)和 targets 可以表示二进制或多类(但不是多输出)分类问题(由以下决定utils.multiclass.type_of_target
).A cross-validation splitter instance.参阅 User Guide 适用于Scikit-learn中提供的拆分器。
可迭代的产出训练/测试分裂。
除了某些例外(特别是在根本不使用交叉验证的情况下),默认值为5倍。
cv
值通过以下方式进行验证和解释model_selection.check_cv
.kernel
#指定核心方法算法要使用的核心函数。例如,估计器
svm.SVC
和gaussian_process.GaussianProcessClassifier
都有kernel
参数,该参数采用内核名称作为字符串或用于计算内核矩阵的可调用内核函数。有关更多参考,请参阅 核近似 和 高斯过程 用户指南。max_iter
#对于涉及迭代优化的估计量,这决定了在 fit . 如果
max_iter
迭代运行时没有收敛,aexceptions.ConvergenceWarning
应该提出。 请注意,“单次迭代”的解释在估计器之间是不一致的:一些但不是所有的估计器使用它来表示单个时期(即数据中的每个样本)。FixME也许我们应该对ConvergenceWarning和max_iter之间的关系进行一些常见测试。
memory
#一些估计器利用
joblib.Memory
在安装期间存储部分溶液。因此当fit
再次调用时,这些部分解决方案已被记住并可以重复使用。A
memory
parameter can be specified as a string with a path to a directory, or ajoblib.Memory
instance (or an object with a similar interface, i.e. acache
method) can be used.memory
值通过以下方式进行验证和解释utils.validation.check_memory
.metric
#作为一个参数,这是用于确定两个数据点之间距离的方案。 看到
metrics.pairwise_distances
. 在实践中,对于某些算法来说,可能会使用不正确的距离度量(不遵守三角形不等式的度量,例如Cosine距离)。XXX:分层集群使用
affinity
有这个意义。我们还使用 metric 提及 evaluation metrics ,但避免使用这个意义作为参数名称。
n_components
#a的功能数量 transformer 应该将输入转换为。看到 components_ 对于仿射投影的特殊情况。
n_iter_no_change
#停止迭代过程之前需要等待没有改进的迭代次数。这也被称为 patience 参数.它通常与 early stopping 以避免过早停止。
n_jobs
#此参数用于指定应将多少个并发进程或线程用于与 joblib .
n_jobs
是一个整数,指定并发运行的工作程序的最大数量。如果给定1,则根本不使用jobib并行性,这对于调试很有用。如果设置为-1,则使用所有处理器。为n_jobs
-1以下,使用(n_cpus + 1 + n_jobs)。例如用n_jobs=-2
,使用除一个外的所有处理器。n_jobs
是None
默认情况下,这意味着 unset ;它通常会被解释为n_jobs=1
,除非当前joblib.Parallel
后台上下文另有规定。注意即使
n_jobs=1
,在某些配置中可能会使用低级并行性(通过Numpy和BEP)。有关使用
joblib
及其与scikit-learn的互动,请参阅我们的 parallelism notes .pos_label
#在不假设正类的二进制分类问题中必须编码正标签的值。计算精确度和召回率等非对称评估指标通常需要此值。
random_state
#每当随机化成为Scikit-learn算法的一部分时,
random_state
可以提供参数来控制使用的随机数生成器。 请注意,仅仅存在random_state
并不意味着始终使用随机化,因为它可能取决于另一个参数,例如shuffle
,正在设置。传递的值将对函数返回的结果的可重复性产生影响 (fit , split ,或任何其他功能,例如
k_means
).random_state
的值可能是:- 无(默认)
使用来自的全局随机状态实例
numpy.random
.多次调用该函数将重复使用同一实例,并产生不同的结果。- 的整数
使用由给定的整元种子的新随机数生成器。使用int将在不同的调用中产生相同的结果。然而,可能值得检查您的结果是否在许多不同的随机种子中稳定。流行的整随机种子是0和 42 .收件箱值必须在范围内
[0, 2**32 - 1]
.- A
numpy.random.RandomState
例如 使用提供的随机状态,仅影响同一随机状态实例的其他用户。多次调用该函数将重复使用同一实例,并产生不同的结果。
utils.check_random_state
在内部用于验证输入random_state
并返回一个RandomState
instance.有关如何控制scikit-learn对象的随机性并避免常见陷阱的更多详细信息,您可以参考 控制随机性 .
scoring
#根据对象,可以指定:
要最大化的分数函数(通常通过 cross validation ),
要报告的多个评分函数,
用于检查提前停止的评分功能,或
对于可视化相关对象,输出或绘图的评分功能
The score function can be a string accepted by
metrics.get_scorer
or a callable scorer, not to be confused with an evaluation metric, as the latter have a more diverse API.scoring
may also be set to None, in which case the estimator's score method is used. See 的 scoring 参数:定义模型评估规则 in the User Guide.在可以评估多个指标的情况下,
scoring
可以作为唯一字符串列表、以名称为键、可调用值为值的字典或返回字典的可调用对象给出。请注意,这确实如此 not 指定要最大化哪个分数函数,以及另一个参数,例如refit
可以用于此目的。的
scoring
参数使用验证和解释metrics.check_scoring
.verbose
#目前Scikit-learn中记录的处理并不非常一致,但当它作为选项提供时,
verbose
参数通常可用于选择不记录(设置为False)。任何True值都应该启用一些日志记录,但可能需要更大的整数(例如10以上)才能完整详细。 详细日志通常打印到标准输出。估计器不应在默认值的标准输出上产生任何输出verbose
设置.warm_start
#当在同一数据集上重复匹配估计器时,但针对多个参数值(例如,找到最大化性能的值,如中所示 grid search ),可以重新使用从先前参数值学习的模型的方面,从而节省时间。 当
warm_start
是真的,现有的 fitted 模型 attributes 用于在后续调用中初始化新模型 fit .请注意,这仅适用于某些模型和某些参数,甚至某些阶数的参数值。一般来说,之间存在相互作用
warm_start
以及控制估计器迭代次数的参数。对于从导入的估计器
ensemble
,warm_start
之间的互动n_estimators
或max_iter
.对于这些模型,通过len(estimators_)
或n_iter_
,对应于自模型初始化以来学习的估计器/迭代总数。因此,如果模型已经用N
估计者,以及fit
被称为n_estimators
或max_iter
设置为M
,模型将训练M - N
新的估计者。其他模型(通常使用基于梯度的求解器)具有不同的行为。他们都暴露了一个
max_iter
参数.所报告的n_iter_
对应于上次调用期间完成的迭代次数fit
而且最多是max_iter
.因此,我们不考虑自初始化以来估计器的状态。partial_fit 还保留了通话之间的模型,但不同之处:
warm_start
参数会发生变化,并且数据(或多或少)保持不变fit
;与partial_fit
,小批量数据更改和模型参数保持固定。有些情况下您想使用
warm_start
以适应不同但密切相关的数据。例如,最初可能适合数据的子集,然后微调完整数据集的参数搜索。对于分类,所有数据均以warm_start
调用fit
必须包括每个类别的样本。
属性#
查看概念 attribute .
classes_
#已知的类标签列表 classifier ,将每个标签映射到我们输出的模型表示中使用的数字索引。例如, predict_proba 列与
classes_
.为 multi-output 分类器,classes_
应该是一个列表列表,每个输出都有一个类列表。 对于每个输出,类都应该排序(数字排序,字符串按字典排序)。classes_
并且到索引的映射通常通过管理preprocessing.LabelEncoder
.components_
#形状的仿射变换矩阵
(n_components, n_features)
用于许多线性 transformers 哪里 n_components 是输出特征的数量和 n_features 是输入特征的数量。另见 coef_ 这是线性预测器的类似属性。
coef_
#广义线性模型的权重/系数矩阵 predictor ,的形状
(n_features,)
对于二元分类和单输出回归,(n_classes, n_features)
用于多类分类和(n_targets, n_features)
用于多输出回归。请注意,这不包括存储在intercept_
.如果可用,
feature_importances_
通常也不提供,但可以计算为每个要素条目的规范coef_
.另见 components_ 这与线性变压器的属性类似。
embedding_
#将训练数据嵌入 manifold learning 估计器,带形状
(n_samples, n_components)
,与的输出相同 fit_transform . 另见 labels_ .n_iter_
#当适应可能在收敛时停止的迭代估计器时实际执行的迭代次数。另见 max_iter .
feature_importances_
#形状的载体
(n_features,)
可提供的某种 predictors 提供模型预测中每个特征重要性的相对测量。labels_
#包含中每个训练数据样本的集群标签的载体 clusterers ,与的输出相同 fit_predict . 另见 embedding_ .
数据和示例属性#
查看概念 sample property .
groups
#用于交叉验证例行程序以识别相关的样本。每个值都是一个标识符,以便在支持中 CV splitter ,来自一些
groups
值可能不会同时出现在训练集和相应的测试集中。看到 分组数据的交叉验证迭代器 .sample_weight
#每个样本的相对重量。 直观地说,如果所有权重都是整数,则加权模型或分数应该相当于将样本重复权重中指定的次数时计算出的模型或分数。 权重可以指定为浮动,因此样本权重通常等效于恒定的正比例因子。
FixME这种解释在实践中总是如此吗?我们没有常见的测试。
一些估计器(例如决策树)支持负权重。FixME:许多估计器中可能不会测试或记录此特征或其缺失。
当模型的其他参数考虑一个区域中的样本数量时,情况并不完全相同,
min_samples
在cluster.DBSCAN
. 在这种情况下,样本的计数变成其权重的总和。在分类中,样本权重还可以指定为类的函数, class_weight 估计器 parameter .
X
#表示在训练和预测时观察到的数据,用作学习中的独立变量。 符号是大写表示它通常是一个矩阵(请参阅 rectangular ).当是矩阵时,每个样本都可以用 feature 载体,或 precomputed (dis)与每个训练样本的相似性。
X
也可能不是矩阵,并且可能需要 feature extractor 或 pairwise metric 在学习模型之前将其转化为模型。Xt
#缩写为“转变 X ".
y
#Y
#表示在训练时可能观察到的数据作为学习中的因变量,但在预测时不可用,并且通常是 target 预测。 符号可以是大写的,以表示它是一个矩阵,代表 multi-output 例如,目标;但通常我们使用
y
即使假设有多个输出,有时也会这样做。