SGD 一类支持向量机#
- class sklearn.linear_model.SGDOneClassSVM(nu=0.5, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, random_state=None, learning_rate='optimal', eta0=0.0, power_t=0.5, warm_start=False, average=False)[source]#
使用随机梯度下降法求解线性一类支持向量机。
此实现旨在与核近似技术(例如
sklearn.kernel_approximation.Nystroem
)一起使用,以获得与sklearn.svm.OneClassSVM
类似的结果,后者默认使用高斯核。更多信息请参见 用户指南。
版本 1.0 中新增。
- 参数:
- nu浮点数,默认为 0.5
一类 SVM 的 nu 参数:训练误差分数的上限和支持向量的分数下限。应在区间 (0, 1] 内。默认为 0.5。
- fit_intercept布尔值,默认为 True
是否应估计截距。默认为 True。
- max_iter整数,默认为 1000
对训练数据进行迭代的最大次数(又称 epochs)。它只影响
fit
方法的行为,而不影响partial_fit
。默认为 1000。值必须在范围[1, inf)
内。- tol浮点数或 None,默认为 1e-3
停止准则。如果它不是 None,则当 (loss > previous_loss - tol) 时迭代将停止。默认为 1e-3。值必须在范围
[0.0, inf)
内。- shuffle布尔值,默认为 True
每次迭代后是否应打乱训练数据。默认为 True。
- verbose整数,默认为 0
详细程度。
- random_state整数、RandomState 实例或 None,默认为 None
在打乱数据时使用的伪随机数生成器的种子。如果为整数,则 random_state 是随机数生成器使用的种子;如果为 RandomState 实例,则 random_state 是随机数生成器;如果为 None,则随机数生成器是
np.random
使用的 RandomState 实例。- learning_rate{'constant','optimal','invscaling','adaptive'},默认为 'optimal'
与
fit
一起使用的学习率调度。(如果使用partial_fit
,则必须直接控制学习率)。‘constant’:
eta = eta0
‘optimal’:
eta = 1.0 / (alpha * (t + t0))
,其中 t0 由 Leon Bottou 提出的启发式方法选择。‘invscaling’:
eta = eta0 / pow(t, power_t)
‘adaptive’:eta = eta0,只要训练持续减少。每次连续 n_iter_no_change 个 epochs 无法将训练损失减少 tol 或无法将验证分数提高 tol(如果 early_stopping 为 True),当前学习率就会除以 5。
- eta0浮点数,默认为 0.0
“constant”、“invscaling”或“adaptive”调度的初始学习率。默认值为 0.0,因为默认调度“optimal”不使用 eta0。值必须在范围
[0.0, inf)
内。- power_t浮点数,默认为 0.5
反比例缩放学习率的指数。值必须在范围
(-inf, inf)
内。- warm_start布尔值,默认为 False
设置为 True 时,重复使用先前对 fit 的调用的解决方案作为初始化,否则,只需删除先前的解决方案。请参见 词汇表。
当 warm_start 为 True 时,重复调用 fit 或 partial_fit 可能导致与单次调用 fit 不同的解决方案,这是因为数据被打乱的方式。如果使用动态学习率,则学习率会根据已查看的样本数量进行调整。调用
fit
将重置此计数器,而partial_fit
将导致增加现有计数器。- average布尔值或整数,默认为 False
设置为 True 时,计算平均 SGD 权重并将结果存储在
coef_
属性中。如果设置为大于 1 的整数,则一旦看到的样本总数达到 average,就会开始平均。因此,average=10
将在看到 10 个样本后开始平均。
- 属性:
- coef_形状为 (1, n_features) 的 ndarray
分配给特征的权重。
- offset_形状为 (1,) 的 ndarray
用于根据原始分数定义决策函数的偏移量。我们有关系:decision_function = score_samples - offset。
- n_iter_整数
达到停止准则的实际迭代次数。
- t_整数
训练期间执行的权重更新次数。与
(n_iter_ * n_samples + 1)
相同。- n_features_in_整数
在 拟合期间看到的特征数量。
版本 0.24 中新增。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在 拟合期间看到的特征名称。仅当
X
具有全是字符串的特征名称时才定义。版本 1.0 中新增。
另请参见
sklearn.svm.OneClassSVM
无监督异常检测。
备注
此估计器的训练样本数量的线性复杂度,因此比
sklearn.svm.OneClassSVM
实现更适合具有大量训练样本(例如 > 10,000)的数据集。示例
>>> import numpy as np >>> from sklearn import linear_model >>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]]) >>> clf = linear_model.SGDOneClassSVM(random_state=42) >>> clf.fit(X) SGDOneClassSVM(random_state=42)
>>> print(clf.predict([[4, 4]])) [1]
- decision_function(X)[source]#
到分离超平面的带符号距离。
内点为正,外点为负。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回值:
- dec类数组, 形状 (n_samples,)
样本的决策函数值。
- densify()[source]#
将系数矩阵转换为密集数组格式。
将
coef_
成员(转换回)为numpy.ndarray。这是coef_
的默认格式,并且拟合需要此格式,因此仅在先前已稀疏化的模型上才需要调用此方法;否则,它将不执行任何操作。- 返回值:
- self
已拟合的估计器。
- fit(X, y=None, coef_init=None, offset_init=None, sample_weight=None)[source]#
使用随机梯度下降拟合线性一类支持向量机。
这解决了与一类支持向量机原始优化问题等效的优化问题,并返回权重向量 w 和偏移量 rho,使得决策函数由 <w, x> - rho给出。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
训练数据。
- y忽略
未使用,根据约定保留以保持 API 一致性。
- coef_init数组, 形状 (n_classes, n_features)
用于预热启动优化的初始系数。
- offset_init数组, 形状 (n_classes,)
用于预热启动优化的初始偏移量。
- sample_weight类数组, 形状 (n_samples,), 可选
应用于各个样本的权重。如果未提供,则假设为统一权重。如果指定了 class_weight,则这些权重将与 class_weight(通过构造函数传递)相乘。
- 返回值:
- self对象
返回已拟合的 self 实例。
- 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字典
参数名称与其值的映射。
- partial_fit(X, y=None, sample_weight=None)[source]#
使用随机梯度下降拟合线性一类支持向量机。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
训练数据子集。
- y忽略
未使用,根据约定保留以保持 API 一致性。
- sample_weight类数组, 形状 (n_samples,), 可选
应用于各个样本的权重。如果未提供,则假设为统一权重。
- 返回值:
- self对象
返回已拟合的 self 实例。
- predict(X)[source]#
返回样本的标签(内群为 1,异常值为 -1)。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回值:
- y数组, 形状 (n_samples,)
样本的标签。
- score_samples(X)[source]#
样本的原始评分函数。
- 参数:
- X{类数组,稀疏矩阵},形状 (n_samples, n_features)
测试数据。
- 返回值:
- score_samples类数组, 形状 (n_samples,)
样本的未移位评分函数值。
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', offset_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM [source]#
请求传递给
fit
方法的元数据。请注意,只有在
enable_metadata_routing=True
时,此方法才相关(参见sklearn.set_config
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求,而不对其他参数进行更改。版本 1.3 中新增。
注意
仅当此估计器用作元估计器的子估计器时(例如,在
Pipeline
内部使用)此方法才相关。否则,它无效。- 参数:
- coef_initstr、True、False 或 None,默认值 = sklearn.utils.metadata_routing.UNCHANGED
fit
中coef_init
参数的元数据路由。- offset_initstr、True、False 或 None,默认值 = sklearn.utils.metadata_routing.UNCHANGED
fit
中offset_init
参数的元数据路由。- sample_weightstr、True、False 或 None,默认值 = sklearn.utils.metadata_routing.UNCHANGED
fit
中sample_weight
参数的元数据路由。
- 返回值:
- self对象
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计器参数。
- 返回值:
- self估计器实例
估计器实例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDOneClassSVM [source]#
请求传递给
partial_fit
方法的元数据。请注意,只有在
enable_metadata_routing=True
时,此方法才相关(参见sklearn.set_config
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
:请求元数据,如果提供则传递给partial_fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给partial_fit
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求,而不对其他参数进行更改。版本 1.3 中新增。
注意
仅当此估计器用作元估计器的子估计器时(例如,在
Pipeline
内部使用)此方法才相关。否则,它无效。- 参数:
- sample_weightstr、True、False 或 None,默认值 = sklearn.utils.metadata_routing.UNCHANGED
partial_fit
中sample_weight
参数的元数据路由。
- 返回值:
- self对象
更新后的对象。
- sparsify()[source]#
将系数矩阵转换为稀疏格式。
将
coef_
成员转换为scipy.sparse矩阵。对于L1正则化模型,这比通常的numpy.ndarray表示方式在内存和存储方面效率更高。intercept_
成员不会被转换。- 返回值:
- self
已拟合的估计器。
备注
对于非稀疏模型,即当
coef_
中零元素不多时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。一个经验法则是,零元素的数量(可以使用(coef_ == 0).sum()
计算)必须超过50%,才能获得显著的益处。调用此方法后,除非调用densify,否则将无法再使用partial_fit方法(如果有)进行进一步拟合。