NuSVC#

class sklearn.svm.NuSVC(*, nu=0.5, kernel='rbf', degree=3, gamma='scale', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape='ovr', break_ties=False, random_state=None)[源代码]#

Nu-支持向量分类。

与 SVC 类似,但使用一个参数来控制支持向量的数量。

该实现基于 libsvm。

阅读更多内容,请参阅 用户指南

参数:
nufloat, default=0.5

间隔错误(margin errors)的一个上限(参阅 用户指南)和一个支持向量的下限。应在区间 (0, 1] 内。

kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} 或可调用对象,默认值为’rbf’

指定算法中使用的核函数类型。如果未给出,则使用 ‘rbf’。如果给出可调用对象,则用于预计算核矩阵。对于不同核函数类型的直观可视化,请参阅 使用不同的 SVM 核函数绘制分类边界

degreeint,默认值为3

多项式核函数(‘poly’)的次数。必须是非负的。其他所有核函数均忽略此参数。

gamma{‘scale’, ‘auto’} 或 float,默认值为’scale’

‘rbf’、‘poly’ 和 ‘sigmoid’ 的核系数。

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

  • 如果为 ‘auto’,则使用 1 / n_features

  • 如果为 float,则必须是非负的。

版本 0.22 中已更改:gamma 的默认值从 ‘auto’ 更改为 ‘scale’。

coef0float,默认值为0.0

核函数中的常数项。它仅在 ‘poly’ 和 ‘sigmoid’ 中很重要。

shrinkingbool,默认值为True

是否使用收缩启发式方法。请参阅 用户指南

probabilitybool,默认值为False

是否启用概率估计。这必须在调用 fit 之前启用,它会减慢该方法的执行速度,因为该方法内部使用了 5 折交叉验证,并且 predict_proba 可能与 predict 不一致。阅读更多内容,请参阅 用户指南

tolfloat, default=1e-3

停止准则的容差。

cache_sizefloat,默认值为200

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

class_weight{dict, ‘balanced’},默认值为None

为 SVC 设置第 i 个类别的参数 C 为 class_weight[i]*C。如果未给出,则所有类别的权重假定为 1。“balanced”模式使用 y 的值来自动调整权重,使其与类别频率成反比,计算方式为 n_samples / (n_classes * np.bincount(y))

verbosebool, default=False

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

max_iterint,默认值为-1

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

decision_function_shape{‘ovo’, ‘ovr’},默认值为’ovr’

是否返回一个一对多(‘ovr’)的决策函数,其形状为 (n_samples, n_classes),与其他分类器相同,或者返回 libsvm 的原始一对一(‘ovo’)决策函数,其形状为 (n_samples, n_classes * (n_classes - 1) / 2)。但是,一对一(‘ovo’)始终用作多类别策略。对于二分类,此参数将被忽略。

版本 0.19 中已更改:decision_function_shape 默认为 ‘ovr’。

版本 0.17 中已添加:推荐使用 decision_function_shape=’ovr’

版本 0.17 中已更改:弃用了 decision_function_shape=’ovo’ 和 None

break_tiesbool,默认值为False

如果为 True,且 decision_function_shape='ovr',并且类别数 > 2,则 predict 将根据 decision_function 的置信度值来打破平局;否则,返回平局类别中的第一个类别。请注意,与简单的 predict 相比,打破平局的计算成本相对较高。有关其与 decision_function_shape='ovr' 一起使用的示例,请参阅 SVM 平局打破示例

版本 0.22 新增。

random_stateint, RandomState instance or None, default=None

控制概率估计数据的伪随机数生成。当 probability 为 False 时忽略。传递一个整数以获得跨多个函数调用的可复现输出。请参阅 词汇表

属性:
class_weight_ndarray,形状为 (n_classes,)

每个类别的参数 C 的乘数。根据 class_weight 参数计算。

classes_ndarray of shape (n_classes,)

唯一的类别标签。

coef_ndarray,形状为 (n_classes * (n_classes -1) / 2, n_features)

kernel="linear" 时分配给特征的权重。

dual_coef_ndarray,形状为 (n_classes - 1, n_SV)

决策函数中支持向量的双重系数(参阅 数学公式),乘以它们的标签。对于多类别,它是所有一对一分类器的系数。多类别情况下系数的布局有些复杂。有关详细信息,请参阅用户指南的 多类别部分

fit_status_int

如果拟合正确,则为 0,如果算法未收敛,则为 1。

intercept_ndarray,形状为 (n_classes * (n_classes - 1) / 2,)

决策函数中的常数。

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

n_iter_ndarray,形状为 (n_classes * (n_classes - 1) // 2,)

优化例程用于拟合模型的迭代次数。此属性的形状取决于优化的模型数量,而模型数量又取决于类别的数量。

版本 1.1 中新增。

support_ndarray,形状为 (n_SV,)

支持向量的索引。

support_vectors_ndarray,形状为 (n_SV, n_features)

支持向量。

n_support_ndarray,形状为 (n_classes,),dtype=int32

每个类别的支持向量数量。

fit_status_int

如果拟合正确,则为 0,如果算法未收敛,则为 1。

probA_ndarray,形状为 (n_classes * (n_classes - 1) / 2,)

probability=True 时,在 Platt 缩放中学习到的参数。

probB_ndarray,形状为 (n_classes * (n_classes - 1) / 2,)

probability=True 时,在 Platt 缩放中学习到的参数。

shape_fit_tuple of int,形状为 (n_dimensions_of_X,)

训练向量 X 的数组维度。

另请参阅

SVC

使用 libsvm 进行分类的支持向量机。

LinearSVC

使用 liblinear 进行分类的可扩展线性支持向量机。

References

示例

>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.svm import NuSVC
>>> clf = make_pipeline(StandardScaler(), NuSVC())
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()), ('nusvc', NuSVC())])
>>> print(clf.predict([[-0.8, -1]]))
[1]
decision_function(X)[源代码]#

计算 X 中样本的决策函数。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

返回:
Xndarray,形状为 (n_samples, n_classes * (n_classes-1) / 2)

返回模型中每个类别的样本决策函数。如果 decision_function_shape=’ovr’,则形状为 (n_samples, n_classes)。

注意事项

如果 decision_function_shape=’ovo’,函数值与样本 X 到分离超平面的距离成正比。如果需要精确距离,请将函数值除以权重向量(coef_)的范数。有关详细信息,请参阅 此问题。如果 decision_function_shape=’ovr’,决策函数是 ovo 决策函数的单调变换。

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

根据给定的训练数据拟合 SVM 模型。

参数:
X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)

训练向量,其中 n_samples 是样本数量,n_features 是特征数量。对于 kernel=”precomputed”,X 的预期形状为 (n_samples, n_samples)。

yarray-like of shape (n_samples,)

目标值(分类中的类别标签,回归中的实数)。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

每个样本的权重。为每个样本重新缩放 C。更高的权重会迫使分类器更加重视这些点。

返回:
selfobject

拟合的估计器。

注意事项

如果 X 和 y 不是 C 顺序且连续的 np.float64 数组,并且 X 不是 scipy.sparse.csr_matrix,则 X 和/或 y 可能会被复制。

如果 X 是密集数组,那么其他方法将不支持稀疏矩阵作为输入。

get_metadata_routing()[源代码]#

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

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

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

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

对 X 中的样本进行分类。

对于单类别模型,返回 +1 或 -1。

参数:
X{array-like, sparse matrix},形状为 (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 中样本的类别标签。

predict_log_proba(X)[源代码]#

计算 X 中样本的可能结果的对数概率。

模型需要在训练时计算概率信息:设置属性 probability 为 True 进行拟合。

参数:
Xarray-like,形状为 (n_samples, n_features) 或 (n_samples_test, n_samples_train)

对于 kernel=”precomputed”,X 的预期形状为 (n_samples_test, n_samples_train)。

返回:
Tndarray,形状为 (n_samples, n_classes)

返回模型中每个类别的样本的对数概率。列对应于按排序顺序排列的类别,它们出现在属性 classes_ 中。

注意事项

概率模型是通过交叉验证创建的,因此结果可能与 predict 获得的结果略有不同。此外,在非常小的数据集上它将产生无意义的结果。

predict_proba(X)[源代码]#

Compute probabilities of possible outcomes for samples in X.

模型需要在训练时计算概率信息:设置属性 probability 为 True 进行拟合。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

对于 kernel=”precomputed”,X 的预期形状为 (n_samples_test, n_samples_train)。

返回:
Tndarray,形状为 (n_samples, n_classes)

返回模型中每个类别的样本概率。列对应于按排序顺序排列的类别,它们出现在属性 classes_ 中。

注意事项

概率模型是通过交叉验证创建的,因此结果可能与 predict 获得的结果略有不同。此外,在非常小的数据集上它将产生无意义的结果。

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

返回在提供的数据和标签上的 准确率 (accuracy)

在多标签分类中,这是子集准确率 (subset accuracy),这是一个严格的指标,因为它要求每个样本的每个标签集都被正确预测。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

测试样本。

yshape 为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like

X 的真实标签。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

返回:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

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

配置是否应请求元数据以传递给 fit 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 fit。如果未提供元数据,则忽略该请求。

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

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

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

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

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

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

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

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

配置是否应请求元数据以传递给 score 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 score。如果未提供元数据,则忽略该请求。

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

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

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

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

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

score 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。