Python scikit-learn 模块svc方法的参数解释

时间:2022-02-23 23:54:12

关于sklearn.svm.SVC的参数的学习

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)

这是C-SVC,也叫软间隔SVM。
它的实现是基于libsvm。它的训练时间复杂度比样本的二次方还多,所以很难扩展到超过10000个样本的情况。
对于多分类问题是根据一对一模式解决的。
如果想要了解具体的关于核函数的数学公式,以及内部参数是怎样相互影响的,可以参考这个文档。核函数文档

解释函数中出现的参数:

  • C
    float类型,可选参数,默认为1.0
    惩罚因子
    (对间隔误差的容忍度,在某种程度上控制着分类器的复杂性,也被称为复杂性参数,也是一种正则化)
  • kernel
    string类型,可选,默认为rbf,表示径向基函数
    表示某种核函数类型。必须是 ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ ‘callable’的其中一种,有线性核函数,多项式,径向基等。
    Python scikit-learn 模块svc方法的参数解释
  • degree
    int类型,可选,默认是3
    表示多项式核函数的d, 和其他核函数无关。

  • gamma
    float类型,可选,默认是自动的。
    这是‘poly’, ‘rbf’, ‘sigmoid’的核参数。如果是‘auto’,则值为1/特征数。

  • coef0
    float类型,可选,默认为0.0
    在核函数中是独立的,是‘poly’, ‘sigmoid’函数中的 r 。

  • probability
    布尔类型,可选,默认为False
    决定是否启用概率估计。需要在训练fit()模型时加上这个参数,之后才能用相关的方法:redict_proba和predict_log_proba。

  • shrinking
    布尔类型,可选,默认是True。
    决定是否使用启发式收缩。我也是不知道指的是什么????

  • tol
    float类型,可选,默认是 1 e^-3
    ”Tolerance for stopping criterion.”不知道该怎么翻译了??

  • cache_size
    float类型,可选的
    核函数缓存的大小,单位是MB。
    不知道指的是什么??

  • class_weight
    {dict, ‘balanced’}类型,可选参数
    设置每个类i的权重c,得到class_weight[i]*C。如果没有给这个值,那么所有类的权重为1。“balanced”模式使用自动适应的权重,是和输入数据中某类数据出现的频率的成反比的值。

  • verbose
    布尔类型,默认是False
    启用详细的输出。请注意,此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程环境中正常工作。

  • max_iter
    int类型,可选,默认为-1
    求解器中的迭代次数限制,如果是-1表示没有限制。

  • decision_function_shape
    ‘ovo’, ‘ovr’ or None, 默认是None类型。
    决策函数的类型。多分类情况使用可以选择“ovo”(one vs one 的缩写),“ovr”(one vs rest的缩写),否则默认是None。
    我也不清楚这是什么参数??

  • random_state
    int类型,seed, RandomState instance, or None (default)
    伪随机数发生器的种子在混洗数据时用于概率估计。

    类的属性

  • support_ ,support_vectors_ ,n_support_ ,

都是和支持向量有关的属性值。

  • dual_coef_
    决策函数中支持向量的系数。在多类问题中,该系数也是针对所有1对1分类器的。

  • coef_
    特征的权重,原始问题中系数,只在线性核函数中可用。

  • intercept_
    决策函数中常数。

    实例

>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.svm import SVC
>>> clf = SVC()
>>> clf.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
>>> print(clf.predict([[-0.8, -1]]))
[1]