OneClassSVM#

class sklearn.svm.OneClassSVM(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, nu=0.5, shrinking=True, cache_size=200, verbose=False, max_iter=-1)[source]#

无监督异常检测。

估计高维分布的支持集。

该实现基于libsvm。

用户指南中阅读更多内容。

参数:
kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} 或可调用对象, 默认为’rbf’

指定算法中使用的核函数类型。如果未给定,则使用'rbf'。如果给定可调用对象,则用于预计算核矩阵。

degreeint, 默认为3

多项式核函数('poly')的次数。必须是非负数。所有其他核函数会忽略此参数。

gamma{‘scale’, ‘auto’} 或 float, 默认为’scale’

‘rbf’、‘poly’和‘sigmoid’核函数的系数。

  • 如果传入gamma='scale'(默认),则使用1 / (n_features * X.var()) 作为gamma的值,

  • 如果为‘auto’,则使用1 / n_features

  • 如果为浮点数,则必须是非负数。

0.22 版本中修改: gamma的默认值从‘auto’更改为‘scale’。

coef0float, 默认为0.0

核函数中的独立项。仅在‘poly’和‘sigmoid’中具有重要意义。

tolfloat, 默认为1e-3

停止准则的容差。

nufloat, 默认为0.5

训练错误分数上限和支持向量分数下限。应在区间 (0, 1] 内。默认值为0.5。

shrinkingbool, 默认为True

是否使用收缩启发式算法。详见用户指南

cache_sizefloat, 默认为200

指定核缓存的大小(MB)。

verbosebool, 默认为False

启用详细输出。请注意,此设置利用了libsvm中的每个进程运行时设置,如果启用,在多线程环境中可能无法正常工作。

max_iterint, 默认为-1

求解器内迭代次数的硬性限制,或-1表示无限制。

属性:
coef_形状为 (1, n_features) 的 ndarray

kernel="linear"时分配给特征的权重。

dual_coef_形状为 (1, n_SV) 的 ndarray

决策函数中支持向量的系数。

fit_status_int

如果正确拟合则为0,否则为1(将发出警告)

intercept_形状为 (1,) 的 ndarray

决策函数中的常数。

n_features_in_int

fit期间看到的特征数量。

0.24 版本中新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

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

1.0 版本中新增。

n_iter_int

优化例程拟合模型所运行的迭代次数。

1.1 版本中新增。

n_support_形状为 (n_classes,),数据类型为 int32 的 ndarray

每个类的支持向量数量。

offset_float

用于根据原始分数定义决策函数的偏移量。我们有关系式:decision_function = score_samples - offset_。该偏移量与intercept_相反,提供此参数是为了与其他异常检测算法保持一致性。

0.20 版本中新增。

shape_fit_形状为 (n_dimensions_of_X,) 的 int 元组

训练向量X的数组维度。

support_形状为 (n_SV,) 的 ndarray

支持向量的索引。

support_vectors_形状为 (n_SV, n_features) 的 ndarray

支持向量。

另请参阅

sklearn.linear_model.SGDOneClassSVM

使用随机梯度下降求解线性单类SVM。

sklearn.neighbors.LocalOutlierFactor

使用局部异常因子(LOF)的无监督异常检测。

sklearn.ensemble.IsolationForest

Isolation Forest 算法。

示例

>>> from sklearn.svm import OneClassSVM
>>> X = [[0], [0.44], [0.45], [0.46], [1]]
>>> clf = OneClassSVM(gamma='auto').fit(X)
>>> clf.predict(X)
array([-1,  1,  1,  1, -1])
>>> clf.score_samples(X)
array([1.7798, 2.0547, 2.0556, 2.0561, 1.7332])

有关更详细的示例,请参见物种分布建模

decision_function(X)[source]#

到分离超平面的有符号距离。

内点有符号距离为正,异常点为负。

参数:
X形状为 (n_samples, n_features) 的类数组

数据矩阵。

返回:
dec形状为 (n_samples,) 的 ndarray

返回样本的决策函数。

fit(X, y=None, sample_weight=None)[source]#

检测样本集 X 的软边界。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

样本集,其中n_samples是样本数量,n_features是特征数量。

y忽略

不使用,按照惯例为API一致性而存在。

sample_weight形状为 (n_samples,) 的类数组, 默认为None

每个样本的权重。按样本重新缩放C。较高的权重会使分类器更侧重于这些点。

返回:
self对象

已拟合的估计器。

注意事项

如果 X 不是 C-顺序的连续数组,则会进行复制。

fit_predict(X, y=None, **kwargs)[source]#

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

异常点返回 -1,内点返回 1。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

输入样本。

y忽略

不使用,按照惯例为API一致性而存在。

**kwargsdict

要传递给fit的参数。

1.4 版本中新增。

返回:
y形状为 (n_samples,) 的 ndarray

内点为 1,异常点为 -1。

get_metadata_routing()[source]#

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

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

返回:
routingMetadataRequest

一个包含路由信息的MetadataRequest对象。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, 默认为True

如果为True,将返回此估计器以及所包含的作为估计器的子对象的参数。

返回:
paramsdict

参数名称及其对应的值。

predict(X)[source]#

对 X 中的样本执行分类。

对于单类模型,返回 +1 或 -1。

参数:
X形状为 (n_samples, n_features) 或 (n_samples_test, n_samples_train) 的 {类数组, 稀疏矩阵}

对于 kernel=”precomputed”,X 的预期形状为 (n_samples_test, n_samples_train)。

返回:
y_pred形状为 (n_samples,) 的 ndarray

X 中样本的类别标签。

score_samples(X)[source]#

样本的原始评分函数。

参数:
X形状为 (n_samples, n_features) 的类数组

数据矩阵。

返回:
score_samples形状为 (n_samples,) 的 ndarray

返回样本的(未偏移的)评分函数。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') OneClassSVM[source]#

请求传递给fit方法的元数据。

请注意,此方法仅当enable_metadata_routing=True时才相关(请参阅sklearn.set_config)。请参阅用户指南了解路由机制的工作原理。

每个参数的选项是:

  • True: 请求元数据,如果提供则传递给fit。如果未提供元数据,则请求被忽略。

  • False: 不请求元数据,元估计器不会将其传递给fit

  • None: 不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str: 元数据应使用此给定别名而非原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

1.3 版本中新增。

注意

此方法仅当此估计器用作元估计器的子估计器时才相关,例如在Pipeline内部使用时。否则它没有效果。

参数:
sample_weightstr, True, False, 或 None, 默认为sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight参数的元数据路由。

返回:
self对象

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。