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)[源代码]#

无监督离群点检测。

估计多维分布的支持。

该实现基于libsvm。

阅读更多的 User Guide .

参数:
kernel{'linear','poly','rbf','sigmoid','precomputed'}或可调用, 默认值='rbf'

指定算法中使用的内核类型。如果没有给出,则将使用“rBF”。如果给出了可调用内容,则使用它来预计算核矩阵。

degreeint,默认=3

多项核函数(“poly”)的次数。必须是非负的。被所有其他内核忽视。

gamma请输入'scale','auto'}或float,default='scale'

“rbf”、“poly”和“sigmoid”的核系数。

  • 如果 gamma='scale' (默认)被传递,然后它使用1 /(n_features * X.var())作为gamma的值,

  • 如果是“自动”,则使用1 / n_features

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

在 0.22 版本发生变更: 的默认值 gamma 从“自动”更改为“规模”。

coef0float,默认=0.0

核函数中的独立项。它仅在“多聚体”和“西格玛”中显着。

tol浮点数,默认值= 1 e-3

停止标准的容忍度。

nu浮点数,默认值=0.5

训练错误比例的上限和支持量比例的下限。应在区间(0,1]内。默认情况下将采用0.5。

shrinking布尔,默认=True

是否使用收缩启发式。看到 User Guide .

cache_size浮动,默认=200

指定内核缓存的大小(以MB为单位)。

verbose布尔,默认=假

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

max_iterint,默认=-1

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

属性:
coef_nd数组形状(1,n_features)

在以下情况下分配给要素的权重 kernel="linear" .

dual_coef_形状的nd数组(1,n_SV)

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

fit_status_int

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

intercept_形状的nd数组(1,)

决策函数中的常数。

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

n_iter_int

优化例程为适应模型而运行的迭代次数。

Added in version 1.1.

n_support_形状的nd数组(n_classes,),dype = int 32

每个类别的支持载体数量。

offset_浮子

用于根据原始分数定义决策函数的偏差。我们有这样的关系:decision_函数= score_samples - offset_ .抵消量与 intercept_ 并且提供是为了与其他异常值检测算法保持一致。

Added in version 0.20.

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

训练载体的数组维度 X .

support_形状的nd数组(n_SV,)

支持载体指数。

support_vectors_ndrow形状数组(n_SV,n_features)

支持载体。

参见

sklearn.linear_model.SGDOneClassSVM

使用随机梯度下降来求解线性一类支持者。

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

有关更扩展的示例,请参阅 物种分布建模

decision_function(X)[源代码]#

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

带符号距离对于内点为正值,对于离群点为负值。

参数:
X形状类似阵列(n_samples,n_features)

数据矩阵。

返回:
dec形状的nd数组(n_samples,)

Returns the decision function of the samples.

fit(X, y=None, sample_weight=None)[源代码]#

检测样本集X的软边界。

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

一组样本,其中 n_samples 是样本数量和 n_features 是功能的数量。

y忽视

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

sample_weight形状类似数组(n_samples,),默认=无

每个样品的重量。根据样本重新调整C。更高的权重迫使分类器更加强调这些点。

返回:
self对象

拟合估计量。

注意到

如果X不是C排序连续数组,则会复制它。

fit_predict(X, y=None, **kwargs)[源代码]#

在X上执行fit并返回X的标签。

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

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

输入样本。

y忽视

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

**kwargsdict

将传递给的论点 fit .

Added in version 1.4.

返回:
y形状的nd数组(n_samples,)

1代表内部值,-1代表异常值。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

对X中的样本进行分类。

对于一级模型,返回+1或-1。

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

对于core =“预先计算”,X的预期形状是(n_samples_Test,n_samples_train)。

返回:
y_pred形状的nd数组(n_samples,)

X中样本的类别标签。

score_samples(X)[源代码]#

样本的原始评分功能。

参数:
X形状类似阵列(n_samples,n_features)

数据矩阵。

返回:
score_samples形状的nd数组(n_samples,)

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

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

请求元数据传递给 fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

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

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

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

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 fit .

返回:
self对象

更新的对象。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。