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 方法进行的进一步拟合(如果有)将不起作用。