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

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

翻译原链接:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#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’的其中一种,有线性核函数,多项式,径向基等。
    核函数种类
  • degree
    int类型,可选,默认是3
    表示多项式核函数的d, 和其他核函数无关。

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

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

  • probability
    布尔类型,可选,默认为False
    决定是否启用概率估计。需要在训练fit()模型时加上这个参数,之后才能用相关的方法:predict_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]

看源码备注:
1. 这个库实现SVC的方法是基于libsvm实现的;
2. 其中每个方法,fit,predict等都分为两种情况,输入时稀疏矩阵或是稠密矩阵,因为不同输入矩阵训练的到的模型只能用于同类型的输入矩阵,预测才是准确的。
3. 可能因为原理不是特别清楚,所以源码看的很糊涂。有时间再看一遍。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值