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)#

解决使用随机梯度下降的线性单类支持向量机。

此实现旨在与核近似技术(例如 sklearn.kernel_approximation.Nystroem )一起使用,以获得类似于使用高斯核的 sklearn.svm.OneClassSVM 的结果。

更多信息请参阅 用户指南

Added in version 1.0.

Parameters:
nufloat, default=0.5

单类支持向量机的 nu 参数:训练误差分数的上限和支撑向量分数的下限。应在区间 (0, 1] 内。默认取 0.5。

fit_interceptbool, default=True

是否应估计截距。默认为 True。

max_iterint, default=1000

训练数据的最大遍数(即 epochs)。它仅影响 fit 方法的行为,而不影响 partial_fit 。默认为 1000。 值必须在范围 [1, inf) 内。

tolfloat or None, default=1e-3

停止准则。如果它不是 None,当(损失 > 上一次损失 - tol)时,迭代将停止。默认为 1e-3。 值必须在范围 [0.0, inf) 内。

shufflebool, default=True

是否应在每个 epoch 后打乱训练数据。默认为 True。

verboseint, default=0

详细级别。

random_stateint, RandomState instance or None, default=None

在打乱数据时使用的伪随机数生成器的种子。如果为 int,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

learning_rate{‘constant’, ‘optimal’, ‘invscaling’, ‘adaptive’}, default=’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 或未能增加验证分数(如果 early_stopping 为 True),当前学习率将除以 5。

eta0float, default=0.0

‘constant’、’invscaling’ 或 ‘adaptive’ 计划的初始学习率。默认值为 0.0,因为默认计划 ‘optimal’ 不使用 eta0。 值必须在范围 [0.0, inf) 内。

power_tfloat, default=0.5

反比例缩放学习率的指数。 值必须在范围 (-inf, inf) 内。

warm_startbool, default=False

当设置为 True 时,重用上一次调用 fit 的解决方案作为初始化,否则,只擦除之前的解决方案。 请参阅 术语表

反复调用 fit 或 partial_fit 当 warm_start 为 True 时,可能会导致与单次调用 fit 不同的解决方案,因为数据被打乱的方式不同。 如果使用动态学习率,学习率会根据已看到的样本数量进行调整。调用 fit 会重置此计数器,而 partial_fit 将增加现有计数器。

averagebool or int, default=False

当设置为 True 时,计算平均 SGD 权重并将其存储在 coef_ 属性中。如果设置为大于 1 的 int,则在看到的总样本数达到 average 后开始平均。因此 average=10 将在看到 10 个样本后开始平均。

Attributes:
coef_ndarray of shape (1, n_features)

分配给特征的权重。

offset_ndarray of shape (1,)

用于从原始分数定义决策函数的偏移量。 我们有关系:decision_function = score_samples - offset。

n_iter_int

达到停止准则的实际迭代次数。

t_int

训练期间执行的权重更新次数。 与 (n_iter_ * n_samples + 1) 相同。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

sklearn.svm.OneClassSVM

无监督异常值检测。

Notes

此估计器在训练样本数量上具有线性复杂度,因此比 sklearn.svm.OneClassSVM 实现更适合具有大量训练样本的数据集(例如 > 10,000)。

Examples

>>> 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)#

Signed distance to the separating hyperplane.

有符号距离对于内点为正,对于外点为负。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

测试数据。

Returns:
decarray-like, shape (n_samples,)

样本的决策函数值。

densify()#

将系数矩阵转换为密集数组格式。

coef_ 成员(回)转换为 numpy.ndarray。这是 coef_ 的默认格式,并且是拟合所必需的,因此只有在之前已经稀疏化的模型上才需要调用此方法;否则,它是一个空操作。

Returns:
self

拟合的估计器。

fit(X, y=None, coef_init=None, offset_init=None, sample_weight=None)#

拟合使用随机梯度下降的线性单类支持向量机。

这解决了单类支持向量机原始优化问题的等价优化问题,并返回一个权重向量 w和一个偏移量rho,使得决策函数由<w, x> - rho给出。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

训练数据。

y忽略

未使用,为保持API一致性而存在。

coef_initarray, shape (n_classes, n_features)

用于优化热启动的初始系数。

offset_initarray, shape (n_classes,)

用于优化热启动的初始偏移量。

sample_weightarray-like, shape (n_samples,), 可选

应用于单个样本的权重。 如果未提供,则假设均匀权重。如果指定了class_weight(通过构造函数传递),这些权重将与class_weight相乘。

Returns:
selfobject

返回已拟合的self实例。

fit_predict(X, y=None, **kwargs)#

对X进行拟合并返回X的标签。

对于异常值返回-1,对于正常值返回1。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入样本。

y忽略

未使用,为了API一致性而存在。

**kwargsdict

传递给 fit 的参数。

Added in version 1.4.

Returns:
yndarray,形状为 (n_samples,)

正常值为1,异常值为-1。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

partial_fit(X, y=None, sample_weight=None)#

拟合使用随机梯度下降的线性单类支持向量机。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

训练数据的一个子集。

yIgnored

未使用,为了保持API一致性而存在。

sample_weightarray-like, shape (n_samples,), 可选

应用于单个样本的权重。 如果未提供,则假设均匀权重。

Returns:
selfobject

返回一个已拟合的self实例。

predict(X)#

返回样本的标签(1表示内点,-1表示离群点)。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

测试数据。

Returns:
yarray, shape (n_samples,)

样本的标签。

score_samples(X)#

原始样本的评分函数。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

测试数据。

Returns:
score_samplesarray-like, shape (n_samples,)

样本的无偏移评分函数值。

set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', offset_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to 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 to 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:
coef_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for coef_init parameter in fit .

offset_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for offset_init parameter in fit .

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM#

Request metadata passed to the partial_fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to partial_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 to partial_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:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in partial_fit .

Returns:
selfobject

The updated object.

sparsify()#

将系数矩阵转换为稀疏格式。

coef_ 成员转换为 scipy.sparse 矩阵,对于 L1 正则化模型来说,这种格式在内存和存储方面比通常的 numpy.ndarray 表示更高效。

intercept_ 成员不会被转换。

Returns:
self

拟合的估计器。

Notes

对于非稀疏模型,即当 coef_ 中没有很多零时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。一个经验法则是,零元素的数量,可以通过 (coef_ == 0).sum() 计算,必须超过 50% 才能提供显著的效益。

调用此方法后,进一步使用 partial_fit 方法(如果有)进行拟合将不起作用,直到您调用 densify。