一类支持向量机#

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_shape 为 (1, n_features) 的ndarray

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

dual_coef_shape 为 (1, n_SV) 的ndarray

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

fit_status_int

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

intercept_shape 为 (1,) 的ndarray

决策函数中的常数。

n_features_in_int

拟合期间看到的特征数量。

0.24版本中添加。

feature_names_in_shape 为 (n_features_in_,) 的ndarray

拟合期间看到的特征名称。仅当X具有全是字符串的特征名称时才定义。

1.0版本中添加。

n_iter_int

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

1.1版本中添加。

n_support_shape 为 (n_classes,),dtype=int32 的ndarray

每个类的支持向量数量。

offset_float

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

0.20版本中添加。

shape_fit_shape 为 (n_dimensions_of_X,) 的int元组

训练向量X的数组维度。

support_shape 为 (n_SV,) 的ndarray

支持向量的索引。

support_vectors_shape 为 (n_SV, n_features) 的ndarray

支持向量。

另请参阅

sklearn.linear_model.SGDOneClassSVM

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

sklearn.neighbors.LocalOutlierFactor

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

sklearn.ensemble.IsolationForest

孤立森林算法。

示例

>>> 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...])

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

property coef_#

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

返回值:
shape 为 (n_features, n_classes) 的ndarray
decision_function(X)[source]#

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

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

参数:
Xshape 为 (n_samples, n_features) 的类数组

数据矩阵。

返回值:
decshape 为 (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一致性约定而保留。

**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字典

参数名称与其值的映射。

property n_support_#

每个类的支持向量数量。

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

样本的原始评分函数。

参数:
Xshape 为 (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估计器实例

估计器实例。