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方法(如果有)进行进一步拟合。 
 
 
     
