SGDOneClassSVM#
- class sklearn.linear_model.SGDOneClassSVM(nu=0.5, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, random_state=None, learning_rate='optimal', eta0=0.0, power_t=0.5, warm_start=False, average=False)[source]#
使用随机梯度下降法求解线性单类 SVM。
此实现旨在与核近似技术(例如
sklearn.kernel_approximation.Nystroem
)一起使用,以获得与默认使用高斯核的sklearn.svm.OneClassSVM
类似的结果。请在用户指南中阅读更多内容。
版本 1.0 新增。
- 参数:
- nu浮点型,默认值=0.5
单类 SVM 的 nu 参数:训练误差分数的上限和支持向量分数的下限。应在区间 (0, 1] 内。默认值为 0.5。
- fit_intercept布尔型,默认值=True
是否应估计截距。默认为 True。
- max_iter整型,默认值=1000
训练数据的最大遍历次数(也称为 epochs)。它仅影响
fit
方法的行为,而不影响partial_fit
。默认值为 1000。值必须在[1, inf)
范围内。- tol浮点型或 None,默认值=1e-3
停止准则。如果不是 None,当 (loss > previous_loss - tol) 时,迭代将停止。默认值为 1e-3。值必须在
[0.0, inf)
范围内。- shuffle布尔型,默认值=True
是否在每个 epoch 后打乱训练数据。默认为 True。
- verbose整型,默认值=0
详细程度。
- random_state整型,RandomState 实例或 None,默认值=None
用于打乱数据时伪随机数生成器的种子。如果为整型,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是
np.random
使用的 RandomState 实例。- learning_rate{‘constant’, ‘optimal’, ‘invscaling’, ‘adaptive’},默认值=’optimal’
与
fit
一起使用的学习率调度。(如果使用partial_fit
,学习率必须直接控制)。‘constant’:
eta = eta0
‘optimal’:
eta = 1.0 / (alpha * (t + t0))
,其中 t0 由 Leon Bottou 提出的启发式方法选择。‘invscaling’:
eta = eta0 / pow(t, power_t)
‘adaptive’:eta = eta0,只要训练损失持续降低。每次 n_iter_no_change 个连续的 epoch 未能将训练损失降低 tol 或未能将验证分数提高 tol(如果 early_stopping 为 True),则当前学习率除以 5。
- eta0浮点型,默认值=0.0
‘constant’、‘invscaling’ 或 ‘adaptive’ 调度方案的初始学习率。默认值为 0.0,因为 eta0 不用于默认的 ‘optimal’ 调度方案。值必须在
[0.0, inf)
范围内。- power_t浮点型,默认值=0.5
逆尺度学习率的指数。值必须在
(-inf, inf)
范围内。- warm_start布尔型,默认值=False
设置为 True 时,重用上次调用 fit 的解决方案作为初始化,否则,擦除之前的解决方案。请参阅术语表。
当 warm_start 为 True 时,重复调用 fit 或 partial_fit 可能会导致与仅调用一次 fit 不同的解决方案,因为数据打乱的方式不同。如果使用动态学习率,学习率会根据已见的样本数量进行调整。调用
fit
会重置此计数器,而partial_fit
将导致现有计数器增加。- average布尔型或整型,默认值=False
设置为 True 时,计算平均 SGD 权重并将结果存储在
coef_
属性中。如果设置为大于 1 的整数,则一旦已见样本总数达到 average,就开始平均。因此,average=10
表示在看到 10 个样本后开始平均。
- 属性:
- coef_形状为 (1, n_features) 的 ndarray
分配给特征的权重。
- offset_形状为 (1,) 的 ndarray
用于从原始分数定义决策函数的偏移量。我们有以下关系:decision_function = score_samples - offset。
- n_iter_整型
达到停止准则的实际迭代次数。
- t_整型
训练期间执行的权重更新次数。与
(n_iter_ * n_samples + 1)
相同。- n_features_in_整型
在拟合期间看到的特征数量。
版本 0.24 新增。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在拟合期间看到的特征名称。仅当
X
的所有特征名称均为字符串时才定义。版本 1.0 新增。
另请参阅
sklearn.svm.OneClassSVM
无监督异常值检测。
注意
该估计器在训练样本数量方面具有线性复杂度,因此比
sklearn.svm.OneClassSVM
实现更适合具有大量训练样本(例如 > 10,000)的数据集。示例
>>> import numpy as np >>> from sklearn import linear_model >>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]]) >>> clf = linear_model.SGDOneClassSVM(random_state=42) >>> clf.fit(X) SGDOneClassSVM(random_state=42)
>>> print(clf.predict([[4, 4]])) [1]
- decision_function(X)[source]#
到分离超平面的有符号距离。
有符号距离对于内点为正,对于异常点为负。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回:
- dec类数组,形状 (n_samples,)
样本的决策函数值。
- densify()[source]#
将系数矩阵转换为密集数组格式。
将
coef_
成员(转换回)numpy.ndarray。这是coef_
的默认格式,拟合时需要。因此,仅在之前稀疏化过的模型上才需要调用此方法;否则,它是一个空操作。- 返回:
- self
已拟合的估计器。
- fit(X, y=None, coef_init=None, offset_init=None, sample_weight=None)[source]#
使用随机梯度下降法拟合线性单类 SVM。
这解决了单类 SVM 原始优化问题的等效优化问题,并返回一个权重向量 w 和一个偏移量 rho,使得决策函数由
- rho 给出。 - 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
训练数据。
- y已忽略
未使用,按约定为保持 API 一致性而存在。
- coef_init数组,形状 (n_classes, n_features)
用于热启动优化的初始系数。
- offset_init数组,形状 (n_classes,)
用于热启动优化的初始偏移量。
- sample_weight类数组,形状 (n_samples,),可选
应用于单个样本的权重。如果未提供,则假定为均匀权重。如果指定了 class_weight(通过构造函数传入),则这些权重将与 class_weight 相乘。
- 返回:
- self对象
返回一个已拟合的自身实例。
- fit_predict(X, y=None, **kwargs)[source]#
在 X 上执行拟合并返回 X 的标签。
异常值返回 -1,内点返回 1。
- 参数:
- X{类数组,稀疏矩阵},形状为 (n_samples, n_features)
输入样本。
- y已忽略
未使用,按约定为保持 API 一致性而存在。
- **kwargs字典
要传递给
fit
的参数。版本 1.4 新增。
- 返回:
- y形状为 (n_samples,) 的 ndarray
内点为 1,异常点为 -1。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个封装路由信息的
MetadataRequest
对象。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔型,默认值=True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称映射到其值。
- partial_fit(X, y=None, sample_weight=None)[source]#
使用随机梯度下降法拟合线性单类 SVM。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
训练数据的子集。
- y已忽略
未使用,按约定为保持 API 一致性而存在。
- sample_weight类数组,形状 (n_samples,),可选
应用于单个样本的权重。如果未提供,则假定为均匀权重。
- 返回:
- self对象
返回一个已拟合的自身实例。
- predict(X)[source]#
返回样本的标签(1 表示内点,-1 表示异常点)。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回:
- y数组,形状 (n_samples,)
样本的标签。
- score_samples(X)[source]#
样本的原始评分函数。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回:
- score_samples类数组,形状 (n_samples,)
样本的未偏移评分函数值。
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', offset_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM [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
参数的元数据路由。- offset_init字符串、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
方法中offset_init
参数的元数据路由。- sample_weight字符串、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
方法中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **params字典
估计器参数。
- 返回:
- self估计器实例
估计器实例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM [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
中使用。否则无效。- 参数:
- sample_weight字符串、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
partial_fit
方法中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- sparsify()[source]#
将系数矩阵转换为稀疏格式。
将
coef_
成员转换为 scipy.sparse 矩阵,这对于 L1 正则化模型来说,比通常的 numpy.ndarray 表示法更节省内存和存储空间。intercept_
成员未转换。- 返回:
- self
已拟合的估计器。
注意
对于非稀疏模型,即当
coef_
中零元素不多时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。经验法则是,零元素的数量(可通过(coef_ == 0).sum()
计算)必须超过 50% 才能提供显著的优势。调用此方法后,除非您调用 `densify`,否则使用 partial_fit 方法进行的进一步拟合(如果有)将不起作用。