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
在
fit
中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。