PassiveAggressiveClassifier#
- class sklearn.linear_model.PassiveAggressiveClassifier(*, C=1.0, fit_intercept=True, max_iter=1000, tol=0.001, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, shuffle=True, verbose=0, loss='hinge', n_jobs=None, random_state=None, warm_start=False, class_weight=None, average=False)#
被动攻击分类器。
更多信息请参阅 用户指南 。
- Parameters:
- Cfloat, 默认=1.0
最大步长(正则化)。默认为1.0。
- fit_interceptbool, 默认=True
是否应该估计截距。如果为False,则假定数据已经中心化。
- max_iterint, 默认=1000
训练数据的最大遍数(即epochs)。它仅影响
fit
方法的行为,而不影响:meth:~sklearn.linear_model.PassiveAggressiveClassifier.partial_fit
方法。Added in version 0.19.
- tolfloat 或 None, 默认=1e-3
停止标准。如果它不是None,当(损失 > 上一次损失 - tol)时,迭代将停止。
Added in version 0.19.
- early_stoppingbool, 默认=False
是否使用提前停止来终止训练,当验证分数没有提高时。如果设置为True,它将自动留出一部分训练数据作为验证集,并在验证分数至少连续
n_iter_no_change
个epoch没有提高tol
时终止训练。Added in version 0.20.
- validation_fractionfloat, 默认=0.1
留出作为验证集的训练数据比例。必须在0和1之间。仅在early_stopping为True时使用。
Added in version 0.20.
- n_iter_no_changeint, 默认=5
在提前停止之前等待没有改善的迭代次数。
Added in version 0.20.
- shufflebool, 默认=True
是否应在每个epoch后打乱训练数据。
- verboseint, 默认=0
详细级别。
- lossstr, 默认=”hinge”
要使用的损失函数: hinge: 相当于参考论文中的PA-I。 squared_hinge: 相当于参考论文中的PA-II。
- n_jobsint 或 None, 默认=None
用于OVA(一对一,对于多类问题)计算的CPU数量。
None
意味着1,除非在:obj:joblib.parallel_backend
上下文中。-1
意味着使用所有处理器。有关更多详细信息,请参见:term:Glossary <n_jobs>
。- random_stateint, RandomState 实例, 默认=None
用于在
shuffle
设置为True
时打乱训练数据。传递一个int以在多次函数调用中获得可重复的输出。 请参见:term:Glossary <random_state>
。- warm_startbool, 默认=False
当设置为True时,重用上一次调用fit的解决方案作为初始化,否则,只擦除之前的解决方案。 请参见:term:
the Glossary <warm_start>
。当warm_start为True时,反复调用fit或partial_fit可能会导致与一次性调用fit不同的解决方案,因为数据被打乱的方式不同。
- class_weightdict, {class_label: weight} 或 “balanced” 或 None, 默认=None
class_weight fit参数的预设。
与类关联的权重。如果未给出,则假定所有类的权重为1。
“balanced”模式使用y的值自动调整权重,与输入数据中的类频率成反比,如
n_samples / (n_classes * np.bincount(y))
。Added in version 0.17: 参数 class_weight 自动加权样本。
- averagebool 或 int, 默认=False
当设置为True时,计算平均SGD权重,并将结果存储在
coef_
属性中。如果设置为大于1的int,则在看到的样本总数达到average后开始平均。因此average=10将在看到10个样本后开始平均。Added in version 0.19: 参数 average 在SGD中使用权重平均。
- Attributes:
- coef_ndarray of shape (1, n_features) if n_classes == 2 else (n_classes, n_features)
分配给特征的权重。
- intercept_ndarray of shape (1,) if n_classes == 2 else (n_classes,)
决策函数中的常数。
- n_features_in_int
在:term:
fit
期间看到的特征数量。Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在:term:
fit
期间看到的特征名称。仅当X
的特征名称均为字符串时定义。Added in version 1.0.
- n_iter_int
达到停止标准所需的实际迭代次数。对于多类拟合,它是每个二元拟合中的最大值。
- classes_ndarray of shape (n_classes,)
唯一的类标签。
- t_int
在训练期间执行的权重更新次数。 等同于
(n_iter_ * n_samples + 1)
。
See also
SGDClassifier
增量训练的逻辑回归。
Perceptron
线性感知器分类器。
References
在线被动-攻击算法 <http://jmlr.csail.mit.edu/papers/volume7/crammer06a/crammer06a.pdf> K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR (2006)
Examples
>>> from sklearn.linear_model import PassiveAggressiveClassifier >>> from sklearn.datasets import make_classification >>> X, y = make_classification(n_features=4, random_state=0) >>> clf = PassiveAggressiveClassifier(max_iter=1000, random_state=0, ... tol=1e-3) >>> clf.fit(X, y) PassiveAggressiveClassifier(random_state=0) >>> print(clf.coef_) [[0.26642044 0.45070924 0.67251877 0.64185414]] >>> print(clf.intercept_) [1.84127814] >>> print(clf.predict([[0, 0, 0, 0]])) [1]
- decision_function(X)#
预测样本的置信度分数。
样本的置信度分数与其到超平面的有符号距离成正比。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
我们想要获取置信度分数的数据矩阵。
- Returns:
- scoresndarray,形状为 (n_samples,) 或 (n_samples, n_classes)
每个
(n_samples, n_classes)
组合的置信度分数。在二分类情况下,self.classes_[1]
的置信度分数,其中 >0 表示会预测这个类别。
- densify()#
将系数矩阵转换为密集数组格式。
将
coef_
成员(回)转换为 numpy.ndarray。这是coef_
的默认格式,并且是拟合所必需的,因此只有在之前已经稀疏化的模型上才需要调用此方法;否则,它是一个空操作。- Returns:
- self
拟合的估计器。
- fit(X, y, coef_init=None, intercept_init=None)#
拟合使用被动攻击算法的线性模型。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
训练数据。
- yarray-like,形状为 (n_samples,)
目标值。
- coef_initndarray,形状为 (n_classes, n_features)
用于优化预热初始化的系数。
- intercept_initndarray,形状为 (n_classes,)
用于优化预热初始化的截距。
- Returns:
- selfobject
拟合的估计器。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- partial_fit(X, y, classes=None)#
拟合使用被动攻击算法的线性模型。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
训练数据的子集。
- yarray-like,形状为 (n_samples,)
目标值的子集。
- classesndarray,形状为 (n_classes,)
所有调用 partial_fit 时的类别。 可以通过
np.unique(y_all)
获得,其中 y_all 是整个数据集的目标向量。 此参数在第一次调用 partial_fit 时是必需的,在后续调用中可以省略。 注意,y 不需要包含classes
中的所有标签。
- Returns:
- selfobject
拟合的估计器。
- predict(X)#
预测X中的样本类别标签。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
我们希望获取预测的数据矩阵。
- Returns:
- y_predndarray,形状为 (n_samples,)
包含每个样本类别标签的向量。
- score(X, y, sample_weight=None)#
返回给定测试数据和标签的平均准确率。
在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
测试样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组
` X`的真实标签。
- sample_weight形状为 (n_samples,) 的类数组,默认=None
样本权重。
- Returns:
- scorefloat
self.predict(X)
相对于y
的平均准确率。
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier #
Request metadata passed to the
fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- coef_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
coef_init
parameter infit
.- intercept_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
intercept_init
parameter infit
.
- Returns:
- selfobject
The updated object.
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier #
Request metadata passed to the
partial_fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed topartial_fit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it topartial_fit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
classes
parameter inpartial_fit
.
- Returns:
- selfobject
The updated object.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weight
parameter inscore
.
- Returns:
- selfobject
The updated object.
- sparsify()#
将系数矩阵转换为稀疏格式。
将
coef_
成员转换为 scipy.sparse 矩阵,对于 L1 正则化模型来说,这种格式在内存和存储方面比通常的 numpy.ndarray 表示更高效。intercept_
成员不会被转换。- Returns:
- self
拟合的估计器。
Notes
对于非稀疏模型,即当
coef_
中没有很多零时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。一个经验法则是,零元素的数量,可以通过(coef_ == 0).sum()
计算,必须超过 50% 才能提供显著的效益。调用此方法后,进一步使用 partial_fit 方法(如果有)进行拟合将不起作用,直到您调用 densify。