一类支持向量机#
- 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
fit
中sample_weight
参数的元数据路由。
- 返回值:
- self对象
更新后的对象。