朴素激进分类器#
- 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)[source]#
朴素激进分类器。
详见用户指南。
- 参数:
- C浮点型,默认值=1.0
最大步长(正则化)。默认为1.0。
- fit_intercept布尔型,默认值=True
是否估计截距项。如果为False,则假定数据已居中。
- max_iter整型,默认值=1000
训练数据的最大遍历次数(即epochs)。它只影响
fit
方法的行为,而不影响partial_fit
方法。0.19 版本新增。
- tol浮点型或 None,默认值=1e-3
停止准则。如果不是 None,则当 (损失 > 上一个损失 - tol) 时,迭代将停止。
0.19 版本新增。
- early_stopping布尔型,默认值=False
是否使用早停法在验证分数不再提高时终止训练。如果设置为 True,它将自动留出训练数据的一个分层子集作为验证集,并在验证分数连续
n_iter_no_change
个 epoch 未至少提高tol
时终止训练。0.20 版本新增。
- validation_fraction浮点型,默认值=0.1
用于早停法的训练数据中作为验证集保留的比例。必须介于0和1之间。仅在 early_stopping 为 True 时使用。
0.20 版本新增。
- n_iter_no_change整型,默认值=5
在早停前,等待验证分数没有改善的迭代次数。
0.20 版本新增。
- shuffle布尔型,默认值=True
每个 epoch 后是否应打乱训练数据。
- verbose整型,默认值=0
详细程度。
- loss字符串,默认值="hinge"
要使用的损失函数:hinge:等同于参考文献中的PA-I。squared_hinge:等同于参考文献中的PA-II。
- n_jobs整型或 None,默认值=None
用于执行OVA(One Versus All,多类别问题)计算的CPU数量。
None
表示 1,除非在joblib.parallel_backend
上下文。-1
表示使用所有处理器。详见术语表以获取更多详情。- random_state整型,RandomState 实例,默认值=None
当
shuffle
设置为True
时,用于打乱训练数据。传入一个整型值可确保多次函数调用获得可重现的输出。详见术语表。- warm_start布尔型,默认值=False
当设置为 True 时,重用上次调用 fit 的解决方案作为初始化;否则,擦除之前的解决方案。详见术语表。
当 warm_start 为 True 时,重复调用 fit 或 partial_fit 可能会导致与单次调用 fit 不同的解决方案,因为数据打乱的方式不同。
- class_weight字典,{类别标签: 权重} 或 “balanced” 或 None,默认值=None
class_weight fit 参数的预设。
与类别相关的权重。如果未给出,则所有类别都被认为权重为一。
“balanced” 模式使用 y 的值根据输入数据中类别频率的倒数自动调整权重,计算方式为
n_samples / (n_classes * np.bincount(y))
。0.17 版本新增:参数 class_weight 用于自动加权样本。
- average布尔型或整型,默认值=False
当设置为 True 时,计算平均SGD权重并将其结果存储在
coef_
属性中。如果设置为大于 1 的整型,则一旦观察到的样本总数达到 average,就开始平均。因此,average=10 意味着在看到 10 个样本后开始平均。0.19 版本新增:参数 average 用于在SGD中使用权重平均。
- 属性:
- coef_形状为 (1, n_features) 的 ndarray(如果 n_classes == 2,否则为 (n_classes, n_features))
分配给特征的权重。
- intercept_形状为 (1,) 的 ndarray(如果 n_classes == 2,否则为 (n_classes,))
决策函数中的常数。
- n_features_in_整型
在fit期间看到的特征数量。
0.24 版本新增。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在fit期间看到的特征名称。仅当
X
的特征名称均为字符串时定义。1.0 版本新增。
- n_iter_整型
达到停止准则的实际迭代次数。对于多类别拟合,它是所有二元拟合中的最大值。
- classes_形状为 (n_classes,) 的 ndarray
唯一的类别标签。
- t_整型
训练期间执行的权重更新次数。等同于
(n_iter_ * n_samples + 1)
。
另请参阅
SGDClassifier
增量训练的逻辑回归。
Perceptron
线性感知器分类器。
参考文献
在线朴素激进算法 <http://jmlr.csail.mit.edu/papers/volume7/crammer06a/crammer06a.pdf> K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR (2006)
示例
>>> 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)[source]#
预测样本的置信度分数。
样本的置信度分数与该样本到超平面的有符号距离成正比。
- 参数:
- X{数组型,稀疏矩阵},形状为 (n_samples, n_features)
我们想获取置信度分数的数据矩阵。
- 返回:
- scores形状为 (n_samples,) 或 (n_samples, n_classes) 的 ndarray
每
(n_samples, n_classes)
组合的置信度分数。在二元情况下,self.classes_[1]
的置信度分数(其中 >0 表示将预测此类别)。
- densify()[source]#
将系数矩阵转换为密集数组格式。
将
coef_
成员(恢复)转换为 numpy.ndarray。这是coef_
的默认格式,拟合时必需,因此只有在模型之前被稀疏化过时才需要调用此方法;否则,它是一个空操作。- 返回:
- self
已拟合的估计器。
- fit(X, y, coef_init=None, intercept_init=None)[source]#
使用朴素激进算法拟合线性模型。
- 参数:
- X{数组型,稀疏矩阵},形状为 (n_samples, n_features)
训练数据。
- y形状为 (n_samples,) 的数组型
目标值。
- coef_init形状为 (n_classes, n_features) 的 ndarray
用于热启动优化的初始系数。
- intercept_init形状为 (n_classes,) 的 ndarray
用于热启动优化的初始截距。
- 返回:
- self对象
已拟合的估计器。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南关于路由机制如何工作。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔型,默认值=True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称与其值之间的映射。
- partial_fit(X, y, classes=None)[source]#
使用朴素激进算法拟合线性模型。
- 参数:
- X{数组型,稀疏矩阵},形状为 (n_samples, n_features)
训练数据的子集。
- y形状为 (n_samples,) 的数组型
目标值的子集。
- classes形状为 (n_classes,) 的 ndarray
所有 partial_fit 调用中的类别。可以通过
np.unique(y_all)
获取,其中 y_all 是整个数据集的目标向量。第一次调用 partial_fit 时需要此参数,后续调用可以省略。请注意,y 不需要包含classes
中的所有标签。
- 返回:
- self对象
已拟合的估计器。
- predict(X)[source]#
预测 X 中样本的类别标签。
- 参数:
- X{数组型,稀疏矩阵},形状为 (n_samples, n_features)
我们想获取预测结果的数据矩阵。
- 返回:
- y_pred形状为 (n_samples,) 的 ndarray
包含每个样本类别标签的向量。
- score(X, y, sample_weight=None)[source]#
返回在提供的数据和标签上的准确率。
在多标签分类中,这是子集准确率,这是一个严格的指标,因为它要求每个样本的每个标签集都必须被正确预测。
- 参数:
- X形状为 (n_samples, n_features) 的数组型
测试样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的数组型
X
的真实标签。- sample_weight形状为 (n_samples,) 的数组型,默认值=None
样本权重。
- 返回:
- score浮点型
self.predict(X)
相对于y
的平均准确率。
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [source]#
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请查看用户指南关于路由机制如何工作。每个参数的选项是
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则忽略该请求。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求,而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器用作元估计器的子估计器时才相关,例如在
Pipeline
中使用。否则无效。- 参数:
- coef_init字符串,True,False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
中coef_init
参数的元数据路由。- intercept_init字符串,True,False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
中intercept_init
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **params字典
估计器参数。
- 返回:
- self估计器实例
估计器实例。
- set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [source]#
请求传递给
partial_fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请查看用户指南关于路由机制如何工作。每个参数的选项是
True
:请求元数据,如果提供则传递给partial_fit
。如果未提供元数据,则忽略该请求。False
:不请求元数据,元估计器不会将其传递给partial_fit
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求,而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器用作元估计器的子估计器时才相关,例如在
Pipeline
中使用。否则无效。- 参数:
- classes字符串,True,False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
partial_fit
中classes
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [source]#
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时才相关(参见sklearn.set_config
)。请查看用户指南关于路由机制如何工作。每个参数的选项是
True
:请求元数据,如果提供则传递给score
。如果未提供元数据,则忽略该请求。False
:不请求元数据,元估计器不会将其传递给score
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求,而不更改其他参数。1.3 版本新增。
注意
此方法仅当此估计器用作元估计器的子估计器时才相关,例如在
Pipeline
中使用。否则无效。- 参数:
- sample_weight字符串,True,False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- sparsify()[source]#
将系数矩阵转换为稀疏格式。
将
coef_
成员转换为 scipy.sparse 矩阵,对于L1正则化模型,这比通常的 numpy.ndarray 表示法在内存和存储方面效率更高。intercept_
成员未被转换。- 返回:
- self
已拟合的估计器。
注意
对于非稀疏模型,即当
coef_
中没有太多零时,这实际上可能会 增加 内存使用量,因此请谨慎使用此方法。经验法则是,零元素的数量(可以通过(coef_ == 0).sum()
计算)必须超过50%才能提供显著的好处。调用此方法后,除非您再次调用 densify,否则使用 partial_fit 方法(如果有)进行进一步拟合将无效。